机器--集成学习算法

集成学习算法类型

Bagging 随机森林

若干个弱学习器并行跑, 解决相同的问题, 最后大家投票

  • 特征抽样
  • 样本抽样

Boosting串行模型

  • Adaboost /GBDT/ xgboost lightGMB

  • 一步一步逼近最终改的目标

  • 训练出一个模型, 比较一下和最终目标之间的差别

  • 第二个模型, 实在第一个模型基础之上, 朝着差别去训练

Stacking 串行 模型

  • gbdt 特征筛选
  • LR 预测概率

集成学习模型的特点

  • 都可以输出特征重要性 feature_importance
  • 在特征筛选的时候, 可以使用集成学习模型的这个特点

随机森林API实现

基本原理: 若干个弱学习器并行执行相同的任务

  • boostrap 采样, 特征随机抽取, 样本随机抽取, 建立N棵树
from sklearn.ensemble import RandomForestClassifier


#参数调整

param={"n_estimators":[80,100,200], "max_depth": [2,4,6,8,10,12],"random_state":[9]}
# 超参数调优
# 3 使用GridSearchCV进行网格搜索
from sklearn.model_selection import GridSearchCV
gc = GridSearchCV(rf, param_grid=param, cv=2)

n_estimators  森林里有几棵树
max_depth 每一颗树的最大深度
max_features  特征最大采样比例

作为集成学习模型, 随机森林可以输出特征重要性

  • rfc.feature_importances_
  • 从模型本身角度来讲, 集成学习模型可解释性, 总体可解释性没有问题, 但是对单条数据来说, 可是解释性不如线性模型(逻辑回归, 线性回归), 或者决策树

BoostingAPI实现

Adaboost迭代算法有3步:

1.初始化训练数据的权值分布:假设有N个样本,每个样本赋予相同权值1/N。

2.训练弱分类器:本轮训练中,若某样本分错,则提高它的权值,相反分类正确的样本被降低权值。然后,权值更新过的全体样本被用于训练下一个分类器,使得下一个分类器更关注权重大的难分样本。多次迭代,训练多个弱分类器。

3.加权组合弱分类器:加大分类误差率小的弱分类器的权重,使其在最终表决中起较大作用,而降低分类误差率大的弱分类器的权重,使其在最终表决中起较小作用

from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import AdaBoostClassifier 
# 机器学习(决策树和AdaBoost)   基分类器 
tree = DecisionTreeClassifier(criterion='entropy',max_depth=1,random_state=0)
# base_estimator 基学习器 这里用到的是决策树  n_estimators 多少颗树 
ada= AdaBoostClassifier(base_estimator=tree,n_estimators=500,learning_rate=0.1,random_state=0)
GBDT原理
  • 前一个模型预测出的结果, 计算误差作为后一个模型数据
  • GBDT→XGBoost→LightGBM
    • 基本原理都是一样的
    • 只不过在训练的过程中, 有了不同的优化

集成学习的重点

  • Baggging 和boosting 原理
  • 各自对应的算法
  • 特征重要性
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值