bagging思路
Bagging不仅对集成模型的预测结果,同时采用一定的采样方式来影响基模型,保证基模型可以服从一定的假设。
bagging的原理
bagging的核心是基于bootstrap概念的,即是有放回的进行采样。单个样本集合,每次都有放回,K次则得到K个样本。
Bagging方法之所以有效,是因为每个模型都是在略微不同的训练数据集上拟合完成的,这
又使得每个基模型之间存在略微的差异,使每个基模型拥有略微不同的训练能力。引用
bagging实例
- sklearn提供了
BaggingRegressor
和BaggingClassfier
;这里介绍分类问题上的应用。
通俗的介绍熵就是概率的代数运算,或者说是某个样本概率的函数定义
,信息熵: H ( Y ) = − ∑ p i l o g p i H(Y)=-\sum p_ilogp_i H(Y)=−∑pilogpi
p i p_i pi表示某类样本出现的概率。条件熵: H ( Y ∣ X ) = − ∑ x ∈ X p ( X = x ) H ( Y ∣ X = x ) H(Y|X)=-\sum_{x\in X}p(X=x)H(Y|X=x) H(Y∣X)=−x∈X∑p(X=x)H(Y∣X=x)其中x为用于划分特征的取值。信息增益为信息熵与条件熵的差值: I G = H ( Y ) − G ( Y ∣ X ) IG = H(Y)-G(Y|X) IG=H(Y)−G(Y∣X)因为信息熵表示信息的不确定程度,那么信息增益越大,信息熵和该特征划分数据的条件熵差值越大,说明子样本”纯度“越高。
Gini指数也可用来衡量不纯度: G i n i = 1 − ∑ p i 2 Gini=1-\sum p_i^2 Gini=1−∑pi2
划分后的Gini指数: G i n i x = ∑ x ∈ X p ( X = x ) [ 1 − ∑ p i 2 ] Gini_x=\sum_{x\in X}p(X=x)[1-\sum p_i^2] Ginix=x∈X∑p(X=x)[1−∑pi2]
Bagging部分代码,详见DW_集成学习资料
from sklearn.ensemble import BaggingClassifier
model = BaggingClassifier()
#采用分层k-fold交叉验证来评估模型
cv = RepeatedStratifiedKFold(n_splites=10, n_repeats=3, random_state=1)
n_scores = cross_val_score(model, X, y, scoring='accuracy', cv=cv, n_jobs=-1, error_score='raise')