决策树:
一棵决策树包含一个根节点,若干个叶节点,若干个内部节点。每个叶节点表示相对应的决策结果。
决策树的生成是一个递归过程,每个节点会遇到三种情况:
- 当前节点对应的数据集中只有一种类别数据,则无需再划分;
- 当前节点属性集为空,或者数据的取值全部相同,则将当前节点设为叶节点,对应的类别为,数据中包含样本量最多的类别,即哪个类别的样本量最多,叶节点对应的类别就是它;
- 当前节点已经不包含任何样本,则当前节点同样设为叶节点,对应的类别为,父节点中包含类别数最多的类别。
决策树的关键在于如何选择属性进行划分,我们希望随着决策树的不断划分,每个分支所包含的样本尽可能的属于同一类别,即纯度越来越高。
划分方式
- 信息增益(ID3, iteration Dichotomiser ,迭代二分器算法): 信息增益越大,纯度越高 对当前节点的中包含的每个属性计算信息增益,选择最大的进行划分; 信息增益对可取值数目较多的属性有所偏好。
优点:理论清晰、方法简单,学习能力较强;
缺点:
- 只能处理离散数据,不能处理连续数据;
- 划分过程会由于子集规模过小而造成统计特征不充分而停止;
- 倾向于属性取值较多的属性(从信息增益计算公式可以看出)。
- 增益率(C4.5 决策树算法): 增益率准则对可取值数目较少的属性有所偏好,并不是直接选择增益率最大的作为划分属性,先从划分属性中找出信息增益高于平均水平的属性,在选择增益率最高的,以达到平衡。克服了信息增益只能处理离散数据
- 基尼指数(CART, classification and regression tree,分类回归树) :基尼指数反应了从数据集中,随机抽出两个样本,其类别标记不一致的概率。所以基尼指数越小,表明该数据集纯度越高。另一种思路,基尼指数是为了最小化误分类的概率;
剪枝处理
降低过拟合
- 预剪枝:在划分之前,估计当前节点划分以后对性能有无提升,有就继续划分,没有则停止划分
- 后剪枝:对非叶节点进行考察,假设将当前节点对应的子树整个替换成叶节点,对性能是否有提升;
连续值处理
对连续属性值进行排序,选择某个值t 进行划分,而 t 依次取一系列值中相邻两个值的平均值,选择使得信息增益最大的那个属性值作为划分值。
缺失值处理
多变量决策树
基尼(Gini)指数 VS 熵
(转自机器学习面试干货精讲)
既然两个都可以表示不纯度,不确定性,两者之间有什么区别?
- 答:基尼指数的计算不需要对数,更高效;
- 基尼指数更偏向于连续属性,熵则偏向于离散属性。