熵 Entropy
物理学上,<b>熵 Entropy</b> 是“混乱”程度的量度
<b><font color="#e74f4c">系统越有序,熵值越低;系统越混乱或者分散,熵值越高</font></b>
信息熵
1948年香农提出了 信息熵(Entropy)的概念, <font color="#000000"><b>是度量样本集合纯度最常用的一种指标</b></font>。
<b><font color="#e74f4c">Ent(D) 的值越小,则 D 的纯度越高</font></b>
<font color="#314aa4"><b>信息熵、交叉熵、相对熵</b></font>
信息增益(ID3)
以某特征划分数据集前后的熵的差值。熵可以表示样本集合的不确定性,熵越大,样本的不确定性就越大。因此可以<b>使用划分前后集合熵的差值来衡量使用当前特征对于样本集合D划分效果的好坏, <font color="#e74f4c">信息增益越大,则意味着使用属性 $a$ 来进行划分所获得的"纯度提升"越大</font></b>
<b><font color="#e74f4c"><span class="equation-text" contenteditable="false" data-index="0" data-equation="信息增益 = entropy (前) - entropy (后)"><span></span><span></span></span></font></b>
<font color="#e74f4c"><b><span class="equation-text" contenteditable="false" data-index="0" data-equation="信息增益 = 整体信息熵 - 按某个属性划分后的信息熵"><span></span><span></span></span></b></font>
<b>计算过程</b>
1. 计算整体信息熵
2. 计算按照某个属性划分后的信息熵
每一个分支权重 这个分支信息熵的和
3. 整体信息熵 - 按照某个属性划分后的信息熵
4. 选择信息增益大的属性进行划分
信息增益率(C4.5)
<b>信息增益准则对可取值数目较多的属性(类型多)有所偏好(</b><font color="#e74f4c">信息增益倾向于选择类别多属性进行划分</font><b>)</b>,为减少这种偏好可能带来的不利影响,著名的 <b>C4.5 决策树算法 [Quinlan, 1993J 不直接使用信息增益,而是使用"增益率" (gain ratio) 来选择最优划分属性</b>
<span style="font-size: inherit;">增益率:增益率是用前面属性a的<b>信息增益Gain(D, a) </b>和属性a对应的"<b>固有值"(intrinsic value)</b></span><br><font color="#e74f4c"><span class="equation-text" contenteditable="false" data-index="0" data-equation="信息增益率 = 属性信息增益 / 属性分裂信息度量"><span></span><span></span></span></font><br>
用分裂信息度量来考虑某种属性进行分裂时分支的数量信息和尺寸信息,我们把这些信息称为属性的内在信息(instrisic information)。<b>信息增益率用信息增益/内在信息,会导致属性的重要性随着内在信息的增大而减小(也就是说,如果这个属性本身不确定性就很大,那我就越不倾向于选取它)</b>,这样算是对单纯用信息增益有所补偿。
<span class="equation-text" contenteditable="false" data-index="0" data-equation="-\frac {1}{x} \log_2(\frac {1} {x}) 的函数图像"><span></span><span></span></span>
信息增益率算法流程:
1. 计算分类[整体]信息熵
2. 计算每一个属性划分后信息熵
3. 计算每一个属性信息增益
4. 计算每一个属性分裂信息度量(<b>固有值</b>)
5. 计算信息增益率
6. 选择信息增益率最大属性进行划分
7. 如果节点不纯, 就重复1-6过程, 直到所有节点都纯了为止.
C4.5 画出的决策树
<b>C4.5算法的优点</b>
1. 采用信息增益率来划分属性, 避免使用信息增益倾向于选择多个值属性.
2. 采用后剪枝的技术, 避免树高度无节制的增长,避免过拟合,同时减少了欠拟合的风险
3. 对缺失值进行了处理.
处理缺少属性值的一种策略是赋给它结点n所对应的训练实例中该属性的最常见值<br><br>另外一种更复杂的策略是为A的每个可能值赋予一个概率。<br>例如,给定一个布尔属性A,如果结点n包含6个已知A=1和4个A=0的实例,那么A(x)=1的概率是0.6,而A(x)=0的概率是0.4。于是,实例x的60%被分配到A=1的分支,40%被分配到另一个分支。<b>C4.5就是使用这种方法处理缺少的属性值</b>。
Gini系数 (CART)
<b>基尼值Gini(D)</b>:从数据集D中随机抽取两个样本,其类别标记不一致的概率。故,Gini(D)值越小,数据集D的纯度越高。<br><br><font color="#e74f4c">计算公式: 1 - 每一个类别概率平方的和</font><br>
<b>基尼指数Gini_index(D)</b>:一般,选择使划分后基尼系数最小的属性作为最优化分属性<br><font color="#e74f4c"><br>按照某种分割方式, 分割后的基尼值</font><br>
<b>CART决策树算法流程</b>
1. 计算各个属性, 每一种分割方式的基尼系数
2. 选择基尼系数最小的分割方式进行划分(选取基尼系数最小的值进行分类)
3. 如果划分后节点不纯, 继续使用前面两个步骤进行划分
4. 直到所有节点都足够纯了