在提升学习中,AdaBoost是串行计算的,随机森林是并行计算的。
AdaBoost(1.11.3),AdaBoost本身的入参比较简单。
AdaBoostClassifier
参数:
1、base_estimator : object, optional (default=DecisionTreeClassifier),基学习器。需要支持样本权重,以及适当的classes_和n_classes_属性。
2、n_estimators : integer, optional (default=50),boosting(提升)过程被终止的最大的估计器的数量。如果完全拟合,学习过程就会提前停止。
3、learning_rate : float, optional (default=1.),学习率。学习率通过learning_rate来减少每个类别的贡献。需要在learning_rate和n_estimators之间权衡。
4、algorithm:{‘SAMME’,‘SAMME.R’}, optional (default=‘SAMME.R’),如果选择‘SAMME.R’那么使用SAMME.R用作真正的提升算法。base_estimator必须支持计算类概率。如果选择‘SAMME’那么使用SAMME离散提升算法。SAMME.R通常比SAMME收敛速度快, 即用较少的迭代就可获得较低的测试误差。
5、random_state:int,RandomState instance or None, optional (default = None),随机数种子。
属性:
1、estimators_ : list of classifiers,拟合的子估计器的集合。
2、classes_ : array of shape = [n_classes],类的标签。
3、n_classes_ : int,类的数量。
4、estimator_weights_ : array of floats,在提升的总体效果中,每个估计器的权重。
5、estimator_errors_ : array of floats,在提升的总体效果中,每个估计器的分类误差。
6、feature_importances_ : array of shape = [n_features],如果基学习器支持的话,它表示每个特征的重要性。
方法:
1、decision_function(X),计算X的决策函数。
2、fit(X, y[, sample_weight]),拟合。
3、get_params([deep]),得到参数。
4、predict(X[, check_input]),预测。
5、predict_log_proba(X),预测输入样本X的对数概率。
6、predict_proba(X[, check_input]),预测输入样本X的概率。
7、score(X, y[, sample_weight]),返回给定测试数据和标签的平均精度。
8、set_params(**params),设置参数。
9、staged_decision_function(X),计算每个提升迭代的X的决策函数。
10、staged_predict(X),返回对X的阶段性预测。
11、staged_predict_proba(X),预测X的类概率。
12、staged_score(X, y[, sample_weight]),返回X,y的分阶段的分数。
在AdaBoost中要调节的参数其实不多,主要还是基学习器里面的参数。
1、n_estimators,基学习器的数量,适当增加基学习器的数量能提升acc,随后收敛,通常默认值已经收敛。(请保持默认)
2、learning_rate,学习率,对正确率影响非常大,请谨慎调节。
3、algorithm,算法的选择在一定程度上也会影响正确率,但是根据不同基学习器的选择,算法的选择也有所限制。
在更换基学习器的时候,发现,对于C-SVC和Nu-SVC,当我将之前做实验得到的最优正确率的参数代入其中的时候,不论我怎么修改AdaBoost的参数,正确率都不会发生改变且和基学习器的最优正确率相同。