读书笔记

机器学习实战读书笔记 – 03 – 决策树

斩草除根的难点

多少个经文的例证是猜人游戏。参加游戏的一方默想1个人名,另一方向她提问题,最后猜出这厮名。
决策树属于监督学习,能够处理地点的分类难点。那几个标题标性情是:

  • 训练多少周详,计算数据被教练多少覆盖了。
  • 教练多少是标称型数据,数值型数据必须离散化。

核定树算法是找到1个优化的决定路径(决策树),使得每一遍分类尽恐怕过滤越多的数目,可能说问的难题尽量少。
表决树算法能够用来优化一些知识类别,援救用户火速找到答案。

优势

  • 应用决策树能够更好地明白数据的内在含义。

基本概念

  • 品质(Feature): 练习多少中每列都以一个属性。
  • 标签(Label):演练多少中的分类结果。

决策树的相似流程

  1. 募集数据:能够动用其它方式。
  2. 安不忘忧数据:树构造算法只适用于标称型数据,因而数值型数据必须离散化。
  3. 剖析数据:能够利用此外措施,构造树达成之后,大家相应检查图形是不是顺应预期。
  4. 磨练算法:构造树的数据结构。
  5. 测试算法:使用经验树计算错误率。
  6. 运用算法:此步骤能够适用于别的监督学习算法,而利用决策树能够更好地知道数据的内在含义。

怎么组织决策树

此处,要化解的标题是利用什么数据属性作为分类标准,最佳次序是什么样?

  • 主意一:选择二分法,也许依据练习多少中的属性依次构造。
  • 方法二:使用香农熵总计公式。那是书中行使的主意。
  • 艺术三:使用基尼不纯度2 (Gini impurity)。
  • 风行的算法: C4.5和CA中华VT

香农熵(Shannon Entropy)简介

  • 熵的概念
    在新闻论中,熵是接收的每条新闻中包罗的新闻的平均量,又被叫作音讯熵、信源熵、平均自新闻量。
    熵定义为音信的期望值。
    熵实际是对随机变量的比特量和一一产生概率相乘再总和的数学期望。
    熵的单位一般为比特, bit 只怕sh(annon)
    (基于2),但也用nat(基于自然对数)、哈特(基于10)计量,取决于定义用到对数的底。
    熵值是1个>=0的值。
    假诺为0,则注明结果能够精确预测。从下面的公式能够看出,其可能率为1.
    于是,熵值越大,越不便于被准确无误预测。

  • 期望值
    在概率论和总计学中,一个离散性随机变量的期望值(或数学期望、或均值,亦简称期望,物农学中称为期待值)是考查中年老年是或许结果的可能率乘以其结果的总额。
    比如掷骰子, 其点数的期望值是3.5: E(x) = 1 * 1 / 6 + 1 * 2 / 6 +
    1 * 3 / 6 + 1 * 4 / 6 + 1 * 5 / 6 + 1 * 6 / 6 = 3.5

着力公式

  • 数据集的消息熵的总括公式

\[ H(X) = \sum\limits_{i=1}^n
P(x_i)I(x_i) = – \sum\limits_{i=1}^n P(x_i)\log_2 P(x_i) \\
where \\ \qquad H(X) : 数据集合X的音讯熵值。 \\ \qquad X :
数据集合X。 \\ \qquad x_i : 数据集合X的标签的一个枚举值。 \\
\qquad I(x_i) :x_i的信息量 (information self). I(x_i) =
-ln(P(x_i)) \\ \qquad P(x_i) :
发生x_i的票房价值。x的机率质量函数(probability mass function)。 P(x_i) =
count(x_i)/len(X). \]

  • 数量集合X在属性F上的信息熵的总结公式

\[ H(F, X) = \sum\limits_{i=1}^n
P(f_i)H(X_fi) \\ where \\ \qquad H(F, X) :
数据集合X在属性F上的信息熵值。 \\ \qquad F : Feature F。 \\ \qquad
X : 数据集合X。 \\ \qquad f_i : Feature F的三个枚举值。 \\ \qquad
H(X_fi) :集合X_fi的音信熵。 \\ \qquad X_fi
:数据集合X中属性F为f_i的子集。 \\ \qquad P(f_i) :
发生f_i的概率。f_i的机率品质函数(probability mass function)。
P(f_i) = count(f_i)/len(X). \]

结构决策树

  • 输入
    • 数据集
  • 输出

    • 决策树
      修建三个决策树。决策树的json表示如下:

      {
      'no surfacing': 
      {
      0: 'no', 
      1: 
      {
          'flippers': 
          {
              0: 'no',
              1: 'yes'
          }
      }
      }
      }
      

      ‘no surfacing’和’flippers’是数额的属性名。
      0, 1是标称数据。
      ‘yes’, ‘no’是议定结果。

  • 逻辑进度

    • createTree

\[ \text{(jsonTree) createTree(dateset)} =
\\ \{ \\ \qquad \text{if (the value of the dateset labels are
same)} \\ \qquad \{ \\ \qquad \qquad return\
dataset.lables[0] \\ \qquad \} \\ \qquad \\ \qquad \text{if
(dataset.features.length = 1)} \\ \qquad \{ \\ \qquad \qquad
return\ mostAppeard(dataset.lables) \\ \qquad \} \\ \qquad \\
\qquad feature = findBestFeature(dateset) \\ \qquad jsonTree =
\{feature.label:\{\}\} \\ \qquad \textstyle
{foreach}_\text{value}^\text{feature.values} \\ \qquad \{ \\
\qquad \qquad jsonTree[feature.label][value] =
createTree(dateset.subset(feature, value)) \\ \qquad \} \\ \}
\]
* findBestFeature

\[ \text{(feature)
findBestFeature(dateset)} = \\ \{ \\ \qquad baseFeatureEntroy =
infinite \\ \qquad
\text{foreach}_\text{current_feature}^\text{dataset.features} \\
\qquad \{ \\ \qquad \qquad featureEntroy =
calculateFeatureEntroy(dateset, feature) \\ \qquad \qquad \text{if
(featureEntroy < baseFeatureEntroy)} \\ \qquad \qquad \{ \\
\qquad \qquad \qquad baseFeatureEntroy = featureEntroy \\ \qquad
\qquad \qquad feature = current_feature \\ \qquad \qquad \} \\
\qquad \} \\ \} \]

运用Matplotlib注脚绘制树形图

见原书。

测试和存款和储蓄分类器

见原书。

民用总括

决策树对数据品质须求相比较高。那猜人名的游艺的话,须求收集大批量的姓名和人名对应的数额。

参考:

You can leave a response, or trackback from your own site.

Leave a Reply

网站地图xml地图