本文来源于《北美数据科学家的私房课》
树模型中几个重要定义词
分类树(预测离散型结果的树),回归树(预测连续型结果的树),分裂点,根节点,叶节点,节点的度,树的度,修剪,树枝(子树),亲节点和子节点。
(本人乌鸦之作,大家了解分类过程就好,大伙稍安勿躁~)
其中长相—-根节点(分裂点),年龄和经济状况—–分裂点,小鲜肉所在的那些节点是终节点(叶子节点),长相节点的度为2(2条树枝),整颗树的度为4(4条树枝),我们将王XX枝丫移除,就是修剪;长相是年龄和经济状况的亲节点,年龄和经济状况是长相的子节点。
分裂准则:(对于分类树(离散因变量))
Gini系数:
它用来衡量一个集合样本的杂质
例:50个学生,有25个是计算机专业。其中女生30人,5个是计算机专业,男生20人,20人都是计算机专业。
我们用性别变量对计算机专业的学生划分对应的Gini系数。
女生对应的Gini系数:1/6*5/6+5/6*1/6=5/18
男生对应的Gini系数:
0*1+1*0=0
分类总体的Gini系数:
3/5*5/18+2/5*0=1/6
原观测的基尼系数是25/50=1/2,进过性别分裂后Gini系数降至1/6,该分裂点对降低Gini系数的贡献是1/3. 信息增益:
纯度越高的节点描述起来需要的信息更少。
对系统的无序度量叫做熵,但系统内样本是一类是,熵是0,即不存在无序。如果各类样本比例是50%~50%,那么熵是1.熵越小越好!
分裂准则(对于回归树)
最小化SSE:(递归划分)
需要将数据集S分成两组S1,S2,其中S1,S2的选取需要使得整体的误差平方和达到最小。 树的修剪:
树模型需要防止过度拟合,实现方法如下:
1.对树的大小进行限制
2.对树进行修剪 通过一些参数来限制树的大小
(1)每个节点处的最小样本量(样本太大,拟合不足,样本太小,过度拟合)
(2)最大树深度(树生长的过深,也会过度拟合)
(3)最大终结点数目(类似于树深度的限定。参数通常取变量个数的平方根效果最好,不过最好在变量个数的30%~40%区间进行调优) 让树先充分生长,再回头移除一些不显著的树枝
实现方法如下: (1)代价-复杂度调优
即在SSE基础上加上一个关于终节点数目的罚函数,通过一个调优参数控制罚函数的权重:
(2) 降低误判率修剪
-将树的所有分裂点都纳入修剪的候选名单,对某个分裂点进行修剪意味着将该分裂点下的整个子树都去掉,将该节点设置为叶节点。
这里数据集被分成3个子集:
(1) 用于训练完整的树
(2) 用于修剪
(3) 用于测试最终模型
若对某个节点(分裂点)进行修剪后的树,在(2)子集上得到的准确度不小于原来完整树(2)上的精确度,那么久进行修剪,并将该节点设置为叶节点。否则保留该节点。
当子集(2)的样本量比用于训练的子集(1)少很多时,存在过度修剪的风险。 (3) 误判率-复杂度修剪
每个分裂节点对降低误判率都有前潜在作用,但节点越多,树越复杂。
这里的方法就是使者两者间权衡
计算公式如下:
a(t)可以看做子树T对应价值的衡量
该修剪过程大致如下:
1.对每个分裂点计算对应的价值度量a
2.剪去价值最低 节点
3.不断重复上面过程,产生了森林
4.在森林中选出精确度最高的树 (4) 最小化误判率修剪
这是一个自下而上的过程,目的在于寻找能够最小化模型在新数据预期误判率的树。
修剪预期误判率公式如下:
该修剪算法过程如下:
1.在树的每个非叶节点处,计算该节点修剪后的预期误判率
2.计算该节点下的子树未经修剪得到的预期误判率
3.如果修剪使得预期误判率提高,那么不修剪,否则就修剪
|
请发表评论