数据挖掘终篇!一文学习模型融合!从加权融合到stacking, boosting

**模型融合:**通过融合多个不同的模型,可能提升机器学习的性能。这一方法在各种机器学习比赛中广泛应用, 也是在比赛的攻坚时刻冲刺Top的关键。而融合模型往往又可以从模型结果,模型自身,样本集等不同的角度进行融合。

数据及背景

零基础入门数据挖掘 - 二手车交易价格预测_学习赛_赛题与数据_天池大赛-阿里云天池的赛题与数据(阿里天池-零基础入门数据挖掘)

模型融合

如果你打算买一辆车,你会直接走进第一家4S店,然后在店员的推销下直接把车买了吗?大概率不会,你会先去网站,看看其他人的评价或者一些专业机构在各个维度上对各种车型的对比;也许还会取咨询朋友和同事的意见。最后,做出决策。

模型融合采用的是同样的思想,即多个模型的组合可以改善整体的表现。集成模型是一种能在各种的机器学习任务上提高准确率的强有力技术。

模型融合是比赛后期一个重要的环节,大体来说有如下的类型方式:

  1. 简单加权融合:
  • 回归(分类概率):算术平均融合(Arithmetic mean),几何平均融合(Geometric mean);

  • 分类:投票(Voting);

  • 综合:排序融合(Rank averaging),log融合。

  1. stacking/blending:
  • 构建多层模型,并利用预测结果再拟合预测。
  1. boosting/bagging:
  • 多树的提升方法,在xgboost,Adaboost,GBDT中已经用到。

平均法(Averaging)

基本思想 **:**对于回归问题,一个简单直接的思路是取平均。稍稍改进的方法是进行加权平均。权值可以用排序的方法确定,举个例子,比如A、B、C三种基本模型,模型效果进行排名,假设排名分别是1,2,3,那么给这三个模型赋予的权值分别是3/6、2/6、1/6。

平均法或加权平均法看似简单,其实后面的高级算法也可以说是基于此而产生的,Bagging或者Boosting都是一种把许多弱分类器这样融合成强分类器的思想。

简单算术平均法:如果公式查看不了,请点击【 文章原文

Averaging方法就多个模型预测的结果进行平均。这种方法既可以用于回归问题,也可以用于对分类问题的概率进行平均。

加权算术平均法:

这种方法是平均法的扩展。考虑不同模型的能力不同,对最终结果的贡献也有差异,需要用权重来表征不同模型的重要性importance。

投票法(voting)

基本思想 **:**假设对于一个二分类问题,有3个基础模型,现在我们可以在这些基学习器的基础上得到一个投票的分类器,把票数最多的类作为我们要预测的类别。

**绝对多数投票法:**最终结果必须在投票中占一半以上。

**相对多数投票法:**最终结果在投票中票数最多。

**加权投票法:**其原理为

硬投票 **:**对多个模型直接进行投票,不区分模型结果的相对重要度,最终投票数最多的类为最终被预测的类。

**软投票:**增加了设置权重的功能,可以为不同模型设置不同权重,进而区别模型不同的重要度。

from sklearn.tree import DecisionTreeClassifier``from sklearn.neighbors import KNeighborsClassifier``from sklearn.linear_model import LogisticRegression``from sklearn.ensemble import VotingClassifier

model1 = LogisticRegression(random_state=2020)``model2 = DecisionTreeClassifier(random_state=2020)``model = VotingClassifier(estimators=[('lr', model1), ('dt', model2)], voting='hard')``model.fit(x_train, y_train)``model.score(x_test, ytest)

复制代码
<section role="presentation" data-formula="H(\boldsymbol x)=c{arg \max\limitsj\sum{i=1}^Tw_ih_i^j(\boldsymbol x)}
" data-formula-type="block-equation" style="text-align: left;overflow: auto;">

查看本文全部内容,欢迎访问天池技术圈官方地址:数据挖掘终篇!一文学习模型融合!从加权融合到stacking, boosting

相关推荐
BackCatK Chen36 分钟前
第 1 篇:软件视角扫盲|TMC2240 软件核心特性 + 学习路径(附工具清单)
c语言·stm32·单片机·学习·电机驱动·保姆级教程·tmc2240
深蓝海拓42 分钟前
PySide6从0开始学习的笔记(二十五) Qt窗口对象的生命周期和及时销毁
笔记·python·qt·学习·pyqt
理人综艺好会1 小时前
Web学习之用户认证
前端·学习
●VON1 小时前
React Native for OpenHarmony:项目目录结构与跨平台构建流程详解
javascript·学习·react native·react.js·架构·跨平台·von
AI视觉网奇1 小时前
FBX AnimSequence] 动画长度13与导入帧率30 fps(子帧0.94)不兼容。动画必须与帧边界对齐。
笔记·学习·ue5
小王毕业啦2 小时前
2010-2024年 非常规高技能劳动力(+文献)
大数据·人工智能·数据挖掘·数据分析·数据统计·社科数据·经管数据
张小凡vip2 小时前
数据挖掘(十)---python操作Spark常用命令
python·数据挖掘·spark
woodykissme2 小时前
倒圆角问题解决思路分享
笔记·学习·工艺
黎雁·泠崖2 小时前
Java核心基础API学习总结:从Object到包装类的核心知识体系
java·开发语言·学习
香芋Yu3 小时前
【机器学习教程】第02章:线性代数基础【下】
学习·机器学习