本文用一个完整的样例,给你介绍机器学习决策树分类的全过程。
Photo by Jaelynn Castillo on Unsplash
这周,我给新设立的「大数据管理与应用」专业一年级本科生授课。这是一门 5 名老师共同讲授的数据科学导论课程。我这一部分,讲了机器学习。
为了让同学们更好地理解机器学习的方法步骤,我用了一个分类应用的实际例子,让大家现场分组上机实践。
实践的环境,是百度飞桨 AI Studio 。翟羽佳老师率先使用后,推荐给了大伙儿。对于经典机器学习问题,这个免费云环境够用了,而且能保证所有学生的环境完全一致。这样避免了不同操作系统、不同平台安装软件包时候可能出现的千奇百怪问题,而且和样例对比运行结果,也更加方便。
为了演示操作步骤,避免现场联网可能出现的问题,我提前录制了一系列的视频。事实证明,这是很有必要的。因为当天显示器的连线有问题。好险。
教学效果不错。课后同学们纷纷跑过来跟我问问题,有的甚至都不是这节课上的内容。说明他们学习的兴趣被激发起来了。
既然代码、运行环境和视频教程都齐备,我决定把这次的课程内容,也分享给你,我亲爱的读者。
这个例子,最初来源自 Yuxi (Hayden) Liu 的《Python Machine Learning By Example》第三版。
这书不错,我在 Kindle 上面买了一本。可惜目前还没有见到中文译本。
提到买书,顺便说一句——双十一到了。
我的新书《数亦有道》在京东和拼多多都有不同幅度的优惠。优惠力度嘛,满减加上叠券,居然打到了五折以下。反正我自己是没忍住,又下单买了一批。如果你也想以这个价格买的话,请抓紧吧。京东电子版购买链接在这里。
本例中的数据来自于 Kaggle 竞赛平台。主题是广告点击预测。
广告这东西,你应该并不陌生。每天你浏览各种内容的时候,广告都会伴随你。
你也知道,用户并不一定会点击广告。而只有点击了广告,广告主的品牌才获得了曝光,流量主也才能获得收益。
所以广告主和流量主们,都很想了解哪些因素会影响广告的点击操作。这样才可以改进广告设计和投放目标。
这个数据集,就包含了一系列的真实记录,只不过做了匿名化处理。原始数据压缩后的大小是 1.12 GB,解压后更是达到了 6.31 GB。
为了便于教学的演示,我们进行了采样。采样数据体积缩小到 47 MB 。
请你点击这个链接,获得演示代码和云环境地址。注意这个链接的有效期,只有三天。请抓紧时间部署到自己的账号里,以免过期失效。
点击链接之后,你会看到这样的界面。
点击上图中的「运行一下」按钮。
运行环境选择默认的免费环境即可。
项目启动需要一点时间。
成功后点击进入
这就是一个 Jupyter Lab 的界面。点击左侧的 task.ipynb
。
你会看到,数据都已经准备好了。而且把数据所在的路径也都告诉了你。
下面请你根据以下提示,一步步自己尝试动手实践,完成这个机器学习案例的完整过程。
第一步,数据准备。
这部分主要进行以下几个事项:
- 读入数据;
- 查看数据框大小;
- 查看标记的分布
- 可视化分布
- 提取标记列
对应的视频在这里:
第二步,特征工程。
本部分主要步骤包括:
- 查看列名称
- 去掉不需要的特征列
- 构建特征矩阵
对应的视频在这里:
第三步,数据集划分。
数据集划分的目标,是把一个完整标注的集合(本例中 30 万条)划分为训练集和测试集。
这样一来,训练集帮助我们拟合构建模型,测试集当成给机器的考试。
关键在于,我们绝不能在训练阶段,让机器看到测试集的数据,否则就成了「作弊」。
这一部分的详细讲解,请查看《数亦有道》的 9.3 节。
注意这个例子里面,有个特殊之处。就是记录数据,是严格按照时间来排列的。那么在这里,能否用随机方式,抽取一定百分比的数据,作为训练集,剩下作为测试集呢?
这个问题,请你认真思考后,看下面的视频。
第四步,编码转换。
在我们使用的 Scikit-learn 平台上,决策树能够识别的特征,都是数字。换句话说,你扔给它一个字符串,它会摆摆手,告诉你「不认得」(报错)。
因而,我们需要确保输入数据类型全都变成数字。
怎么变成数字呢?这就需要编码(Encoding)。本例中使用的,是所谓的「独热编码」(One Hot Encoder)。
回顾一下,假设这里,有大洲的名称作为标签,都是字符串。那么我们可以把大洲的名称横向展开,然后把标签对比横向的名称列。这样,最多也只能有一个是 1,其余都是 0。
由此一来,非洲就用 “10000” 来表示,类似的,欧洲表示方法是 “00100”。更具体的讲解,请参考《数亦有道》的 7.2.4 节。
这一部分里,我们先查看各列的类型,然后做独热编码转换。
第五步,训练决策树模型。
第六步,预测和评价。
本部分包含以下步骤:
- 保存预测结果到 preds
- 评价模型指标
- 与随机模型对比
小结
本文用广告点击预测的决策树模型机器学习案例,给你讲解了分类模型应用的全流程。
回顾一下,我们主要讲解了以下步骤和相关的重要知识点。
- 数据准备
- 特征工程
- 数据集划分
- 编码转换
- 训练决策树模型
- 预测和评价
这个模型使用的数据是结构化的,因此在数据的准备和转换阶段,相对比较简单。然而麻雀虽小,五脏俱全。希望对你后续处理自己的数据集和科研任务,能有帮助。
祝学习进步。
延伸阅读
- 《数亦有道》的配套代码和数据资料已复制到国内云环境,你可以更方便下载了
- 如何高效学 Python?
- 如何用 Python 可视化《三国》人物与兵器出现频率?(视频教程)
- 学 Python ,能提升你的竞争力吗?
- Python 编程遇问题,文科生怎么办?
如果你觉得本文有用,请点赞。
如果本文可能对你的朋友有帮助,请转发给他们。
欢迎关注我的专栏「科研利器」,以便及时收到后续的更新内容。