评分卡系列(四):泛化误差估计和模型调参 (2)

通过观察整体方差的表达式,我们容易发现,若基模型不是弱模型,其方差相对较大,这将导致整体模型的方差很大,即无法达到防止过拟合的效果。因此,boosting框架中的基模型必须为弱模型。

因为基模型为弱模型,导致了每个基模型的准确度都不是很高(因为其在训练集上的准确度不高)。随着基模型数的增多,整体模型的期望值增加,更接近真实值,因此,整体模型的准确度提高。但是准确度一定会无限逼近于1吗?仍然并不一定,因为训练过程中准确度的提高的主要功臣是整体模型在训练集上的准确度提高,而随着训练的进行,整体模型的方差变大,导致防止过拟合的能力变弱,最终导致了准确度反而有所下降。

基于boosting框架的 Gradient Tree Boosting 模型中基模型也为树模型,同 Random Forrest,我们也可以对特征进行随机抽样来使基模型间的相关性降低,从而达到减少方差的效果。

2.3 总结一下:bagging & boosting

调参的最终目的在于:模型在训练集上的准确度和防止过拟合能力的大和谐!

使用模型的偏差和方差来描述其在训练集上的准确度和防止过拟合的能力

对于bagging来说,整体模型的偏差和基模型近似,随着训练的进行,整体模型的方差降低

对于boosting来说,整体模型的初始偏差较高,方差较低,随着训练的进行,整体模型的偏差降低(虽然也不幸地伴随着方差增高),当训练过度时,因方差增高,整体模型的准确度反而降低.

整体模型的偏差和方差与基模型的偏差和方差息息相关

三、常见分类模型及其参数介绍

本文介绍的都是 scikit-learn 中的模型。

3.1 逻辑回归模型

在scikit-learn中,与逻辑回归有关的主要是这3个类。

logisticRegression

LogisticRegressionCV

logistic_regression_path

其中LogisticRegression和LogisticRegressionCV的主要区别是LogisticRegressionCV使用了交叉验证来选择正则化系数C。而LogisticRegression需要自己每次指定一个正则化系数。另外logistic_regression_path类则比较特殊,它拟合数据后,不能直接来做预测,只能为拟合数据选择合适逻辑回归的系数和正则化系数,主要是用在模型选择的时候,一般情况用不到这个类,所以后面不再讲述logistic_regression_path类。

LogisticRegression 的参数使用如下:

class sklearn.linear_model.LogisticRegression(penalty='l2', dual=False, tol=0.0001, C=1.0, fit_intercept=True, intercept_scaling=1, class_weight=None, random_state=None, solver='liblinear', max_iter=100, multi_class='ovr', verbose=0, warm_start=False, n_jobs=1)

具体含义为:

评分卡系列(四):泛化误差估计和模型调参

3.2 集成学习模型

在scikit-learn中,与随机森林有关的有两个。

RandomForestClassifier(): A random forest classifier.

RandomForestRegressor(): A random forest regressor.

这里主要讲第一个,它的参数如下:

class sklearn.ensemble.RandomForestClassifier(n_estimators=10, criterion=’gini’, max_depth=None, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_features=’auto’, max_leaf_nodes=None, min_impurity_decrease=0.0, min_impurity_split=None, bootstrap=True, oob_score=False, n_jobs=1, random_state=None, verbose=0, warm_start=False, class_weight=None)

与GBDT有关的也是两个。

GradientBoostingClassifier([loss, …]): Gradient Boosting for classification.

GradientBoostingRegressor([loss, …]): Gradient Boosting for regression.

其中分类模型的参数如下:

class sklearn.ensemble.GradientBoostingClassifier(loss=’deviance’, learning_rate=0.1, n_estimators=100, subsample=1.0, criterion=’friedman_mse’, min_samples_split=2, min_samples_leaf=1, min_weight_fraction_leaf=0.0, max_depth=3, min_impurity_decrease=0.0, min_impurity_split=None, init=None, random_state=None, max_features=None, verbose=0, max_leaf_nodes=None, warm_start=False, presort=’auto’)

这两个模型参数的详细介绍如下:

评分卡系列(四):泛化误差估计和模型调参

在上一节我们对bagging和boosting两种集成学习技术的泛化误差估计有了初步的了解。Random Forest的子模型都拥有较低的偏差,整体模型的训练过程旨在降低方差,故其需要较少的子模型(n_estimators默认值为10)且子模型不为弱模型(max_depth的默认值为None),同时,降低子模型间的相关度可以起到减少整体模型的方差的效果(max_features的默认值为auto)。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzjwsg.html