模型融合blending Stacking--机器学习

原文章:https://blog.csdn.net/randompeople/article/details/103452483?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165888408916780366554842%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=165888408916780366554842&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2alltop_positive~default-1-103452483-null-null.142v35pc_rank_34,185v2tag_show&utm_term=%E6%A8%A1%E5%9E%8B%E8%9E%8D%E5%90%88&spm=1018.2226.3001.4187
模型融合:将多个弱分类器进行融合,得到强分类器。

弱分类器的要求:保持各个分类器之间的差异性;确保各个弱分类器的预测准确度。

融合方式分为:Blending 和 Stacking。融合也可以通俗地分为投票和加权。

Blending:

blending分为了uniform和linear两种方式

Uniform Blending

给每个弱分类器同样的权重,均为1,这就体现了少数服从多数的概念。
均匀融合

Linear Blending

加权求和,其中at可以通过训练得到。
线性融合

Stacking

stacking与blending的区别在于利用k个弱分类器在k折训练集上进行训练,并且输出对k个验证集的预测结果,输入到融合模型中进行结果的融合,最后输出整体模型的预测结果。Stacking则有点像组合方式,每一个层都是一个模型,下一层模型利用上一层模型的输出来得到结果作为下一层输入,但Stacking算法分为2层,第一层是用不同的算法形成T个弱分类器,同时产生一个与原数据集大小相同的新数据集,利用这个新数据集和一个新算法构成第二层的分类器。
在测试阶段,使用k个模型的预测值加权平均后,导入到融合模型中输出预测结果。
stacking方法

模型的对比

统计学习方法
stacking回归实例

from mlxtend.regressor import StackingCVRegressor
from mlxtend.data import boston_housing_data
from sklearn.linear_model import LinearRegression, Ridge, Lasso
from sklearn.svm import SVR
from sklearn.model_selection import train_test_split, GridSearchCV, cross_val_score
from sklearn.metrics import mean_squared_error
import numpy as np
import matplotlib.pyplot as plt
x, y = boston_housing_data()
x = x[:100]
y = y[:100]
x_train, x_test, y_train, y_test = train_test_split(x, y, test_size=0.2)
lr = LinearRegression()
svr_lin = SVR(kernel='linear', gamma='auto')
ridge = Ridge(random_state=2019,)
lasso =Lasso()
models = [lr, svr_lin, ridge, lasso]

params = {'lasso__alpha': [0.1, 1.0, 10.0],
          'ridge__alpha': [0.1, 1.0, 10.0]}

sclf = StackingCVRegressor(regressors=models, meta_regressor=ridge)
grid = GridSearchCV(estimator=sclf, param_grid=params, cv=5, refit=True)
grid.fit(x_train, y_train)
print(grid.best_score_, grid.best_params_)
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值