一、分类决策树 API
class 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
参数criterion用来决定不纯度的计算方法,sklearn提供了两种选择:
A. 输入 “entropy”,使用信息熵(Entropy)
B. 输入 “gini”,使用基尼系数(Gini Impurity)
参数 |
criterion |
如何影响模型? |
确定不纯度的计算方法,帮忙找出最佳划分节点,不纯度越低,决策树对训练集的拟合越好 |
可能的输入有哪些? |
默认为基尼系数gini,填写entropy则使用信息增益 |
怎样选取参数? |
通常就使用基尼系数; 数据维度很大或噪音很大时使用基尼系数; 数据维度低、数据比较清晰时,使用信息熵和基尼系数基本一致; 当决策树的拟合程度不够的时候,一般使用信息熵; 两个都试试,不好就换另外一个 |
三、扩展
(1)比起基尼系数,信息熵对不纯度更加敏感,惩罚也更强。但是在实际使用中,二者的效果基本相同。
(2)信息熵的计算要比基尼系数缓慢,因为基尼系数的计算不涉及对数。
(3)使用信息熵作为节点划分标准时,决策树的生长会更加 ”精细”,主要因为信息熵对不纯度更加敏感。因此对于高维数据(属性较多的数据)或者噪声很多的数据,信息熵很容易过拟合,而基尼系数在这种情况下的效果则往往比较好。
(4)当模型拟合程度不足的时候,即模型对于训练数据学习的程度不够的时候,一般使用信息熵。当然,这些也不是绝对的,需要在实际问题中灵活变通。