Press "Enter" to skip to content

技术专栏丨心累,感觉不可能教会妈妈建模和调优了

本站内容均来自兴趣收集,如不慎侵害的您的相关权益,请留言告知,我们将尽快删除.谢谢.

前言

 

大家还记得上一篇 《如何教妈妈学会数据准备》 吗?这一期我们将试图教会妈妈级小白选手建立模型并进行调优。

 

在准备完毕的数据上,我们再添上「seed1」这一列,如下图所示。「seed1」列中的数值1表示该id是我们已知的目标用户,0表示不是我们的目标用户。

 

注意:在这里我们略为粗暴地将未知特质用户全部打上了0标签,这是出于建模需要,希望读者能够与真实情景进行区分)。

 

 图:聚合数据的前5行示意

 

之后我们将用 XGBoost 开展建模。 XGBoost 被视为机器学习的一大利器,如果你还不了解它,就去看它的官方文档吧。这是关于 XGBoost 最好的介绍文档,简洁明了,图文并茂: https://xgboost.readthedocs.io/en/latest/index.html

 

我们需要对上述聚合数据进行切分,一份作为训练集,另一份作为测试集。

 

之所以要这样做,是为了防止过拟合。所谓的过拟合,即下面的左图。在过拟合时,训练所得的模型与样本数据几乎可以完全贴合。这样,模型就成为这一份样本数据的「量身定制」了,它只适用于这一份数据,泛化能力很差。

 

因此,为了防止出现左图的情形,我们从样本数据中抽出一部分(而不是全部)来做训练,得到模型后,再用另一部分数据来评估模型好坏。如果在训练集上得到的模型能够很好地对测试集进行预测,那幺这就是一个令人满意的模型。

 

 

我们可以用以下语句实现数据集的拆分。

 

图:拆分为训练集与测试集

 

训练模型

 

这个步骤听起来令人害怕,实际上只有一行。

 

01

 

方法一 import xgboost

 

训练的核心语句是

 

1xgb.train(param, dtrain, num_round, evallist)

 

括号中是我们填入的参数,分别是xgboost的超级参数、数据集、训练次数、评估结果。在赋值过程我们把设定赋予参数,然后运行训练语句即可。

 

1)超级参数。 在实际运行的代码中,我们没有特意设置超级参数,而是选择了默认值(param = {})。读者可以参考官方文档进行超级参数的设定。

 

 

图:部分超级参数

 

2)数据集。 之前我们已经切分好了数据集,但还不够。在这一步我们要把数据准备为 xgboost 可识别的 DMatrix 格式。

 

3)训练次数。

 

4)评估结果。 用一些评估方法(如均方误差根rmse、auc等)对模型在训练集和测试集上的表现进行评价。

 

 

从上图可以看出,随着训练次数的增多,均方误差根rmse在下降,说明模型的表现在变好。

 

如果你对模型现在的效果足够满意,就可以用当前的模型进行预测了。这意味着我们的任务已经接近尾声!

 

 图:用训练完成的模型进行预测

 

02

 

方法二 from xgboost.sklearn

import XGBClassifier

 

XGBClassifier是xgboost的sklearn包,同样的,方法二中的核心代码也只有一句:

 

1XGBClassifier().fit(X_train, y_train)

 

在这里我们直接使用了默认设定,读者也可按照官方文档说明自行设定,参数跟方法一中大体一致,具体见下(感到眼花缭乱的现在可以跳过不看):

 

class xgboost.XGBClassifier(max_depth=3, learning_rate=0.1, n_estimators=100, silent=True, objective='binary:logistic', booster='gbtree', n_jobs=1, nthread=None, gamma=0, min_child_weight=1, max_delta_step=0, subsample=1, colsample_bytree=1, colsample_bylevel=1, reg_alpha=0, reg_lambda=1, scale_pos_weight=1, base_score=0.5, random_state=0, seed=None, missing=None, **kwargs)

 

中文版参数详解:

https://blog.csdn.net/qq_36603091/article/details/80592157

 

图:训练模型

 

下图中的 bst 就是我们训练所得的模型,拿来预测就可以了。

 

 

虽然看起来已经完成了任务,但其实模型还有优化的空间,可以按照下文中的步骤调参。

 

原文地址:

 

Complete Guide to Parameter Tuning in XGBoost (with codes in Python)

 

译文地址:

 

https://blog.csdn.net/u010657489/article/details/51952785

 

好了!最后具体的调优就交给读者们自己完成。以上就是lookalike 任务的全部内容,下一期我们再见!

 

本文转自:TalkingData数据学堂

 

封面图来源于网络,如有侵权,请联系删除

 

Be First to Comment

发表评论

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