【一】 Bagging(算法的一个流派,自助聚合)
【有监督】现在常用的,也最需要掌握的,分类算法
Leverage unstable base learners that are weak because of overfitting,每个弱分类器都是 overfitting (过拟合) 的
- 提出背景:为了减少 bias,我们可以学习一棵很大很深的 决策树,但是决策树很容易 过拟合;而随机划分数据来训练模型,过拟合的决策树产生不一样的预测结果,variance 很大
- 特点:各个弱学习器之间 没有 依赖关系
- 随机采样(bootsrap):从我们的训练集里面采集固定个数的样本,但是每采集一个样本后,都将样本放回。也就是说,之前采集到的样本在放回后有可能继续被采集到。对于我们的 Bagging 算法,一般会随机采集和训练集样本数 m 一样个数的样本。这样得到的采样集和训练集样本的个数相同,但是样本内容不同。如果我们对有 m 个样本训练集做 T 次的随机采样,则由于随机性,T个采样集各不相同
- 当 m 趋于无穷大时,在 bagging 的每轮 随机采样 中,训练集中大约有 36.8% 的数据没有被采样集采集中
- But,有个问题
【二】 Random Forest(随机森林)
- 随机选择 训练样本子集 & 特征子集
- 提出目的:我们希望每一棵树模型都不一样,存在差异,弱相关
- RF 使用了 CART 决策树 作为弱学习器,GBDT(梯度提升决策树)也是
- RF 随机选择节点上的 一部分 样本特征(从 N 个中选 K 个),然后从中选择 一个最优 的特征来做决策树的左右子树划分 - 增强模型的 泛化能力
- K 越小,模型越健壮,但对于训练集的拟合程度会变差(模型的 方差 减小,偏倚 增大)
【三】 RF 代码使用(Sklearn)
from sklearn.ensemble import RandomForestClassifier
'''
:param (参数)
n_estimators:指定随即森林中树的个数
'''
rf = RandomForestClassifier(n_estimators=20)
'''
:object (方法)
rf.fit(X,y): LR 是有监督的机器学习算法
rf.predict(X): 返回数据 X 预测的类别
'''