决策树模型呈现树结构,在分类问题中表示基于特征进行分类的过程,可以看成if-then规则的集合,也可以认为是定义在特征空间和类空间的条件概率分布。决策树分类学习包括了:特征选择,决策树的生成和决策树的修剪。
1.为什么说是条件概率分布?
决策树可以看成是由各个单元给定条件下类的条件概率分布组成的。
2. 特征选择和生成
在进行特征选择的时候肯定是优先选择按照某个特征或者属性进行划分得到的效果最好的特征或者属性!信息增益可以很好的衡量这个值。(公式这里不给出,太难输入了,可以参考周志华的《机器学习》或者李航的《统计学习方法》)
熵是用来表示随机变量的不确定性,熵越大,不确定性越大,信息增益表示熵与按照某个特征进行分类的条件熵的差,也就是说信息增益衡量了按照某个特征或者属性进行分类之后的不确定性减少的程度!也就是说信息增益越大,这个特征进行分类的效果越好!
ID3算法根据信息增益准则来选择特征,然后采用极大似然估计进行概率模型选择,最后得到决策树。
信息增益偏向选择取值较多的特征
信息增益比或者叫增益率
增益率就是信息增益与特征a的固有值(instrinsic value)(其实就是对特征a的特征值求熵),特征a的固有值越大通常该特征值数目的例子的数目越多,这也就很好的减少了信息增益的缺点。
增益率偏向选择取值少的特征。
C4.5算法是根据增益率来生成决策树!
3. 树的剪枝
决策树模型比较容易导致过拟合,那么剪枝就可以避免过拟合。
后剪枝:先根据样本或者数据集生成决策树,然后在进行剪枝,计算结点的损失函数值,以及其父节点的损失函数值,如果其父节点的损失函数值小就进行剪枝,否则不剪枝。
《统计学习方法》中给出的损失函数是经验熵与树的规模的和,用一个参数来调整二者的比例。经验熵大,树的规模可能就小,经验熵小,树的规模就大。经验熵代表不确定性度量。
预剪枝:就是在决策树生成的过程中就控制决策树是否进行划分类别。一边生成一边剪枝,或者说根本不让不好的分类生成。
4. CART算法
CART可以处理连续数据也可以处理离散数据,处理连续数据就生成回归树,处理离散数据生成分类树
回归树:
首先对连续的数据进行离散化,找到最优的切分变量和切分点,根据这两个值求出输出值,然后不断重复上面的步骤,生成回归树。
分类树:
CART采用基尼指数来选择最优特征,其余与C4.5一样
剪枝:
剪枝过程中,我们来计算子树的损失函数,损失函数为训练数据的误差值与参数乘以树的规模的和,我们不断调整参数的值,找到不同的剪枝后的树,然后通过交叉验证得到最优的树。剪枝的过程是后剪枝。
对于连续属性的可取数目不再有限,因此,不能直接根据连续属性的可取值来对结点进行划分。
5.连续值处理和缺失值处理
https://blog.csdn.net/uncle_gy/article/details/78848479
6.决策树的损失函数
在阅读《统计学习方法》5.1.4决策树学习一节过程中,有如下一句话引起博主疑惑:决策树的损失函数通常是正则化的极大似然函数。书上并未给出具体推导,直到5.4决策树的剪枝中,直接给出了正则化的决策树损失函数:。其中|T|代表叶节点个数,表示具体某个叶节点的样例数,表示叶节点经验熵。
我们知道正则化的损失函数中前一项代表经验误差,而在概率模型中(决策树模型是一种概率模型),经验误差函数的获得往往通过将极大似然函数取反,即将求极大化为求极小而获得。因此,在概率模型中,极大似然函数与经验误差函数可以认为是相同的概念,那么必然就可以通过经验误差函数来推导出极大似然函数,以此来加深对决策树损失函数的理解。
我相信有相当一部分读者与博主一样,并不理解决策树损失函数的真正意义,表面上来看:将每个叶节点的实例个数与其经验熵的乘积相加,这究竟代表个什么玩意呢?现在,我将利用该损失函数反向推导出极大似然函数,当我们看到极大似然函数时,便可以将损失函数看的透彻。
其中表示叶节点中类别为k的样本数。K表示样例类别总数。
至此,损失函数被化简为这样,可以看到它与我们所要求的极大似然函数仅一步之遥:将求极小转为求极大,即去掉上式的
负号,我们得到对数极大似然函数:,其对应的极大似然函数是:。至此,决策树模型的极大似然函数推导完毕。其意义作者个人理解为:先对各叶节点之间进行极大似然估计,再对各叶节点内部进行极大似然估计,由此得到决策树模型中的极大似然函数。
参考文献:
https://blog.csdn.net/wzk1996/article/details/81941572
https://blog.csdn.net/uncle_gy/article/details/78848479