项目实操

性别预测-机器学习,Hadoop,Hive,MapReduce第三篇

基于手机app用户的性别预测3-构建模型

(特此声明,因代码需保密,所以在此仅提供方法做参考,望各位读者见谅)

4.构建模型,使用模型

这一节我们使用梯度提升树(GBDT)方法来进行训练集建模。

我们就来先讲一下梯度提升树到底好在哪里呢?因为对于此项目,我们选择了很多种方法,线性回归,逻辑回归,随机森林和梯度提升树。最终发现梯度提升树得分高,而且不那么过拟合。

GBDT作为集成学习的一个重要算法,在被提出之初就和SVM一起被认为是泛化能力较强的算法。具体而言,GDBT是一种迭代的决策树算法,它基于集成学习中的boosting思想,每次迭代都在减少残差的梯度方向新建立一颗决策树,迭代多少次就会生成多少颗决策树。其算法思想使其可以发现数据中有区分性的特征以及特征组合,业界中,Facebook使用其来自动发现有效的特征、特征组合,来作为LR模型中的特征,以提高 CTR预估(Click-Through Rate Prediction)的准确性。随后Kaggle竞赛也有实践此思路。

GBDT 主要结合回归树(Regression Decision Tree)和提升树(Boosting Decision Tree)的思想,并提出利用残差梯度来优化回归树的集成过程。 并且GBDT对正负样本比例不敏感,可以很好地完成我们的任务。

哈哈,原来GBDT的好处这么多,都建立起决策树啦,好兴奋,迫不及待想要使用它来施展它的功效!下面开始我们的算法吧!

1)首先,将原数据集划分为训练集和测试集,训练集:测试集=4:1;

2)获取其中的Train_X,Train_Y;Test_X,Test_Y;

3)训练梯度提升树模型传给model,其中参数设置,n_estimators(训练轮数)200次,learning_rate=0.1;

4)使用model训练train_x和train_y两部分;

5)使用训练到的规则对test_x进行预测,并用test_y对预测结果进行验证并输出得分;

6)绘制roc曲线。更直观地观察模型的拟合效果。

梯度提升树建模代码:

[cc lang=”python”]model = GradientBoostingClassifier(learning_rate=0.1,n_estimators=200,subsample=0.8)[/cc]

[cc lang=”python”]model.fit(train_x, train_y) #训练[/cc]

[cc lang=”python”]pred_y = model.predict_proba(test_x)[:,1] #概率[/cc]

下一节我们来讲如何绘制ROC曲线,进而更好的看到我们所选算法的拟合程度。

发表评论

电子邮件地址不会被公开。 必填项已用*标注