什么是决策树?
决策树如下:
问题:
每个节点是在哪个维度做划分?
某个维度是在哪个值上做划分?
信息熵
解决上述问题的其中一种方法:信息熵
熵表示随机变量的不确定度:熵越大,数据的不确定性越高;反而反之。
信息熵的计算公式:
其中,pi表示某一类信息所占的比例。
使用信息熵寻找最优划分
对于不同的维度、不同的值,哪种划分使得划分后的信息熵最低(确定性最高)?
一次划分,对不同维度、不同值进行搜索即可;
多次划分,是在上次划分后的子树上再进一步划分。
基尼系数
另一种划分指标:基尼系数
基尼系数越大,数据的不确定性越高;反而反之。
其公式为:
其中,pi表示某一类信息所占的比例。
划分过程与使用信息熵寻找最优划分相同。
信息熵vs基尼系数
信息熵的计算比基尼系数稍慢
scikit-learn中默认为基尼系数
大多时候二者没有特别的效果优劣
CART与决策树中的超参数
CART:Classification and Regression Tree,根据某一个维度和阈值进行二分。
scikit-learn是使用CART实现的。
复杂度
预测:O(log m)
训练:O(nmlog m) 训练复杂度较高
剪枝:降低复杂度,解决过拟合
可调参数
max_depth:最大划分层次
min_samples_split:划分后子树样本最小数要求(子树最少应有多少样本)
min_samples_leaf:叶子节点的样本最小数要求(叶子节点最少应有多少样本)
max_leaf_nodes:叶子节点最大数要求(最多只能有多少个叶子节点)
其他参数,可参加官方文档(使用时尤其如此)
决策树解决回归问题
回归:叶子节点所包含样本的数据的平均值作为预测值。
决策树的局限性
决策边界与坐标轴是平行的,不一定能反映数据的真实情况,即数据倾斜的情况;
对个别数据敏感。