数据分析师所需的建模技能:机器学习入门

关于数分的招聘JD里,几乎都有“建模”两字的身影。尽管数分实际工作中用到机器学习的机会真的不多,但我觉得它仍是数分从业者所需的技能之一。工作中你可能会因此突破传统的分析思维,在求职中也可能成为自身的亮点。

对于初学者,可能听到机器学习需要线性代数、微积分、概率论、凸优化等数学知识就止步于此,但实际上只要掌握一些较初级的数学知识就能利用机器学习做点事了(比如打个算法比赛),作为同样零基础过来的我,在学习机器学习过程中遇到非常多的困难,一步步啃过来,目前也算入了个门,也能在一些算法比赛有些TOP1%的成绩,近期来重温下这块内容,也想输出点东西,希望能从较白话的方式和大家一起探讨什么是,机器学习。

什么是机器学习?

顾名思义,让机器有学习的能力。讲宽一点,是让机器通过“某种策略”学习“历史数据”后能够进行一定“预测”的能力。“某种策略”、“历史数据”、“预测”以及这里头N多的专有名词,我将以一个案例逐渐的呈现出来。

小王是某运营商的一名数据分析师,老板最近和他说:“小王啊,最近我们这个xx流量产品每月流失用户都挺多的,能不能帮忙想想办法。”小王思考良久,觉得假设我们能预测出下个月流失用户的名单,那我们是不是能提前对这批用户发发优惠、或者引导他们升级/变更其他流量产品去挽留他们呢?

既然思路有了,那就行动起来。


小王做的第一步:确定目标

目的:通过历史数据训练模型使得模型能够预测下个月的流失用户名单。

小王脑海里跳出机器学习的基本术语

标签:是我们要预测的事务,即简单线性回归中的y变量,在这个案例中,标签即是“下个月某用户是否会流失”。

监督学习:是训练带“标签”的数据去预测的机器学习任务。

无监督学习:是训练不带“标签”的数据去预测的机器学习任务,例聚类。

分类任务:是一种监督学习,机器学习任务的标签为离散型数据,比如本次案例,是否流失,流失为1,留存为0。

回归任务:是一种监督学习,机器学习任务的标签为连续值数据,例子:预测下个月的销售额。

回到本案例来,现在我们可以确定本次任务是一个监督学习里的分类任务,标签是“下个月某用户是否流失”

小王做的第二步:数据准备

数据准备阶段实际上是建模过程中最繁琐的阶段,经常需要去取几十上百张表的数据进行清洗、合并。这个阶段需要理清楚一个概念:数据集划分

当我们取历史数据给模型训练的时候,不是简单的把所有数据丢给模型,模型就能学习出预测的能力,我们往往需要将数据集进行划分:

1、训练集:用于丢给模型进行训练的数据集(一般为全数据60%)

2、验证集:用于优化模型的数据集(一般为全数据10%)

3、测试集:用于评估模型准确性的数据集(一般为全数据30%)

​回到本次案例,当前为2019年7月,我想预测8月的流失用户名单,我们应该尽可能多的拿历史数据,假设我们取了近半年(2019.1 - 2019.6)的数据。这时我们可以把目标细化为:通过“近四个月”的历史数据训练模型使得模型能够预测下个月的流失用户名单。(这个“近四个月”的时间粒度可根据实际情况调控,因为标签的时间粒度为1个月,所以建议训练集至少包含2个月的数据。)这时本次案例的数据集划分为:

1、训练集:2019.1 -2019.4的历史数据

2、验证集:2019.5 的历史数据

3、测试集:2019.6 的历史数据


小王做的第三步:模型训练与评估

小王目前已经将数据集准备好了,终于我们可以开始训练模型了,虽然目前机器学习相关的库已经比较成熟,基本把数据一扔就能出结果,但关于模型训练的一些些基本术语我认为还是要了解的。

1、损失:简单来说,损失就是模型预测的结果与真实结果的差异。看下图,以线性回归为例,蓝色为模型预测的结果,各个点为真实结果,那么损失就是各红线距离之和。

2、代价函数(也称损失函数):它是我们模型优化的一个方向,告诉模型往哪个方向不断迭代更新。以线性回归为例,假设真实结果为y,模型预测为predcition(x),那么它的代价函数为:

而我们优化的方向就是:模型预测的结果与实际的结果尽可能的吻合,即极可能的减少代价函数。

3、凸优化:一般代价函数是一个凸函数,尽可能的减少代价函数,即意味着我们要找到代价函数趋向于无穷小时的最优解,目前常用的方法有:梯度下降、牛顿法。

4、过拟合:上述一直在强调,代价函数要尽可能的小,但这个小也是有一定界限的,假设到达0,一般是不可取的。代价函数假设非常小,那它说明这个模型在评估的数据集表现得非常好,非常适配该训练集,因为模型过于适配训练集的数据,导致它一般是无法较准确的预测未来的数据,这种现象称为“过拟合”。

5、正则化:我们需要模型预测准确性较高,但又要防止模型过拟合,这咋办比较常用的方法,损失函数加一个正则项,目前常用的正则项有L1、L2正则。

6、泛化能力:指模型对未来数据的预测准确性。

7、模型评估:对于分类、回归、聚类任务的评估指标是不一致的,像上文提到的MSE,是回归的评估指标,下面说几个分类任务常用的评估指标:

7.1)准确性:模型预测的结果与实际结果是否符合。一般我们不用这个指标,以本次案例为例子,假设有1000个用户,只有10个用户为流失用户。模型预测结果为1000个用户都没有流失,那么它的准确性就是:990/1000 = 99%。几乎完全准确。但我所需要是输出这个10个流失用户,这个模型完全没做到,在业务上来看,这模型很糟糕。

7.2 ) 混淆矩阵:混淆矩阵主要涉及4个数值:TP,FP,FN,TN。用我们本次的案例去看看它们代表什么:

7.3 ) 召回率Recall:TP /( TP + FN)。在本案例

召回率= 模型预测为流失的并且真实情况也为流失的用户总数/ 真实流失的用户总数。

以上述例子来说。

召回率 = 0 / 10 = 0 

通过召回率就能说明这个模型很糟糕的结论。

7.4 ) 精确率Precision:精确率 = TP / (TP + FP)。在本案例

精确率= 模型预测为流失的并且真实情况也为流失的用户总数/ 模型预测为流失的用户总数。

以上述例子来说。

精确率 = 0 / 0 ,通过精确率也能说明这个模型很糟糕。

8、交叉验证:基本思想是将多次将原始数据进行分组,一部分作为训练集,一部分作为验证集去评估模型。以著名的K折交叉验证为例:

上图为5折交叉验证:

第一步:将数据集随机均匀的分为5份。

第二步:每次挑选其中一份作为验证集,其余作为训练集用于模型训练。

第三步:用验证集去评估模型得到metric,用模型去预测测试集得到pred

最后能得到5个metric,求和/5就是模型的评估结果,以及5份pred,回归任务求和/5就是测试集的预测结果。分类任务投出最多票数的类别作为测试集的预测结果。

一连串说了很多机器学习术语,现在回到案例来整合一下小王在模型训练及评估阶段做了些啥:

1、用2019.1 - 2019.4月的数据训练了某个分类模型。

2、选择recall和precision作为本次任务的评估指标。

3、用模型去预测训练集、验证集、以及测试集,并用评估指标这三次预测进行评估。

4、判断模型是否过拟合,如果训练集的得分明显高于验证集与测试集,则过拟合。

5、假设过拟合了,用加正则或者交叉验证的方法去避免过拟合。

6、最终输出recall和precision都符合业务标准的模型用于往后预测。

故事的结尾,小王通过这用户流失模型帮公司挽留了N个用户,用户流失率不断下降,走上了升职加薪的道路(雾)


本文作为机器学习入门,主要是简单介绍了机器学习的一些基本术语,其实每一块都大有文章。因为非科班出身,可能在理解上会有些出错,欢迎纠正。往后会输出一些机器学习常用的模型原理、调参经验以及建模案例细节,欢迎关注!

贴个思维导图总结:

参考资料:

1. google机器学习教程

2.《统计学习方法》​

感谢阅读!

一个记录会计到数据、算法路上所学的微信公众号:Dathon

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,222评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,455评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,720评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,568评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,696评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,879评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,028评论 3 409
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,773评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,220评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,550评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,697评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,360评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,002评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,782评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,010评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,433评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,587评论 2 350

推荐阅读更多精彩内容