我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的、自己不知道的东西。
本次笔记补充视频 BV1JE411g7XF 的缺失部分。在另一个UP主上传的2017课程BV13x411v7US中可找到。本节内容 100 分钟左右。
创造出不同的 data set ,训练不同的模型。
如上,分成 4 份数据(有放回地采样),训练 4 个模型。
如上,对 testing data 做平均。
This approach would be helpful when your model is complex, easy to overfit. e.g. decision tree.
简单的 decision tree 如上图。但是对于决策树,有许多要进行考虑的事。
比如,树的深度,只要够深,就可以拟合任意图形。
使用 Out-of-bag 的方法,或许可以弥补决策树“过拟合”的问题。
Boosting 可以把正确率略高于 50% 的模型,集成起来,达到正确率 100 % 。
如上,我们是有顺序地
依次训练
,这与 Bagging 不同。
刚才讲过,可以用不同的训练数据,训练不同的模型。
我们可以用“重采样”的方法,也可以如上,改变训练数据的权重。优化目标中,多了权重
。
如上,我们要找一组新的训练数据(改变数据权重),其在
上的表现很差,用这个训练
。
如何找呢?如上,本来,我们的错误率是低于 0.5 的(如果高于 0.5 ,则将 output 反转就可以)。接着,我们调整权重 ,让错误率等于 0.5 。用这个权重训练 。
直观的举例如上。
如上,只需对正确的数据与错误的数据分别进行运算即可。
这个
如何设置呢?推导如下。
如上,推导可能比较繁琐,但是道理很简单。由最下方的式子求解
即可。
这里有些技巧,把下面的式子倒过来,分母移到右边去,进行整理代换,最后得到
其演算法如上。我们将权重更新式整理成
如上,如何把
集合在一起呢?可以:
注意,计算 时,带上权重。
我们将证明,当 增加时, 将越来越准(在训练集上)。
如上,把
记为
,而如果
,说明是错误的预测,因为二者异号。绿色的线代表误差函数。可以得到误差函数上界
。
如上,使用一些归纳的思想,得到
,进而得到
。进而推出,我们之前讨论的上界就是与
直接相关的。
接下来我们进一步讨论
。如上,最终
的递推式。因此,最后得出
这是小于 1 的,并且随着 变大,越来越小。
如上,在 training data 上似乎已经没有可以学的东西,而在测试集上,error 还可以再下降。
这是为什么呢?如上,被融合的模型越多,方法越鲁棒。
如上,在模型多了(T 增大时),让 Adaboost 这个上界在减小。
如上,就算深度是 5 的决策树,这 10 棵树互补,都可以有很好的形状。
Gradient Boosting 是一个更加 general 的版本。
如上,我们时刻在更新我们的
,让其变得更好。
如上,问题来了,如何把
作为一个偏微分呢(把函数作为变量)?这在数学上其实是可行的。
如上,我们希望目标
与
的方向越一致越好。即可转换成一个以最小化问题。
我们发现,我们找的
就是 Adaboost 中的
。而
怎么找呢?
如上,我们找出的
正好也是 Adaboost 的
。
此外,使用 Gradient Boost 还可以自己做些变形。
如上,模型融合。涉及到权重的问题。可以考虑学一个 Classifier ,来调整权重。