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

栏目: 数据库 · 发布时间: 5年前

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

前言

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

在准备完毕的数据上,我们再添上「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 就是我们训练所得的模型,拿来预测就可以了。

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

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

原文地址:

https://www.analyticsvidhya.com/blog/2016/03/complete-guide-parameter-tuning-xgboost-with-codes-python/

译文地址:

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

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

本文转自:TalkingData数据学堂

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

推荐阅读:

如果看了这些还不懂线性代数,你就来锤我(上)

如果看了这些还不懂线性代数,你就来捶我和广坤(下)

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

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

好看就给点下呗 :point_down::point_down:


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

算法与数据结构(第二版)

算法与数据结构(第二版)

傅清祥、王晓东 / 电子工业出版社 / 2001-8-1 / 34.00

本书是《计算机学科教学计划1993》的配套教材之一。它覆盖了《计算机学科教学计划1993》中开列的关于算法与数据结构主科目的所有知识单元。其主要内容有:算法与数据结构的概念、抽象数据类型(ADT)、基于序列的ADT(如表,栈,队列和串等)。反映层次关系的ADT(如树,堆和各种平衡树等)、关于集合的ADT(如字典,优先队列和共查集等)、算法设计的策略与技巧、排序与选择算法、图的算法、问题的计算复杂性一起来看看 《算法与数据结构(第二版)》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

URL 编码/解码
URL 编码/解码

URL 编码/解码

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具