这节课讲的是各种树相关的学习算法或模型,以及它们是如何集成的。
树方法试图将空间分割成长方形集合,然后在这些长方形上拟合一个模型。
其中Rn表示一个 区域,region。也就是一个长方形。这些长方形彼此没有交集,共同构成整个空间。
I函数则表示对或错。如果x属于Rn,那么I的值为1,否则为0.
而cn代表自然选择。也就是在Rn区域中所有y的平均值。
利用单阈值,我们可以对某个属性值进行切割,将一个平面分成两个。如果不停的切分,整个空间都可以无限分割下去。
如图,有三个属性,只对其中的两个属性做切分,最后可以将整个空间分成5个区域,而R4就是红色被标记的区域。
可以看出,树方法有良好的解释性,但有过拟合的风险。
理论上说,我们需要找到N个区域让平方误差最小。但是实际上这个过程会耗费大量计算资源。于是我们用另一个启发性算法。
首先定义一个区域函数,R1表示第j个属性值小于s的 数据点x,R2表示大于。
、
然后最小化两个区域的平方误差(也可以看成variance),选出两个自然选择 c1,c2.
然后选择js
实际上c1和c2就等于两个区域中y的平均值
对每个属性值来说,搜索出最佳的分解值s需要m步。
所以整个搜索(d个属性值)需要O(dm)步。
过拟合问题
我们可以将已经分解完的区域再次分解,那么我们总能得到更小的区域。很明显最后这个回归树是过拟合的。
剪枝解决过拟合:
我们想找到一个子树能够最小化树的复杂度
Qn的定义如下
Cλ的第一项也就是训练误差
最弱连接剪枝:
顺序折叠树中产生最小节点训练误差增加的节点
分类树:
分类树的分类结果就是,分类概率在所有区域中总和的最大的值。
bagging and boosting:
一个个体经常会判断错误,但是一个群体却很少犯错误。
如果一个群体中每个个体的犯错几率为 0.5 - γ,(正确率0.5+γ),那么最后正确的概率是多少呢?
假设一共有2T+1个分类器
因为上式过于复杂,我们就不进行计算了。
现在我们考虑这个概率值的边界
chernoff bound
这个式子类似于正态分布,μ是期望值,k是参数,X是多次x随机变量的和。也就是说,当μ等于k的时候,P<=1.
因为μ = p * n,我们可以求出μ的值,然后带入上面的式子,得到
可以看出,随着T的增大,群体的错误率指数级下降。
Bagging:
主要思路:通过训练多个分类器变体然后投票来降低 variance。
如果我们准备了T个分类器,就需要训练T次。
每次训练需要从数据中拿出M个数据(有放回的抽取),然后在抽取出的数据上训练。
最后简单的把分类器合起来投票得到最后结果。
对于每一次训练的数据准备,我们是从现有数据中抽取,虽然现有数据量为m,抽取量也为m,但是由于有放回抽取,最后不是全部样本都会使用,而没有被使用的样本就可以用来测试。
对于一个样本,一次抽取中没有被抽到的概率为1 - 1/m,而m次抽取都没抽到就是前者概率的m次方。
所以对于一个样本,在m次抽取中至少被抽中一次的概率为1- 0.368。
boosting
(截图来自西瓜书)
在第t次训练中,加权误差率为
其中Dt是一个分布,代表i样本的重要程度。
因为它是一个分布,所以Dt的∑不超过1
αt则由加权误差率求出。
可以看出,当误差为0.5,αt = 0,当误差为0.2时,αt = 0.5log4.
误差越小,则αt越大。
而最后的集成分类器为
分析训练误差
先看左边的不等式,可以发现当预测错误的时候,e>1
而当预测正确的时候,1/e > 0
接着证明右边的等式
根据算法中Dt的计算式,和D1 = 1/m
我们可以得到
然后对等式左边展开分子,把e的指数中的ht的累加写成累乘。再结合Dt+1的通项公式可得
那么Zt又等于
总结一下,训练误差的形式如下(最后一步利用证明,x=4γ^2)