task3-决策树算法梳理

  • 1. 信息论基础(熵 联合熵 条件熵 信息增益 基尼不纯度)

参考https://zhuanlan.zhihu.com/p/35423404

信息熵:通常用来描述整个随机分布所带来的信息量平均值,更具统计特性。信息熵也叫香农熵,在机器学习中,由于熵的计算是依据样本数据而来,故也叫经验熵。

联合熵:两个随机变量X,Y的联合分布,可以形成联合熵Joint Entropy,用H(X,Y)表示。

条件熵的定义为:在X给定条件下,Y的条件概率分布的熵对X的数学期望。

信息增益:是决策树ID3算法在进行特征切割时使用的划分准则,其物理意义和互信息完全相同,并且公式也是完全相同。

基尼不纯度:从一个数据集中随机选取子项,度量其被错误的划分到其他组里的概率。

  • 2.决策树的不同分类算法(ID3算法、C4.5、CART分类树)的原理及应用场景

参考:https://blog.csdn.net/u010089444/article/details/53241218

ID3算法是建立在“奥卡姆剃刀”的基础上,即越是小型的决策树越优于大的决策树。ID3算法中根据特征选择和信息增益评估,每次选择信息增益最大的特征作为分支标准。ID3算法可用于划分标称型数据集,没有剪枝的过程,为了去除过度数据匹配的问题,可通过裁剪合并相邻的无法产生大量信息增益的叶子节点(例如设置信息增益阀值)。使用信息增益其实是有一个缺点,那就是它偏向于具有大量值的属性–就是说在训练集中,某个属性所取的不同值的个数越多,那么越有可能拿它来作为分裂属性,而这样做有时候是没有意义的。此外,ID3不能处理连续分布的数据特征。

 

C4.5算法是对ID3算法的改进,C4.5克服了ID3的2个缺点:用信息增益选择属性时偏向于选择分枝比较多的属性值,即取值多的属性和不能处理连续属性

 

CART(Classification And Regression Tree)算法既可以用于创建分类树,也可以用于创建回归树。CART算法的重要特点包含以下三个方面:剪枝策略、单变量分割和二分。

  • 3. 回归树原理

参考:http://www.javashuo.com/article/p-cqrdzvcn-bp.html

  • 4. 决策树防止过拟合手段

参考:https://blog.csdn.net/qq_28168421/article/details/53456090

有几种途径用来避免决策树学习中的过度拟合。它们可被分为两类:

(1). 及早停止增长树法,在ID3算法完美分类训练数据之前停止增长树;

(2). 后修剪法(post-prune),即允许树过度拟合数据,然后对这个树后修剪。

  • 5. 模型评估

参考:https://blog.csdn.net/mousever/article/details/46944265

1、保持方法
2、随机二次抽样
3、交叉验证
4、自助法
 

  • 6. sklearn参数详解

参考:https://blog.csdn.net/u011475210/article/details/77825768

sklearn.tree.DecisionTreeClassifier
(criterion=‘gini’, splitter=‘best’, max_depth=None, min_samples_split=2,
min_samples_leaf=1,min_weight_fraction_leaf=0.0, max_features=None,
random_state=None, max_leaf_nodes=None, min_impurity_decrease=0.0,
min_impurity_split=None, class_weight=None, presort=False)

criterion:特征选择的标准,有信息增益和基尼系数两种,使用信息增益的是ID3和C4.5算法(使用信息增益比),使用基尼系数的CART算法,默认是gini系数。
splitter:特征切分点选择标准,决策树是递归地选择最优切分点,spliter是用来指明在哪个集合上来递归,有“best”和“random”两种参数可以选择,best表示在所有特征上递归,适用于数据集较小的时候,random表示随机选择一部分特征进行递归,适用于数据集较大的时候。
max_depth:决策树最大深度,决策树模型先对所有数据集进行切分,再在子数据集上继续循环这个切分过程,max_depth可以理解成用来限制这个循环次数。
min_samples_split:子数据集再切分需要的最小样本量,默认是2,如果子数据样本量小于2时,则不再进行下一步切分。如果数据量较小,使用默认值就可,如果数据量较大,为降低计算量,应该把这个值增大,即限制子数据集的切分次数。
min_samples_leaf:叶节点(子数据集)最小样本数,如果子数据集中的样本数小于这个值,那么该叶节点和其兄弟节点都会被剪枝(去掉),该值默认为1。
min_weight_fraction_leaf:在叶节点处的所有输入样本权重总和的最小加权分数,如果不输入则表示所有的叶节点的权重是一致的。
max_features:特征切分时考虑的最大特征数量,默认是对所有特征进行切分,也可以传入int类型的值,表示具体的特征个数;也可以是浮点数,则表示特征个数的百分比;还可以是sqrt,表示总特征数的平方根;也可以是log2,表示总特征数的log个特征。
random_state:随机种子的设置,与LR中参数一致。
max_leaf_nodes:最大叶节点个数,即数据集切分成子数据集的最大个数。
min_impurity_decrease:切分点不纯度最小减少程度,如果某个结点的不纯度减少小于这个值,那么该切分点就会被移除。
min_impurity_split:切分点最小不纯度,用来限制数据集的继续切分(决策树的生成),如果某个节点的不纯度(可以理解为分类错误率)小于这个阈值,那么该点的数据将不再进行切分。
class_weight:权重设置,主要是用于处理不平衡样本,与LR模型中的参数一致,可以自定义类别权重,也可以直接使用balanced参数值进行不平衡样本处理。
presort:是否进行预排序,默认是False,所谓预排序就是提前对特征进行排序,我们知道,决策树分割数据集的依据是,优先按照信息增益/基尼系数大的特征来进行分割的,涉及的大小就需要比较,如果不进行预排序,则会在每次分割的时候需要重新把所有特征进行计算比较一次,如果进行了预排序以后,则每次分割的时候,只需要拿排名靠前的特征就可以了。

最优作业可以参考:https://blog.csdn.net/MY578719543/article/details/88123667 

​​​​​​​