一.集成学习方法:参考:https://www.jianshu.com/p/6c0a286020cb
二.GB的理解(就是用梯度下降的方法来解Boosting,所以叫GB,目标是求出boost的函数组合的最优解)
1.首先理解梯度下降
a.求解目标函数J(theta)的最优解,本质上是一轮一轮的求解w
b.这句话是对比理解的关键:
2.对比理解多轮迭代后的函数最优解
根据上述的梯度下降法的思路,对于模型的损失函数L(y,F(X)),为了能够求解出最优的函数F∗(X),首先,设置初始值为:
F0(X)=f0(X)
以函数F(X)作为一个整体,对于每一个样本X(i),都存在对应的函数值F(X(i))。与梯度下降法的更新过程一致,假设经过M代,得到最优的函数F∗(X)为
以函数F(X)作为一个整体,对于每一个样本X(i),都存在对应的函数值F(X(i))。与梯度下降法的更新过程一致,假设经过M代,得到最优的函数F∗(X)为:
这里要和梯度下降对比下,这里是反向思考:因为梯度下降是通过梯度下降的方法求出w参数值,最后就是经过了M轮迭代求出最优解w*. 这里的w是参数,同样的思想对比到函数F(x)上,将F(x)视为整体类似于w,最后通过多轮迭代求出F*(x)最优解
3.理解GB
由上图所示的Boosting方法中,最终的预测结果为b个学习器结果的合并:
由于上述是一个求解梯度的过程,因此也称为基于梯度的Boost方法,其具体过程如下所示
Loss函数选择,一般有对数和指数损失函数
也可参看https://pan.baidu.com/s/1slP4J1r,通过上面的算法,就能够求出boost的函数组合的最优解
三.理解DT
决策树,树生成算法(ID3,C4.5,CART)
CART(回归树:[启发式方法(即随机选择第j个变量和它的取值进行划分),遍历特征和各个特征的取值](最小二乘法,计算平方误差最小化来选择最终位置),分类树:[Gini系数])。
四.使用模型(总体分为Boost & CART分类树相关参数的调节)
sklearn地址:http://scikit-learn.org/stable/modules/generated/sklearn.ensemble.GradientBoostingClassifier.html#
中文辅助:http://blog.sina.com.cn/s/blog_62970c250102xg5j.html
loss:loss function to be optimized. ‘deviance’ refers to deviance (= logistic regression) for classification with probabilistic outputs. For loss ‘exponential’ gradient boosting recovers the AdaBoost algorithm.(损失函数的选择:GradientBoostingClassifier类的损失函数有对数似然损失函数"deviance"和指数损失函数"exponential"两个选项。默认值是对数似然损失函数"deviance")
learning_rate:learning rate shrinks the contribution of each tree by learning_rate. There is a trade-off between learning_rate and n_estimators.(我理解是各个基础模型,在梯度下降训练时的步长)
n_estimators:The number of boosting stages to perform. Gradient boosting is fairly robust to over-fitting so a large number usually results in better performance.(基础模型的数量,过多容易过拟合,在实际的调参过程中,常常将它和参数learning_rate一起来考虑)
max_depth:maximum depth of the individual regression estimators. The maximum depth limits the number of nodes in the tree. Tune this parameter for best performance; the best value depends on the interaction of the input variables(CART分类树的树深度,默认为3,如果样本量少不用设置,如果样本量大建议调整)
min_samples_split:The minimum number of samples required to split an internal node(树中各节点最小数量,如果大于这个值就需要继续划分子树)
min_samples_leaf:The minimum number of samples required to be at a leaf node(叶子节点最小数量,如果大于这个数就会和兄弟节点一起被剪支)
subsample:基础模型在训练的时候使用的样本数量,默认为1,全样本。如果样本量比较大,可以考虑部分样本
max_features:基础模型训练时候使用的feature数量
verbose:这个参数可以看每轮训练的结果
使用Kaggle上的Titanic项目(可以参考:https://www.jianshu.com/writer#/notebooks/28365911/notes/32040639),通过调参,最终输出模型的得分是9.652