集成学习算法

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

解决欠拟合:弱弱组合变强、boosting

解决过拟合:互相遏制变壮、Bagging

Bagging和随机森林
Bagging构造

Bagging:先采样一些不同的数据集,训练分类器使得能大致分出类别,然后基于这些分类器平权投票,获取到最终结果

采样-学习-集成

随机森林构造

随机森林:随机森林是一个包含多个决策树地分类器,并且其输出的类别是由个别树输出的类别的众数而定。

随机森林=Bagging + 决策树

 关键步骤:

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

随机选出m个特征m << M。建立弱决策树(M是所有特征)

包外估计

在构造随机森林的过程中,进行有放回的抽样,总有一部分抽样我们选不到。

每一次抽样,没有选择到的数据我们叫做保外数据

当数据足够多,任意一组数据为保外数据的概率为

 

 约为0.368,这一部分包外数据可以用于基分类器的验证集。

 随机森林API

 随机森林预测案例
import pandas as pd
import numpy as np
from sklearn.feature_extraction import DictVectorizer
from sklearn.model_selection import train_test_split
from sklearn.tree import  export_graphviz
from sklearn.ensemble import RandomForestClassifier
from  sklearn.model_selection import GridSearchCV

# 1.获取数据
url = "https://hbiostat.org/data/repo/titanic.txt"
titan = pd.read_csv(url)

# 2.数据基本处理
# 2.1 确定特征值,⽬标值
x = titan[["pclass", "age", "sex"]]
y = titan["survived"]
# 2.2 缺失值处理
x['age'].fillna(value=titan["age"].mean(),inplace=True)
# 2.3 数据集划分
x_train, x_test,y_train, y_test = train_test_split(x, y, random_state=22,test_size=0.2)
# 3.特征⼯程(字典特征抽取)
x_train = x_train.to_dict(orient="records")
x_test = x_test.to_dict(orient="records")
transfer = DictVectorizer()
x_train = transfer.fit_transform(x_train)
x_test = transfer.fit_transform(x_test)

# 实例化一个随机森林
rf = RandomForestClassifier()
# 通过超参数调优
param = {"n_estimators":[100,120,300], "max_depth":[3,7,11]}
gc = GridSearchCV(rf,param_grid=param,cv=3)
gc.fit(x_train,y_train)
y_pre = gc.predict(x_test)
ret1 = gc.score(x_test, y_test)
print(ret1)
Boosting

每加入一个弱学习器,整体能力就会提升

实现过程

先训练第一个学习器,然后调整数据分布(增大错误的数据,减小错误的数据),再训练第二个学习器,再次调整数据分布;依次训练学习器,调整数据分布

 AdaBoost构造过程细节

初始化训练数据权重相等,训练第一个学习器;AdaBoost,确定基分类器;计算该学习器在训练数据中的错误率;计算该学习器的投票权重;根据投票权重,对训练数据重新赋权;循环m次;然后对m个学习器进行加权投票,即可得到最终结果

 api

AdaBoostClassifier — scikit-learn 1.5.1 documentation

GBDT

Decision Tree:CART回归树

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值