决策树的定义:
决策树是一种机器学习的方法。决策树是一种树形结构,其中每个内部节点表示一个属性上的判断,每个分支代表一个判断结果的输出,最后每个叶节点代表一种分类结果。决策树是一种十分常用的分类方法。
1.决策树的生成算法有ID3, C4.5和C5.0,那三者有什么异同点呢?
CART可以用来做回归、也可以用来做分类。但是ID3,C4.5不行。
CART必须是二叉树。ID3和C4.5可以是多叉树。
2.什么是信息增益(Information Gain,IG)?它衡量了什么指标?它有什么缺陷?
信息增益:首先建立一棵决策树。信息增益是一个统计量,用来描述一个属性区分数据样本的能力。信息增益越大,那么决策树就会越简洁。
3.sklearn决策树中的random_state参数控制了哪些步骤的随机性?
l例如:在sklearn可以随机分割训练集和测试集(交叉验证),只需要在代码中引入model_selection.train_test_split就可以了:
from sklearn import model_selection
x_train, x_test, y_train,y_test=model_selection.train_test_split(x,y,test_size=0.2,random_state=0)
这里的random_state就是为了保证程序每次运行都分割一样的训练集和测试集。否则,同样的算法模型在不同的训练集和测试集上的效果不一样。
4.决策树如何处理连续变量和缺失变量?
连续值处理:处理连续型属性(例如西瓜的成熟度、学生成绩)时,需要将其离散化,将连续型属性的值划分到不同的区间(类似于二叉排序树),比较各个分裂点的Gain值的大小。
在C4.5决策树算法中,采用二分法处理连续型属性。
缺失变量处理:缺失值是指一个样本的某些属性值有缺失。当属性值有缺失时要解决两个问题1.在有属性值有缺失的情况下,如何选择最优属性?2.给定划分属性后,训练集中属性值含有缺失值,如何划分样本?
5.基尼系数是什么?为什么要在CART中引入它?
信息熵和基尼系数都是决策树中根节点划分的依据,本质上这两种方式没有太大的差别。具体的比较:
1.信息熵的计算比基尼系数的稍慢一些,因为信息熵的公式里是要求loglog的,而基尼系数公式中只是平方求和而已。
2.Scikit Learn中的决策树默认使用基尼系数方式,所以当我们不传入criterion
参数时,默认使用gini
方式。
3.信息熵和基尼系数没有特别的效果优劣。只是大家需要了解决策树根节点划分的方式原理。
6.什么是树的预剪枝和后剪枝?具体分别是如何操作的?
预剪枝:是指树在判断节点是否分裂的时候就预先通过一些规则来阻止其分裂。
后剪枝:是指在树的节点已经全部生长完成后,通过一些规则来摘除一些子树。
在sklearn的CART实现中,一共有6个控制预剪枝策略的参数,分别为:
最大树深度 | max_depth |
节点分裂的最小样本数 | min_samples_split |
叶节点最小样本数 | min_samples_leaf |
点样本权重和与所有样本权重和之比的最小比例 | min_weight_fraction_leaf |
最大叶节点总数 | max_leaf_nodes |
分裂阈值 | min_impurity_decrease |