Kaggle和天池比赛中常用提高成绩的三种方法:
1.特征工程
2.模型调参
3.模型融合
模型融合主要有以下几种方式:
简单加权融合:
①回归(分类概率):算术平均融合(Arithmetic mean),几何平均融合(Geometric mean);
②分类:投票(Voting)
③综合:排序融合(Rank averaging),log融合
stacking/blending:
构建多层模型,把初级学习器的输出当作下一层的输入。
boosting/bagging(在xgboost,Adaboost,GBDT中已经用到):
多个分类器的整合
部分代码案例:
1.简单加权平均
1 | def Weighted_method(test_pre1,test_pre2,test_pre3,w=[1/3,1/3,1/3]): |
2.Stacking融合(回归)
1 | from sklearn import linear_model |
3.Voting投票机制
硬投票:对多个模型直接进行投票,不区分模型结果的相对重要度,最终投票数最多的类为最终被预测的类。
1 | eclf = VotingClassifier(estimators=[('lgb', clf1), ('rf', clf2), ('svc', clf3)], voting='hard') |
4.分类模型的Stacking融合
Stacking与Blending相比存在一定优势:
1.充分使用数据
2.使用多次的交叉验证会比较稳健
3.不容易过拟合
1 | clfs = [LogisticRegression(solver='lbfgs'), |
5.其他Stacking
将特征放进模型中预测,并将预测结果变换并作为新的特征加入原有特征中再经过模型预测结果
1 | def Ensemble_add_feature(train,test,target,clfs): |