集成学习

集成学习

就是通过某种方式把几种机器学习方法融合起来,得到更好的效果

一、问题分析

基于Stacking的思想,以LightGBM、随机森林、支持向量机为基学习器,多元线性回归模型作为次学习器,构建融合模型,并通过实验证明,融合模型的拟合能力较强于基学习器,误差更低。

二、方法

2、基学习器

SVM

可用于回归问题也可用于分类问题

随机森林

lightbgm

3、集成学习

集成学习(ensemble learning)应如何入门?

集成学习(Ensemble Learning)是一种能在很多机器学习任务上提高准确率的有效技术,它按照不同的思路来组合基础模型形成一个强学习器,从而在机器学习任务达到更好的效果。目前,有三种常见的集成学习框架:bagging,boosting和stacking。

① bagging:从训练集中进行子抽样组成每个基模型所需要的子训练集,对所有基模型预测的结果进行综合产生最终的预测结果(这里每个基模型互不相关)。

② boosting:训练过程为阶梯状,基模型按次序一一进行训练(实现上可以做到并行),基模型的训练集按照某种策略每次都进行一定的转化。对所有基模型预测的结果进行线性综合产生最终的预测结果(后一个模型在前一个模型的基础上建立)。

③ stacking:stacking是一种分层模型集成框架。以两层为例,第一层由多个基学习器组成,其输入为原始训练集,第二层的模型则是以第一层基学习器的输出作为特征输入到模型中进行再训练,从而得到完整的stacking模型。stacking的方法在各大数据挖掘比赛上都很风靡,模型融合之后能够小幅度的提高模型的预测准确度。(二次训练

三、代码实现

2、stacking方法(效果最好)

① SVR回归(SVM的回归模型的名字叫SVR)

from sklearn.svm import SVR

#划分数据集
x_train, x_val, y_train, y_val =get_data_plit(df,y,feature)
# 模型
svr=SVR()
# 训练
svr.fit(x_val,y_val)
# 评价
mean_absolute_error(svr.predict(x_val),y_val)
mean_squared_error(svr.predict(x_val),y_val)

② 随机森林RF

from sklearn.ensemble import RandomForestRegressor

x_train, x_val, y_train, y_val =get_data_plit(df,y,feature)
rf=RandomForestRegressor()
rf.fit(x_train,y_train)
mean_absolute_error(rf.predict(x_val),y_val)
mean_squared_error(rf.predict(x_val),y_val)

③ lgb(使用默认参数)

import lightgbm as lgb

x_train, x_val, y_train, y_val =get_data_plit(df,y,feature)
lgbR=lgb.LGBMRegressor(max_depth=4)
lgbR.fit(x_train,y_train)
mean_absolute_error(lgbR.predict(x_val),y_val)
mean_squared_error(lgbR.predict(x_val),y_val)

④ 线性回归stacking(集成学习,融合rf,SVR,LGB这三种机器学习方法)

from sklearn.ensemble import StackingRegressor
from sklearn.linear_model import LinearRegression

x_train, x_val, y_train, y_val =get_data_plit(df,y,feature)
estimators = [
    ('rf', RandomForestRegressor()),
    ('svr', SVR()),
    ("lgb",lgb.LGBMRegressor())
    ]
stacking= StackingRegressor(estimators=estimators,final_estimator=LinearRegression())
stacking.fit(x_train,y_train)
mean_absolute_error(stacking.predict(x_val),y_val)
mean_squared_error(stacking.predict(x_val),y_val)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容