CART
Mahout中没有这个算法,学习而已
步骤:
a. 构建树: 每次选取一个属性及其分割点
b. 剪枝: 防止过拟合。
a和b步骤是大部分的决策树的通用的方法。不同决策树选择的属性选取的方法不一样。
构建树的方法关键在于如何最优的选择属性,如何最优的选择分割点。
cart采用gini index来选择属性。
gini index的公式:
其中,pj为S中的值组术语类别j的概率。如果利用属性A将S分割成S1和S2,则根据此分割S的gini index为:
不纯粹的降低值为:
若属性A拥有最大不纯粹度的降低值,则选择该属性为分割属性。
选择属性说完了,如果选择属性中的分割点。离散属性比较好分,连续属性则根据上下限划分成离散区域,不停的迭代,找到最优划分。
构建树的过程完了,说说如何剪枝。
剪枝的目的是为了不让树过拟合,所以剪枝的前提就是承认决策树存在过拟合。
如何剪枝?
CART采用的是事后剪枝,也就是在完全生长的书上剪去分支实现的。
选择决策点,不同的决策点对应的不同的树,谦虚遍历统计不同觉得点对应的建树的误差和测试数据的误差,这里要解释下,我们会将样本的分割成两部分,一部分是训练样本,一部分是测试样本,比如2/3是训练样本,1/3是测试样本。可以通过比较,选取测试误差最小的树(最小误分树)。
详细的算法的步骤就不写了,上一段写的蛮详细了!如有不对的地方,请务必更正。
参考:http://www.cnblogs.com/happyblog/archive/2011/09/30/2196901.html