集成学习归纳总结

       集成学习通过建立几个模型来解决单一预测问题。它的工作原理是生成多个分类器/模型,各自独立地学习和作出预测。这些预测最后结合成组合预测,因此优于任何一个单分类的做出预测.

       弱分类器&强分类器(弱学习器&强学习器):一个分类器的分类准确在60%-80%,即:比随机预测略好,但准确率却不太高,我们可以称之为“弱分类器”,比如CART(classification and regression tree分类与回归树)。反之,如果分类精度90%以上,则是强分类器。

一、bagging集成原理

step1:在所有数据集中随机采取一部分数据集如图,采取三个样本。

step2:对三个样本进行训练分类器。

step3:如果是分类算法预测,则T个弱学习器投出最多票数的类别或者类别之一为最终类别。如果是回归算法,T个弱学习器得到的回归结果进行算术平均得到的值为最终的模型输出。(上图为分类算法)

注:bagging集成优点

​ Bagging + 决策树/线性回归/逻辑回归/深度学习… = bagging集成学习方法

经过上面方式组成的集成学习方法:

  1. 均可在原有算法上提高约2%左右的泛化正确率

  2. 简单, 方便, 通用

二、随机森林 

       在机器学习中,随机森林是一个包含多个决策树的分类器,并且其输出的类别是由个别树输出的类别的众数而定(随机森林 = Bagging + 决策树)

随机森林构造流程图:

 例如, 如果你训练了5个树, 其中有4个树的结果是True, 1个树的结果是False, 那么最终投票结果就是True

随机森林够造过程中的关键步骤(用N来表示训练用例(样本)的个数,M表示特征数目):

​ 1)一次随机选出一个样本,有放回的抽样,重复N次(有可能出现重复的样本)

​ 2) 随机去选出m个特征, m <<M,建立决策树

随机森林api介绍

  • sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion=’gini’, max_depth=None, bootstrap=True, random_state=None, min_samples_split=2)
    • n_estimators:integer,optional(default = 10)森林里的树木数量120,200,300,500,800,1200
    • Criterion:string,可选(default =“gini”)分割特征的测量方法
    • max_depth:integer或None,可选(默认=无)树的最大深度 5,8,15,25,30
    • max_features="auto”,每个决策树的最大特征数量
      • If "auto", then max_features=sqrt(n_features).
      • If "sqrt", then max_features=sqrt(n_features)(same as "auto").
      • If "log2", then max_features=log2(n_features).
      • If None, then max_features=n_features.
    • bootstrap:boolean,optional(default = True)是否在构建树时使用放回抽样
    • min_samples_split:节点划分最少样本数
    • min_samples_leaf:叶子节点的最小样本数
  • 超参数:n_estimator, max_depth, min_samples_split,min_samples_leaf

案例:鸢尾花案例使用随机森林

from sklearn.datasets import load_iris
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import train_test_split, GridSearchCV
from sklearn.preprocessing import StandardScaler

# 1.获取数据集
iris = load_iris()

# 2.数据基本处理
# x_train,x_test,y_train,y_test为训练集特征值、测试集特征值、训练集目标值、测试集目标值
x_train, x_test, y_train, y_test = train_test_split(iris.data, iris.target, test_size=0.3, random_state=22)
# 3、特征工程:标准化
transfer = StandardScaler()
x_train = transfer.fit_transform(x_train)
x_test = transfer.fit_transform(x_test)
# 4、机器学习(模型训练)
# 随机森林去进行预测
rf = RandomForestClassifier()
# 定义超参数列表
param = {"n_estimators": [120, 200, 300, 500, 800, 1200], "max_depth": [5, 8, 15, 25, 30]}
# 进行模型训练
gc = GridSearchCV(rf, param_grid=param, cv=2)
gc.fit(x_train, y_train)
print("随机森林预测的准确率为:", gc.score(x_test, y_test))

 

三、Boosting

       随着学习的积累从弱到,强简而言之:每新加入一个弱学习器,整体能力就会得到提升。

       (代表算法:Adaboost,GBDT,XGBoost)

  • 步骤1:所有分布下的基础学习器对于每个样本都应该有相同的权重
  • 步骤2:预测错误的样本在下一次的基础学习算法中有更高的权重
  • 步骤3:迭代第2步,直到到达预定的学习器数量或预定的预测精度

1、Adaboost

 

AdaBoost的构造过程小结 : 

权重挂钩错误率 

2、 GBDT(梯度提升决策树)

该算法由多棵决策树组成,所有树的结论累加起来做最终答案。

GBDT = 梯度下降 + Boosting + 决策树

案例:

第一步:计算损失函数,并求出第一个预测值: 

 第二步:求解划分点

得出:年龄21为划分点的方差=0.01+0.0025=0.0125

第三步:通过调整后目标值,求解得出h1(x)

 第四步:求解h2(x) 

 得出结果:

 3、 XGBoost

。。。。。。略。。。。。。略。。。。。。略。。。。。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值