机器学习啃书之决策树

 本小菜鸡在努力找工作中,基础不扎实努力啃书恶补,如有不严谨描述,还请大佬指正!

一、什么是决策树

根据数据特征(if-else形式)划分数据集,进而进行分类。

比如:

if (特征A的值为“是”):
    if (特征B的值为“是”):
        if (特征C的值为“是”):
            类别 = 正类
        else:
            类别=负类
    else:
        类别 = 负类
else:
    类别 = 负类

二、为什么要用决策树

为了理解数据中所蕴涵的知识信息

三、怎么样用决策树

总流程:

选择纯度度量指标-->选取能让纯度最大的那个特征作为该次的决策条件-->以该特征切分数据集,同时将该特征从切分后的子集中剔除--->重复第二第三步直至停止条件

停止条件有以下三种:

1. 完成分类

2. 特征维度已经全部用上,就以占比最大的类别作为当前节点的归属类别

3.纯度一样,无法继续分裂

1.决策条件

找到好的决策条件--->什么叫好的决策条件--->“纯度”高的--->决策后,二叉树的一个分支几乎都是正类,另一个分支几乎都是负类(希望这个决策条件可以一锤定音

纯度的三个特点:

1) 当一个分支下的所有样本都为一类时,纯度最高

2)当一个分支下样本所属类别一半为正类,一半为负类时,纯度最低

3)纯度的考察与正类或者负类无关

纯度的计算指标:

用信息熵来衡量纯度,信息熵在通信里用于衡量不确定性:信息熵越小,系统越稳定(可以一锤定音),则意味着纯度越大。p为概率,在二元分类中,若p=1.则H为0;若p=0.5,H = 1,分类情况最不确定,最混乱。

H(X) = -\sum_{k=1}^{N}p_klog_2(p_k)

 纯度计算算法:

1)ID3算法:信息增益

G(D,\alpha ) = H(x)-\sum_{v=1}^{V}\frac{\left | D^v \right |}{\left | D \right |}H(D^v)

2) C4.5算法:信息增益比

G_r = \frac{G(D,a)}{IV(a)}

IV(a) = \frac{\left | D^v \right |}{D}log_2\frac{\left | D^v \right |}{\left [ D \right ]}

3) CART算法:基尼系数

Gini(D) = 1 - \sum_{k=1}^{N}p_k^2

例:用Gini系数选择特征,建立决策树 

下面是一个上班是否需要带雨伞的问题,特征为天气和驾驶:

step1:选择使用决策特征(用驾驶or用天气)

 首先计算天气的基尼系数,可见有三种天气:晴、多云、下雨

则:

天气_Gini = P(晴)× 晴_Gini + P(多云)×多云_Gini +P(下雨)×下雨_Gini

晴天样本数为2,晴天需要打伞的个数为0,晴天不打伞的个数为2,所以:

晴_Gini = 1-(0^2+1^2) = 0

多云的样本数为4,需要打伞的个数为2,不打伞的个数为2,所以:

多云_Gini = 1-(2/4)^2-(2/4)^2 = 0.5

下雨的样本数为3,需要打伞的个数为1,不打伞的个数为2:所以:

下雨_Gini = 1-(1/3)^2-(2/3)^2 = 0.444

天气_Gini = 2/9 × 0 + 4/9 ×0.5 +3/9 ×0.444 = 0.3689

 然后计算驾驶的基尼系数,同理可得,驾驶_Gini = 0.444.

因为天气_Gini 比驾驶_Gini 小,说明“天气”这个特征更能一步到位,所以使用天气作为第一个决策节点。

2. 解决过拟合

1)预剪枝:在分支划分前就进行剪枝判断

2)后剪枝: 在分支划分之后就进行剪枝判断

Decision Tree

未完待续

参考书籍:《机器学习算法的数学解析和python实现》

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值