决策树
决策树表示通过样本特征建立判断条件,对样本进行分类或者回归的一个算法。
基本思想
构造树的基本思想是熵随着树深度增加而迅速降低,因此以熵下降速度最快的条件作为根节点,从而达成高度最矮的决策树。
熵的基本概念
从两个独立事件x和y出发,有:
对于N个样本,每个样本都有一个分类结果,因此可以通过整体的分类结果来分析系统的混乱程度。
以H(x), H(y)作为事件发生的不确定性,不确定性越高,代表系统所包含的信息量就越多,数据纯度越低,熵就越大,以此定义熵:
通过Gini系数也可以起到一个衡量熵的作用:
基本算法步骤(ID3)
决策树主要有三种算法:ID3,C4.5,还有C5.0,其区别主要是体现在利用熵的方法不同,以下只会提到 ID3 和 C4.5。
- 计算数据集熵值:
假设类别为[出去玩,不出去玩],数据集中两者概率分别为 4/15, 11/15,则熵为:
− 4 / 15 ∗ l o g ( 4 / 15 ) − 11 / 15 ∗ l o g ( 11 / 15 ) = 0.9403 - 4/15*log(4/15) - 11/15*log(11/15) = 0.9403 −4/15∗log(4/15)−11/15∗log(11/15)=0.9403 - 根据数据,列出所有可能的节点,即每个变量条件(如气温高或低),画出根据每个节点单独进行分类的结果。
假如变量条件为气温高/低,样本最终被分成两类[ Y,N ],那么以气温作为单一条件对样本进行分类,可以得到:
气温高[Y, N, N, N, N, N, N, N]
气温低[Y, Y, N, N, N, Y, N] - 计算每个节点的不同值,计算其熵值:
继续上面的例子,气温高时,熵为:
− 1 / 8 l o g ( 1 / 8 ) − 7 / 8 l o g ( 7 / 8 ) = 0.5436 - 1/8log(1/8) - 7/8log(7/8) = 0.5436 −1/8log(1/8)−7/8log(7/8)=0.5436
气温低时,熵为:
− 4 / 7 l o g ( 4 / 7 ) − 3 / 7 l o g ( 3 / 7 ) = 0.9852 - 4/7log(4/7) - 3/7log(3/7) = 0.9852 −4/7log(4/7)−3/7log(3/7)=0.9852
由此,当知已知变量气温时,信息熵为:
8 / 15 ∗ 0.5436 + 7 / 15 ∗ 0.9852 = 0.7497 8/15 * 0.5436 + 7/15 * 0.9852 = 0.7497 8/15∗0.5436+7/15∗0.9852=0.7497
相较于总熵,下降了0.1906,称该值为信息增益(Gain)(ID3) - 递归计算根节点下的子节点不同的信息增益,直到损失函数达到最低,或满足其他预设条件。
(另一个方法: 选取gain最大的值作为根节点。已知该点熵的熵值为0.7497,以气温T已知为前提,其他变量V再次计算他们分别的概率:
(贝叶斯公式) P ( V T ) = P ( V ∣ T ) ∗ P ( T ) − − > P ( V ∣ T ) = P ( V T ) / P ( T ) P(VT) = P(V|T)*P(T) --> P(V|T) = P(VT)/P(T) P(VT)=P(V∣T)∗P(T)−−>P(V∣T)=P(VT)/P(T) 重复以上步骤直到损失函数达到最低,或满足其他预设条件。)
存在的问题:
以上方法主要采用的判断依据为信息增益,但是该指数存在一个问题:
当一个属性中的类别数很大,且随机分布时,其信息熵会很小。就比如说对每个出去玩的判断,气温属性都为一个完全不重复的值的话,最终的信息熵为1。
出现这种情况的原因在于:1. 我们计算信息增益时没有考虑到该属性本身与样本结果的相关性。2. 没有考虑到属性本身的信息熵值。
应对这种情况,我们引入信息增益率(C4.5):属性带来的信息增益与属性本身的信息熵之比。
对属性本身,求其信息熵,作为分母去除信息增益值
目标函数
损失函数: 对每个叶子节点leaf,计算其信息熵H,乘以叶子节点中的数据量N,求和:
决策树拟合的标准即为损失函数降到最低。
连续值属性的分界方法
主要原则为贪婪算法(greedy algorithm),即不管是分割成几份,都要保证将数据分割的尽量平均。
如: 分割特征 value[0.1, 0.3, 0.4, 0.5, 0.6, 0.9] 为两份的话,其判断条件将会设定为 value > 0.4 ?
剪枝策略
预剪枝:在构建决策树时,提前停止。
后剪枝:决策树构建好了以后,开始裁剪(借助损失函数达到平衡),后剪枝主要依据以下损失函数。
损失函数:
C
1
(
T
)
=
C
(
T
)
+
α
∗
T
l
e
a
f
C1(T) = C(T) + α*Tleaf
C1(T)=C(T)+α∗Tleaf ,即叶子节点个数越多,损失越大。
随机森林
两个基本概念:
Bootstraping: 有放回采样。
Bagging: 有放回采样N个样本,一同建立一个分类器
随机森林描述:
随机森林相当于对数据使用有放回采样构造多颗决策树,最后将所有预测结果合到一起求一个平均(众数),得到样本标签的算法。
优点:
这个做法可以让一些异常点或者游离点被去除,和多张照片合成去噪点的原理相同,相当于把模型中和数据中的噪声去除了。
在随机森林中,随机取的不只是样本,还有属性(特征),即一个成熟的随机森林模型不仅应对样本的outliers,还能够对应特征的outliers。