数学原理
决策树
1、决策树的定义
1)用非叶子节点作为特征
2)用叶子节点作为标签
3)从根节点开始依次将特征带入,进行决策,直至决策到某个叶子节点为止,决策的结果就是最终的叶子节点值
2、如何构造一棵决策树
原理:信息论
【相关概念】
1)信息量
香浓对信息量有以下规定:
如果参与分类的事物可以划分到多个类别中去,即X该类事物类别信息;则该信息的信息量就是:L(X)=-log2(P(Xi)),其中P(Xi)代表Xi这个类别占的比例(也即是出现的概率)
职业 | 年龄 | 收入 | 学历 | 是否贷款 |
---|---|---|---|---|
自由职业 | 28 | 5000 | 高中 | 是 |
工人 | 36 | 5500 | 高中 | 否 |
工人 | 42 | 2800 | 初中 | 是 |
白领 | 45 | 3300 | 小学 | 是 |
白领 | 25 | 10000 | 本科 | 是 |
白领 | 32 | 8000 | 硕士 | 否 |
白领 | 28 | 13000 | 博士 | 是 |
自由职业 | 21 | 4000 | 本科 | 否 |
自由职业 | 22 | 3200 | 小学 | 否 |
工人 | 33 | 3000 | 高中 | 否 |
工人 | 48 | 4200 | 小学 | 否 |
通过职业、年龄、收入、学历判断是否贷款。此时特征就是职业、年龄、收入、学历,标签是是否贷款
从标签上来看,11个样本有2个类别:是与否
2)信息熵
信息熵指的就是信息量的数学期望
信息熵的含义:信息熵描述了数据的混乱程度,熵值越大代表类别混乱程度越高,也就是说类别的纯度越低;反之熵值越小代表类别的混乱程度越小类别越纯。
比如上面二分类:如果标签上只有一个类别,此时纯度是最高的,信息熵为0;如果是两个类别的概率都为1/2,此时纯度最低,信息熵为 1
3)基尼值
4)信息增益
(1) 相对信息熵:以某个特征对标签进行划分的时候,得到的这个特征范围内的信息熵
(2)信息增益
信息增益:Gain(X) = Entropy(类别) - Entropy(某个特征的相对)
Gain(职业) = Entropy - E(职业) = 0.994 - 0.840 = 0.154
信息增益的含义:信息增益描述的是,如果以某个特征进行分裂,分裂前后数据的复杂程度的变化情况。例如:如果某个特征对标签进行划分的时候,信息增益越大,说明用该特征来划分类别的时候区分程度越明显;我们在决策的时候分裂某个属性尽量选择信息增较大提前分裂。
3、决策树的算法
-
ID3算法,分裂的时候用信息熵来作为判断分类的纯度的标准,分裂出来的数我们称为ID3树,ID3树是一个分类树
-
CART算法,用gini值来作为分裂依据,分裂出来的树我们称为CART树,CART树是一棵二叉树,既可以作为分类树也可作为回归树
-
C4.5算法,对节点分裂的时候以信息增益率为依据,分裂出来的树我们称为C4.5树,C4.5树也是一棵分类树
【算法介绍】
1、ID3算法
根据当天天气、温度、湿度、季节来判断明天天气
-
数据的分割
三种情况:
(1)属性是离散的而且不要求构造二叉树
按照属性的取值直接分叉,例如:季节这个特征就可以作为直接分支
(2)属性是离散的且要求构造二叉树
按照属性的取值的分析来进行分叉,例如:可以把天气分成两种晴天就是好天阴天和雨天合在一起就是坏天
(3)属性是连续的
把连续变量离散化,首先对连续的数据从小到大排序,然后将连续的数据均匀的划分到多个区间中去。
例如温度:
4 6 8 15 18 18 18 21 24 25 28 31
如果要划分三个区间:
[-∞,16],[16,22],[22,+∞] -
选择最优的分裂属性
ID3算法在进行属性选择的时候,以信息增益为属性分裂的指标,选择信息熵来作为节点纯度的衡量标准。
温度的信息增益:
Gain2 = 0.084
湿度的信息增益:
Gain3 = 0.084
季节的信息增益:
Gain4 = 0.973
通过信息增益的对比,我们发现以季节作为分裂属性时信息增益最大,即季节对标签影响最大,我们就以季节作为根节点 -
分裂
首先我们根据根节点取每一个熵值,看是否达到了某个规定纯度标准,如果达到了纯度标准就直接分裂出叶子(标签),否则输出到下一个特征来判断。
比如:现在我们以0.75为标准发现只有夏天达到了这个标准,夏天输出到“晴”,其他三个特征都输出到下一个特征
然后,把取“夏天”的所有的行全部剔除掉,继续求信息增益以及信息熵,再进行判断下个特征是谁,然后分裂,直至所有的特征都分裂完为止。
2、CART算法
CART树又叫分类回归树,是在ID3算法的基础上进行的改进,有以下三个关键点:
1)CART树既能回归又能分类
2)CART树在进行分裂的时候,进行分类问题的时候以gini值为依据进行分裂,进行回归问题的时候以最小平方差作为依据。
CART是一棵二叉树
1、认识CART树
CART分类树:预测的结果是离散的,就是若干种类别;比如:用上表中的“看电视时间”、“年龄”、“职业”来推测“婚姻状况”,此时就是分类树
CART回归树:预测的结果是连续的,就是具体数值; 比如:用上表中的“看电视时间”、“婚姻状况”、“职业”来推测“年龄”,此时就是回归树
2、CART树如何来选择分裂属性
分裂的目的是能够让数据的标签类别变得更纯,使得决策的输出值更加接近于真实。
如何来评价一个节点的纯度?
1)CART分类树的分裂
以“职业”来对“婚姻状况分裂”,由于CART树是一棵二叉树,我们需要将“职业”中的取值进行二值化。此时二值化就有三种情况:
同理:在求出特征“看电视时间”对标签的最小相对gini值和年龄相对于标签的最小gini值,然后取三个最小gini值最小的那个作为根节点。
2)CART回归树
通过“职业”来预测年龄
此时方差最小的就是66,即用{“上班族”},{“老师”,“学生”}这样的二值化对“职业”这个特征进行分类,得到的标签的方差最小的
我们同理求其他特征的最小方差,从这些最小方差中再选择最小的,对应的属性就是根节点。
3 决策树系列——C4.5
ID3方法主要有几个缺点:一是采用信息增益进行数据分裂,准确性不如信息增益率;二是不能对连续数据进行处理,只能通过连续数据离散化进行处理;三是没有采用剪枝的策略,决策树的结构可能会过于复杂,可能会出现过拟合的情况。
C4.5在ID3的基础上对上述三个方面进行了相应的改进:
a) C4.5对节点进行分裂时采用信息增益率作为分裂的依据;
b) 能够对连续数据进行处理;
c) C4.5采用剪枝的策略,对完全生长的决策树进行剪枝处理,一定程度上降低过拟合的影响。
1.采用信息增益率作为分裂的依据
信息增益率的计算公式为:
其中
表示信息增益,
表示分裂子节点数据量的信息增益,
计算公式为:
其中m表示节点的数量,Ni表示第i个节点的数据量,N表示父亲节点的数据量,说白了,其实是分裂节点的熵。
信息增益率越大,说明分裂的效果越好。
以一个实际的例子说明C4.5如何通过信息增益率选择分裂的属性:
原始数据表
当天天气 | 温度 | 湿度 | 日期 | 逛街 |
---|---|---|---|---|
晴 | 25 | 50 | 工作日 | 否 |
晴 | 21 | 48 | 工作日 | 是 |
晴 | 18 | 70 | 周末 | 是 |
晴 | 28 | 41 | 周末 | 是 |
阴 | 8 | 65 | 工作日 | 是 |
阴 | 18 | 43 | 工作日 | 否 |
阴 | 24 | 56 | 周末 | 是 |
阴 | 18 | 76 | 周末 | 否 |
雨 | 31 | 61 | 周末 | 否 |
雨 | 6 | 43 | 周末 | 是 |
雨 | 15 | 55 | 工作日 | 否 |
雨 | 4 | 58 | 工作日 | 否 |
以当天天气为例:
一共有三个属性值,晴、阴、雨,一共分裂成三个子节点。
根据上述公式,可以计算信息增益率如下: