金融风控数据挖掘-Task5
一、学习知识点概要
此次学习的主要内容为模型融合,旨在对voting、averaging、bagging、boosting、stacking、blending等方法有一个大致的了解。
二、学习内容
1、voting
此为常见的投票机制,少数服从多数,针对分类模型。假设对于一个二分类问题,有3个基础模型,那么就采取投票制的方法,投票多者确定为最终的分类。
# 简单投票
from xgboost import XGBClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier, VotingClassifier
clf1 = LogisticRegression(random_state=1)
clf2 = RandomForestClassifier(random_state=1)
clf3 = XGBClassifier(learning_rate=0.1, n_estimators=150, max_depth=4, min_child_weight=2, subsample=0.7,objective='binary:logistic')
vclf = VotingClassifier(estimators=[('lr', clf1), ('rf', clf2), ('xgb', clf3)])
vclf = vclf .fit(x_train,y_train)
print(vclf .predict(x_test))
# 加权投票
# 在VotingClassifier中加入参数 voting='soft', weights=[2, 1, 1],weights用于调节基模型的权重
from xgboost import XGBClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.ensemble import RandomForestClassifier, VotingClassifier
clf1 = LogisticRegression(random_state=1)
clf2 = RandomForestClassifier(random_state=1)
clf3 = XGBClassifier(learning_rate=0.1, n_estimators=150, max_depth=4, min_child_weight=2, subsample=0.7,objective='binary:logistic')
vclf = VotingClassifier(estimators=[('lr', clf1), ('rf', clf2), ('xgb', clf3)], voting='soft', weights=[2, 1, 1])
vclf = vclf .fit(x_train,y_train)
print(vclf .predict(x_test))
2、averaging
averaging一般针对回归问题,简单直接的思路是取平均,稍稍改进的方法是进行加权平均。
3、bagging
bagging是Bootstrap AGGregatING的缩写,简而言之,就是通过 bootstrap 取样(可重复取样)的方法构造多个不同的训练集。之后在每个训练集上训练相应的基学习器,最后将这些基学习器聚合起来得到最终的模型。随机森林就是基于Bagging算法的一个典型例子,采用的基分类器是决策树,利用python可以直接调用。
4、boosting
boosting算法可以并行处理,是一种迭代的方法,每一次训练的时候都更加关心分类错误的样例,给这些分类错误的样例增加更大的权重,下一次迭代的目标就是能够更容易辨别出上一轮分类错误的样例。最终将这些弱分类器进行加权相加。
5、stacking
stacking是更加通用的聚合多个学习器的方法,是k折交叉验证,元模型的训练数据等同于基于模型的训练数据,利用好可在众多比赛中大杀四方,缺点是速度太慢,实际环境中的应用有一定难度。
机器学习之模型融合(stacking)心得
6、blending
主要思路是把原始的训练集先分成两部分,比如70%的数据作为新的训练集,剩下30%的数据作为测试集。第一层我们在这70%的数据上训练多个模型,然后去预测那30%数据的label。在第二层里,可以直接用这30%数据在第一层预测的结果做为新特征继续训练即可。
三、学习问题与解答
1、stacking不一定万能
stacking模型本质上是一种分层的结构,stacking中的各个模型(基分类器)追求的是“准而不同”。stacking中的子模型一般应该是独立准确,而不同的基学习器之间有所差异。
关于stacking的理解
2、Kaggle的意义
初步尝试数据挖掘以来一直很疑惑的一个问题。
我要这金牌有何用:Kaggle 竞赛成绩真能「保送」谷歌、FB 吗?
四、学习思考与总结
模型融合是一个很有意义的过程,一般用于A榜比赛的尾声和B榜比赛的全程,可以说是弱化偏见和综合智慧的过程,或者说就是相互弥补弱点。通过训练多个模型,然后融合,期望这个融合的模型最终的效果可以打败单个模型的效果。