0. ensemble leaning集成学习
0.1核心思想
集成学习的核心思想是:“三个臭皮匠赛过诸葛亮”。
我们大部分解除的分类器classifier,很多时候效果不一定是好的。比如一个分类器根据自己的特性可以识别出这个数据集的一部分规律,另一个分类器可以识别出另一些规律。
打个比方,想探究一下股价是怎么波动的。一个分类器可以从基本面上查看,发现公司利润和股价是有关系的。另一个分类器看一下新闻,发现人们评价好了公司股价就上涨。他们都不是完美的,但是如果能结合起来就好了。
0.2 证明有用
我们要从数学分析的角度证明一下“三个臭皮匠赛过诸葛亮”。
假设一个臭皮匠的犯错概率是
ε
\varepsilon
ε = 0.25.2个或2个以上人犯错的概率:(2个人同时犯错或者3个人同时犯错,这个时候最终投票出来的结果肯定是错的)
(相当于X = 2和X=3时的伯努利分布。概率是:
P
=
C
(
m
,
n
)
∗
p
n
∗
(
1
−
p
)
m
−
n
P = C(m,n) *p^n *(1-p)^{m-n}
P=C(m,n)∗pn∗(1−p)m−n
也就是说
P
(
X
≥
2
)
=
∑
i
=
2
3
(
3
,
i
)
ε
i
(
1
−
ε
)
3
−
i
=
0.15625
P(X≥2) = \sum_{i=2}^3 (3,i)\varepsilon^i (1-\varepsilon)^{3-i} = 0.15625
P(X≥2)=i=2∑3(3,i)εi(1−ε)3−i=0.15625
所以最终犯错的概率是0.15625,远远小于0.25. 那么还是人多点儿决策更好。
0.3 如何操作
那要如何结合呢?
对于分类问题,就是把每一个classifier想象成一个人,每个人都有投票权,像古希腊民主的方法一样大家一起来投票,所有人投票这个答案是什么最终就是什么。
对于回归问题,采用加权平均。其实仔细想想,用众多方法进行估值也可以用这个思路敲定最后公司的估值是什么。
OK,组装模型的思路主要有两个:
- Bagging
- Boosting
注意这是组装模型的思路,但是这不是独立的模型!选啥模型都是可以的。
1. Bootstrap
1.1 Bootstrap
bootstrap原本的含义是鞋后跟那个提的小东西,后面人们又引申为自力更生。大概就是说,在一个大的样本中不断抽取小的样本进行模型训练。
1.2 Bagging(Bootstrap aggregating自助聚合算法)
Bagging装袋算法就是基于bootstrap的一种算法。
特殊的地方在于,每一个小样本都有一个classifier。
这个方法就是最简单的古希腊式投票方法,用民主的一人一票的方法来进行投票,也就是大家受众的决定权是等权重的。
选择同样的classifier但是每次投喂不同的训练集。这个训练集都是来自于同一个大的训练集。在选择小训练集的时候,采取的是随机抽取。
这种大大可以降低overfitting,不会找到一些专属于这个训练集自己的特点。
而且所有人都投票了,一个人判断错了也没什么,所以variance也会降低。
左边是bootstrap,右边是bagging,其实不一样的地方就是用了不同的model。
2. Bootsting
2.1 Bootsting
核心思想是:挑选精英。
已经验证过,古希腊民主选举的方法是有问题的。不然苏格拉底也不会死掉。由此,人们决定让精英有更大的决定权,因为他们会考率得更全面一些,最后得出的结论和真实情况会更加相近,也就是说bias会更小。
具体来说吗,就是把基础模型先进行线性组合。然后每一轮训练都要增加那些更准确的模型的权重,降低不准确模型的权重。在这之中,每一轮的训练集是不变的。
主流的有:
- Adaboost
- Gradient boosting
Reference
- https://easyai.tech/ai-definition/ensemble-learning/
- UYSD QUBS6850