机器学习算法之决策树

决策树属于有监督学习

决策树是一种树形结构,为人们提供决策依据,决策树可以用来回答是和没有问题,它通过树形结构将各种情况组合都表示出来,每个分支表示一次选择,直到所有选择都进行完毕,最终给出正确答案。

决策树的三个部分:特征选择、生成、剪枝。

(1)特征选择:构建分类树是信息增益、信息增益比、基尼指数;构建回归树是平方误差最小化。

(2)生成:找到最佳分裂点,将数据集分成若干部分,然后对每个部分递归执行上述过程,然后得到一个尽量大的树。

(3)剪枝:得到尽量大的树后,对训练集的数据可以处理的很好,但对预测集可能会误差很大,即过拟化,所以要进行剪枝,剪掉一些没必要的节点,使树别那么大。

1、特征选择

信息增益

在划分数据集之前之后信息发生的变化称为信息增益,获得信息增益最高的特征就是最好的选择。

已知集合D的经验熵H(D),给定特征A下D的经验条件熵为H(D∣A),将它们作差,也就是 

g(D,A)=H(D)-H(D|A)=-\sum_{k=1}^K\frac{\mid C_k\mid}{\mid D\mid}log_2\frac{\mid C_k\mid}{\mid D\mid}-\sum_{i=1}^n\frac{\mid D_i\mid}{\mid D\mid}·(-\sum_{k=1}^K\frac{\mid D_{ik}\mid}{\mid D_{i}\mid}log_2\frac{\mid D_{ik}\mid}{\mid D_{i}\mid})

扫描二维码关注公众号,回复: 3264122 查看本文章

将之称为信息增益,代表集合D因为特征A而减少的不确定性。选取特征时,应该对每个特征计算信息增益,然后选取信息增益最大的特征。

信息增益比

信息增益的缺点是比较偏向选择取值多的属性,因为属性选的越多,对训练集预测的结果越准,信息增益越大,但是这对测试集不一定是好事。一个特征的取值集合越多,那么它的信息增益更趋向于大,这可能对我们的判断造成影响,因此可以使用信息增益比作为另一特征选择准则。

已知信息增益g(D,A)和D关于特征A的熵H_A(D)=-\sum_{i=1}^n\frac{\mid D_i\mid}{\mid D\mid}log_2\frac{\mid D_i\mid}{\mid D\mid},信息增益比为g_R(D,A)=\frac{g(D,A)}{H_A(D)}

基尼指数

概率分布的基尼指数为 Gini(p)=\sum_{i=1}^np_i(1-p_i)=1-\sum_{i=1}^np_k^2

假设有K个类,C_1,C_2,...,C_K,给定的集合D的基尼指数为 Gini(D)=1-\sum_{k=1}^K(\frac{\mid C_k\mid}{\mid D\mid})^2

对CART算法,D被特征A的某个值分成两类D1,D2,则在特征A的条件下,集合D的基尼指数为 

Gini(D,A)=\frac{\mid D_1\mid}{\mid D\mid}Gini(D_1)+\frac{\mid D_2\mid}{\mid D\mid}Gini(D_2)

基尼指数与熵类似,表示一个集合的不确定性,基尼数值越大,不确定性就越大。我们选取特征的时候就应该选取基尼指数最小的特征。

2、生成

            采用递归方式构造树

为了判断一个属性的好坏,首先算出整个群主的熵,然后尝试利用每个属性的可能取值对群组进行划分,求出两个新组的熵,为了确定最佳的属性,引入信息增益,就是当前熵与两个新组的加权平均之后的熵之间的差值,算法针对每个属性计算相应的信息增益,然后选择最大的属性。对于每个分支,算法需要判断是否需要进一步的划分。

3、剪枝

考虑到可能出现“过拟合”,需要对决策树进行修剪,剪枝的过程,对具有相同父节点的一组节点进行分析,判断如果将其合并,熵的增加量是否会小于指定的阈值,如果是这样,则进行合并,合并后的新节点包括了所有可能的值 在根节点调用剪枝函数,沿着树的所有路径向下遍历到只含叶节点的节点处,函数会将两个叶节点的合起来形成一个新的列表,同时,对熵进行测试,如果熵的变化小于阈值,叶节点会被删除,并且相应的结果值会被移到父节点。之后,合并而成的新节点也可能成为删除对象,以及与其他节点的合并对象。

猜你喜欢

转载自blog.csdn.net/qq_27318693/article/details/81320938