决策树可以看作非线性的模型聚合:
递归形式是:
其中,G(x)表示决策树对应的函数,b(x)表示分叉的规则,Gc(x)是子树的模型。
2 一般决策树生成算法的框架
即,学习划分规则b(x),然后把数据按照b(x)划分为C部分,对每一部分递归地生成子树。注意递归在一定条件停止,直接返回一个g(x)。
事实上,不同的决策树算法,都是这个基本的框架。不同的地方在于这四个部分的具体定义是不同的:
3 CART算法
CART算法中,框架中的四个部分分别定义为:
number of branches:每次划分的分支规定为2。也就是CART决策树是一个二叉树。
branching criteria:选择一种划分方式,使得划分后两边数据集不纯度最低(不确定性小):
base hypothesis:最底层的g(x)是一个常数,使得在最后的小数据集上Ein最小。
termination criteria:节点中样本个数小于阈值,或基尼指数小于阈值,或没有更多特征。
回归的不纯度定义为:
分类的不纯度定义为:
也称为基尼指数。其中,K是总共的类别数。
因此,整个算法就是:
4 树的剪枝
为了避免过拟合,需要对产生的树作剪枝。方法是,对当前的树T,去掉一片叶子,选择去掉之后Ein最大的树,得到T1;再对T1去掉一片叶子.......直到只剩一个节点。对产生的T,T1,T2......,选择加正则项的损失函数最小的树作为最终剪枝的树:
5 决策树算法的优点
缺点是理论保证上还不太完备。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:《机器学习技法》—决策树 - Python技术站