决策树与随机森林学习笔记(一):基础概念

决策树

决策树表示通过样本特征建立判断条件,对样本进行分类或者回归的一个算法。

基本思想

构造树的基本思想是熵随着树深度增加而迅速降低,因此以熵下降速度最快的条件作为根节点,从而达成高度最矮的决策树。

熵的基本概念

从两个独立事件x和y出发,有:

P ( x ) ∗ P ( y ) = P ( x ∗ y ) P(x)*P(y) = P(x*y) P(x)P(y)=P(xy)

l o g ( x y ) = l o g ( x ) + l o g ( y ) log(xy) = log(x) + log(y) log(xy)=log(x)+log(y)

对于N个样本,每个样本都有一个分类结果,因此可以通过整体的分类结果来分析系统的混乱程度。

以H(x), H(y)作为事件发生的不确定性,不确定性越高,代表系统所包含的信息量就越多,数据纯度越低,熵就越大,以此定义熵:

e n t r o p y = − ∑ ( P i ∗ l o g ( P i ) ) entropy = - \sum( P_i*log(P_i) ) entropy=(Pilog(Pi))

通过Gini系数也可以起到一个衡量熵的作用:
G i n i ( p ) = ∑ ( P i ∗ ( 1 − P i ) ) = 1 − ∑ ( P i 2 ) Gini(p) = \sum( P_i * ( 1- P_i ) ) = 1 - \sum(P_i^2) Gini(p)=(Pi(1Pi))=1(Pi2)

基本算法步骤(ID3)

决策树主要有三种算法:ID3,C4.5,还有C5.0,其区别主要是体现在利用熵的方法不同,以下只会提到 ID3 和 C4.5。

  1. 计算数据集熵值:
    假设类别为[出去玩,不出去玩],数据集中两者概率分别为 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/15log(4/15)11/15log(11/15)=0.9403
  2. 根据数据,列出所有可能的节点,即每个变量条件(如气温高或低),画出根据每个节点单独进行分类的结果。
    假如变量条件为气温高/低,样本最终被分成两类[ Y,N ],那么以气温作为单一条件对样本进行分类,可以得到:
    气温高[Y, N, N, N, N, N, N, N]
    气温低[Y, Y, N, N, N, Y, N]
  3. 计算每个节点的不同值,计算其熵值:
    继续上面的例子,气温高时,熵为:
    − 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/150.5436+7/150.9852=0.7497

    相较于总熵,下降了0.1906,称该值为信息增益(Gain)(ID3)
  4. 递归计算根节点下的子节点不同的信息增益,直到损失函数达到最低,或满足其他预设条件。
    (另一个方法: 选取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(VT)P(T)>P(VT)=P(VT)/P(T) 重复以上步骤直到损失函数达到最低,或满足其他预设条件。)
存在的问题:

以上方法主要采用的判断依据为信息增益,但是该指数存在一个问题:
当一个属性中的类别数很大,且随机分布时,其信息熵会很小。就比如说对每个出去玩的判断,气温属性都为一个完全不重复的值的话,最终的信息熵为1。

出现这种情况的原因在于:1. 我们计算信息增益时没有考虑到该属性本身与样本结果的相关性。2. 没有考虑到属性本身的信息熵值。

应对这种情况,我们引入信息增益率(C4.5):属性带来的信息增益与属性本身的信息熵之比。
对属性本身,求其信息熵,作为分母去除信息增益值

G a i n R a t i o = G a i n / ( ∑ ( − P i ∗ l o g ( P i ) ) ) GainRatio = Gain / ( \sum( -P_i * log(P_i) ) ) GainRatio=Gain/(Pilog(Pi)))

目标函数

损失函数: 对每个叶子节点leaf,计算其信息熵H,乘以叶子节点中的数据量N,求和:

C ( T ) = ∑ l e a f ( N t ∗ H ( t ) ) C(T) = \sum leaf ( N_t * H(t) ) C(T)=leaf(NtH(t))

决策树拟合的标准即为损失函数降到最低。

连续值属性的分界方法

主要原则为贪婪算法(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。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值