【A-011】python数据分析与机器学习实战 决策树模型原理

版权声明:转载请声名出处,谢谢 https://blog.csdn.net/u010591976/article/details/82315513

树模型

决策树:

  • 从根节点开始一步步走到叶子节点(决策)
  • 所有的数据最终都会落到叶子节点,既可以做分类也可以做回归

树的组成
根节点:第一个选择点
非叶子节点与分支:中间过程
叶子节点:最终的决策结果

如何切分特征(选择节点)
问题:根节点的选择该用哪个特征呢?接下来呢?如何切分呢?
目标:通过一种衡量标准,来计算通过不同特征进行分支选择后的分类 情况,找出来最好的那个当成根节点,以此类推。

决策数的训练与测试:
训练阶段:从给定的训练集构造出来一棵树(从跟节点开始选择特征,如何进行特征切分)数据的特征相当于节点,决策树中的节点相当于在数据上切了一刀,是不是节点或者特性越多越好呢?难点在于怎么把决策树构造出来?怎么样根据节点选择数据
测试阶段:根据构造出来的树模型从上到下走一遍就好了
一旦构造好了决策数,那么分类或者预测任务就很简单了,只需要走一遍就可以了,那么难点就在于如何构造出来一棵树,这就没有那么容易了,需要考虑的问题还有很多

这里写图片描述
决策数算法:
1. 信息增益:使用熵值进行判断,比较熵的变化,取熵变化也就是信息增益较大的增益。数据越纯,熵值越小,信息增益越大。
2. 信息增益率:=信息增益/自身的熵值。使用熵值进行判断的同时,考虑自身的熵值,为了避免特征稀疏且对最后的结果没有什么影响的特征计算处出的信息增益很大,但是不适合作为节点的特诊。这一类特征自身的熵值很大。
3. GART: 使用GINI系数(类似于熵的计算标准) =1-sum(pi^2) 数据越纯,GINI系数越接近于0,越小。
数据越纯,熵值越小,信息增益越大,GINI系数越接近于0,越小。

注:信息增益率——在信息增益的基础之上,考虑了自身的熵值 =信息增益/自身的熵值
例如,如果存在唯一标识属性ID,则ID3会选择它作为分裂属性,这样虽然使得划分充分纯净,但这种划分对分类几乎毫无用处。ID3的后继算法C4.5使用增益率(gain ratio)的信息增益扩充,试图克服这个偏倚。
即:对于ID这种特征我们可以知道,其自身的熵值非常大,特征稀疏算出来的增益比较大,但是这一类特征对最后的结果影响很小,不适合作为根节点,因此引入升级策略——信息增益率

衡量标准-熵
熵:熵是表示随机变量不确定性的度量
ID3 信息增益:表示特征X使得类Y的不确定性减少的程度。 (分类后的专一性,希望分类后的结果是同类在一起)
这里写图片描述
这里写图片描述
其中pi是S属于类别i的比例,需要注意的是底数仍然为2,原因熵是以二进制位的个数来度量编码长度,同时注意,如果目标属性具有c个可能值,那么熵最大可能为log2(c)。

特征值熵的计算:对于单个特征的熵值计算,选择大当家、二当家的准则,在全部样本(剩下的样本)中进行遍历,选择熵值较小的那个作为当前的节点特征
1. 根据单个特征进行分类,对该特征下每一个分类下发生的全部试件的概率分别*对应概率的log,得到该特征下每个分类的熵值
2. 根据数据统计,计算处该特征下,取到每个分类的概率值
3. 将每个分类的熵*每个分类取到的概率值=该特征值之下的熵值

决策树剪枝策略
为什么要剪枝:决策树过拟合风险很大,理论上可以完全分得开数据 (想象一下,如果树足够庞大,每个叶子节点不就一个数据了嘛)
在决策树学习中,为了尽可能正确分类训练样本,节点划分过程不断重复,有时会造成决策树分支过多,这时就可能因训练样本学得“太好”了,以至于把训练样本自身的一些特点当作所有数据都具有的一般性质而导致过拟合。因此,可通过主动去掉一些分支来降低过拟合的风险。

剪枝策略:预剪枝,后剪枝
预剪枝:边建立决策树边进行剪枝的操作(更实用)
后剪枝:当建立完决策树后来进行剪枝操作

决策树剪枝的基本策略有“预剪枝”和“后剪枝”。预剪枝是指在决策树生成的过程中,对每个节点在划分前先进行估计,若当前节点的划分不能带来决策树泛化性能的提升,则停止划分并将当前节点标记为叶节点;后剪枝则是先从训练集生成一棵完整的决策树,然后自底向上地对非叶节点进行考察,若将该节点对应的子树替换为叶节点能带来决策树泛化性能提升,则将该子树替换为叶节点。

预剪枝
预剪枝使得决策树的很多分支都没有“展开”,这不仅降低了过拟合的风险,还显著减少了决策树的训练时间开销和测试时间开销。但另一方面,有些分支的当前划分虽不能提升泛化性能,甚至可能导致泛化性能暂时下降,但在其基础上进行的后续划分却有可能导致性能显著提高;预剪枝基于“贪心”本质禁止了这些分支展开,给预剪枝决策树带来了欠拟合的风险。

后剪枝
后剪枝决策树通常比预剪枝决策树保留了更多的分支。一般情形下,后剪枝决策树的欠拟合风险很小,泛化性能往往优于预剪枝决策树。但后剪枝过程是在生成完全决策树之后进行的,并且要自底向上地对树中的所有非叶节点进行逐一考察,因此其训练时间开销比未剪枝决策树和预剪枝决策树都要大得多。

温故:
GINI系数和熵有什么区别 熵表示的是不确定性,概率为0.5的时候不确定最大,GINI系数和概率的关系是夫相关,概率越大,GINI系数越小????


参考博客:
https://www.cnblogs.com/bentuwuying/p/6638016.html

猜你喜欢

转载自blog.csdn.net/u010591976/article/details/82315513
今日推荐