1、集成学习概述
集成学习(
E
n
s
e
m
b
l
e
l
e
a
r
n
i
n
g
Ensemble learning
Ensemblelearning)的目的是让机器学习的的效果更好,一个不行,就多个一起。
常用的有三种方式
-
Bagging:训练多个分类器取平均
f
(
x
)
=
1
/
M
∑
m
=
1
M
f
m
(
x
)
f(x)=1 / M \sum\limits_{m=1}^{M} f_{m}(x)
f(x)=1/Mm=1∑Mfm(x)
-
Boosting:从弱学习器开始加强,通过加权来进行训练
F
m
(
x
)
=
F
m
−
1
(
x
)
+
argmin
h
∑
i
=
1
n
L
(
y
i
,
F
m
−
1
(
x
i
)
+
h
(
x
i
)
)
F_{m}(x)=F_{m-1}(x)+\operatorname{argmin}_{h} \sum\limits_{i=1}^{n} L\left(y_{i}, F_{m-1}\left(x_{i}\right)+h\left(x_{i}\right)\right)
Fm(x)=Fm−1(x)+argminhi=1∑nL(yi,Fm−1(xi)+h(xi))
(加入一个模型,要比原来强,例如随机森林就是加入一棵树,要比原来强)
-
Stacking:聚合多个分类或回归模型(可以分阶段来做)
2、Bagging模型
全称:
b
o
o
t
s
t
r
a
p
bootstrap
bootstrap
a
g
g
r
e
g
a
t
i
o
n
aggregation
aggregation
就是并行训练一堆分类器
2.1、
R
a
n
d
o
m
Random
Random
F
o
r
e
s
t
Forest
Forest 随机森林模型
-
随机:数据采样随机,特征选择随机
-
森林:很多个决策树并行放在一起
构造树模型
由于二重随机性,使得每个树基本上都不会一样,最终的结果也会不一样
之所以要进行随机,是要保证泛化能力,如果树都一样,那就没意义了!
随机森林的优势
- 它能够处理很高维度(
f
e
a
t
u
r
e
feature
- 在训练完后,它能够给出哪些
f
e
a
t
u
r
e
feature
- 容易做成并行化方法,速度比较快
- 可以进行可视化展示,便于分析
2.2、
K
N
N
KNN
KNN模型
K
N
N
KNN
KNN就不太适合,因为很难去随机让泛化能力变强!
3、
B
o
o
s
t
i
n
g
Boosting
Boosting模型
3.1、
A
d
a
B
o
o
s
t
AdaBoost
AdaBoost
Adaboost会根据前一次的分类效果调整数据权重
如果某一个数据在这次分错了,那么在下一次我就会给它更大的权重
每一次切一刀,最终合在一起,弱分类器这就升级了.
3.2、
x
g
b
o
o
s
t
xgboost
xgboost
X
G
B
o
o
s
t
XGBoost
XGBoost是陈天奇等人开发的一个开源机器学习项目,高效地实现了
G
B
D
T
GBDT
GBDT算法并进行了算法和工程上的许多改进,被广泛应用在
K
a
g
g
l
e
Kaggle
Kaggle竞赛及其他许多机器学习竞赛中并取得了不错的成绩。
说到
X
G
B
o
o
s
t
XGBoost
XGBoost,不得不提
G
B
D
T
(
G
r
a
d
i
e
n
t
GBDT(Gradient
GBDT(Gradient
B
o
o
s
t
i
n
g
Boosting
Boosting
D
e
c
i
s
i
o
n
Decision
Decision
T
r
e
e
)
Tree)
Tree)。因为
X
G
B
o
o
s
t
XGBoost
XGBoost本质上还是一个
G
B
D
T
GBDT
GBDT,但是力争把速度和效率发挥到极致,所以叫
X
(
E
x
t
r
e
m
e
)
G
B
o
o
s
t
e
d
X (Extreme) GBoosted
X(Extreme)GBoosted。包括前面说过,两者都是
b
o
o
s
t
i
n
g
boosting
boosting方法。
X
G
B
o
o
s
t
XGBoost
XGBoost的核心算法思想不难,基本就是:
- 不断地添加树,不断地进行特征分裂来生长一棵树,每次添加一个树,其实是学习一个新函数
f
(
x
)
f(x)
- 当我们训练完成得到k棵树,我们要预测一个样本的分数,其实就是根据这个样本的特征,在每棵树中会落到对应的一个叶子节点,每个叶子节点就对应一个分数
- 最后只需要将每棵树对应的分数加起来就是该样本的预测值。
更多
x
g
b
o
o
s
t
xgboost
xgboost内容请看终于有人说清楚了–XGBoost算法
4、
S
t
a
c
k
i
n
g
Stacking
Stacking模型
堆叠:很暴力,拿来一堆直接上(各种分类器都来了)
可以堆叠各种各样的分类器(
K
N
N
,
S
V
M
,
R
F
KNN,SVM,RF
KNN,SVM,RF等等)
分阶段:第一阶段得出各自结果,第二阶段再用前一阶段结果训练
堆叠在一起确实能使得准确率提升,但是速度是个问题