Ensemble methods 组合模型的方式大致为四个:/bagging / boosting / voting / stacking ,此文主要简单叙述 bagging算法。
Bagging:
平行合奏:每个模型独立构建旨在减少方差,而不是偏差适用于高方差低偏差模型(复杂模型)基于树的方法的示例是随机森林,其开发完全生长的树(注意,RF修改生长的过程以减少树之间的相关性)WIKI百科: Bagging算法 (英语:Bootstrap aggregating,引导聚集算法),又称装袋算法,是机器学习领域的一种团体学习算法。最初由Leo Breiman于1994年提出。Bagging算法可与其他分类、回归算法结合,提高其准确率、稳定性的同时,通过降低结果的方差,避免过拟合的发生。
数学基础
图例描述
实现描述
在scikit-learn中, 参数 max_samples 和 max_features 控制子集的大小(在样本和特征方面) 参数 bootstrap 和 bootstrap_features 控制是否在有或没有替换的情况下绘制样本和特征。
Bagging又叫自助聚集,是一种根据均匀概率分布从数据中重复抽样(有放回)的技术。每个抽样生成的自助样本集上,训练一个基分类器;对训练过的分类器进行投票,将测试样本指派到得票最高的类中。每个自助样本集都和原数据一样大有放回抽样,一些样本可能在同一训练集中出现多次,一些可能被忽略。实例环境
sklearn + anconda + jupyter
实例步骤
数据:可以采用 datasets 的数据,在此作者使用的是自己整理的股票行情训练、测试数据归一化参数寻优可以使用GridSearch,在此不作赘述参数描述:
代码实现 import time import pandas as pd from pandas import Series,DataFrame from sklearn.ensemble import BaggingClassifier from sklearn.tree import DecisionTreeClassifier from sklearn.ensemble import AdaBoostClassifier from sklearn.model_selection import cross_val_score from sklearn import preprocessing from sklearn import datasets iris = datasets.load_iris() X,y = iris.data[:,1:3],iris.target start = time.clock() # 计时 min_max_scaler = preprocessing.MinMaxScaler() # 读取训练数据 并数据规整化 raw_data = pd.read_csv('train_data.csv') raw_datax = raw_data[:20000] X1_scaled = min_max_scaler.fit_transform(raw_datax.ix[:,3:7]) y1 = raw_datax['Y1'] y1 = list(y1) # 读取测试数据 并数据规整化 raw_datat = pd.read_csv('test_data.csv') raw_datatx = raw_datat[:10000] X1t_scaled = min_max_scaler.fit_transform(raw_datatx.ix[:,3:7]) y1t = raw_datatx['Y1'] y1t = list(y1t) print len(X1_scaled) print len(X1t_scaled) end = time.clock() print '运行时间:',end - start clf = DecisionTreeClassifier().fit(X1_scaled,y1) clfb = BaggingClassifier(base_estimator= DecisionTreeClassifier() ,max_samples=0.5,max_features=0.5).fit(X1_scaled,y1) predict = clf.predict(X1t_scaled) predictb = clfb.predict(X1t_scaled) print clf.score(X1t_scaled,y1t) print clfb.score(X1t_scaled,y1t) # print Series(predict).value_counts() # print Series(predictb).value_counts()1.运用注意点 2.优化方向点
资料参考:http://blog.csdn.net/qq_30189255/article/details/51532442
