本文共 3040 字,大约阅读时间需要 10 分钟。
我已经有两年 ML 经历,这系列课主要用来查缺补漏,会记录一些细节的、自己不知道的东西。
本次笔记补充视频 的缺失部分。在另一个UP主上传的2017课程中可找到。本节内容 100 分钟左右。
创造出不同的 data set ,训练不同的模型。
如上,分成 4 份数据(有放回地采样),训练 4 个模型。 如上,对 testing data 做平均。This approach would be helpful when your model is complex, easy to overfit. e.g. decision tree.
Boosting 可以把正确率略高于 50% 的模型,集成起来,达到正确率 100 % 。
如上,我们是有顺序地
依次训练 f ( x ) f(x) f(x) ,这与 Bagging 不同。 刚才讲过,可以用不同的训练数据,训练不同的模型。
我们可以用“重采样”的方法,也可以如上,改变训练数据的权重。优化目标中,多了权重 u n u^n un 。如何找呢?如上,本来,我们的错误率是低于 0.5 的(如果高于 0.5 ,则将 output 反转就可以)。接着,我们调整权重 u u u ,让错误率等于 0.5 。用这个权重训练 f 2 ( x ) f_2(x) f2(x)。
直观的举例如上。这个 d 1 d_1 d1 如何设置呢?推导如下。
如上,推导可能比较繁琐,但是道理很简单。由最下方的式子求解 d 1 d_1 d1 即可。 这里有些技巧,把下面的式子倒过来,分母移到右边去,进行整理代换,最后得到 d 1 = ( 1 − ϵ 1 ) / ϵ 1 d_1 = \sqrt{(1-\epsilon_1)/\epsilon_1} d1=(1−ϵ1)/ϵ1注意,计算 ϵ \epsilon ϵ 时,带上权重。
H ( x ) = s i g n ( ∑ t = 1 T α t f t ( x ) ) H(x)=sign(\sum^T_{t=1}\alpha_t f_t(x)) H(x)=sign(t=1∑Tαtft(x))
α t = l n ( 1 − ϵ t ) / ϵ t \alpha_t = ln\sqrt{(1-\epsilon_t)/\epsilon_t} αt=ln(1−ϵt)/ϵt我们将证明,当 T T T 增加时, H ( x ) H(x) H(x) 将越来越准(在训练集上)。
这是小于 1 的,并且随着 T T T 变大,越来越小。
这是为什么呢?如上,被融合的模型越多,方法越鲁棒。
如上,在模型多了(T 增大时),让 Adaboost 这个上界在减小。 如上,就算深度是 5 的决策树,这 10 棵树互补,都可以有很好的形状。Gradient Boosting 是一个更加 general 的版本。
如上,我们时刻在更新我们的 g ( x ) g(x) g(x) ,让其变得更好。 如上,问题来了,如何把 ∂ L ( g ) \partial L(g) ∂L(g) 作为一个偏微分呢(把函数作为变量)?这在数学上其实是可行的。 如上,我们希望目标 f t f_t ft 与 ∑ e x p ( . . . ) \sum exp(...) ∑exp(...) 的方向越一致越好。即可转换成一个以最小化问题。我们发现,我们找的 f f f 就是 Adaboost 中的 f f f 。而 α t \alpha_t αt 怎么找呢?
如上,我们找出的 α \alpha α 正好也是 Adaboost 的 α \alpha α 。此外,使用 Gradient Boost 还可以自己做些变形。
转载地址:http://jtlxf.baihongyu.com/