10行代码搞定支付宝年度账单,竟然连我都看懂了

2018-01-05 清风徐来 海豚学研社 海豚学研社

文 | 清风徐来

海豚原创 第095



先说几句:


第一,此文有利于你在朋友圈装逼,建议坚持读完。


第二,不要看到“代码”俩字就觉得烧脑想绕道。了解风哥的老铁们都知道,风哥最擅长的就是深入浅出、通俗易懂地把事情讲清楚。机会难得。


第三,读完此文的收获:人工智能so easy,简直就是玩儿美图秀秀的节奏。


好,进入正题。



01


先回顾下支付宝今年的年度账单要做的事情,就是:根据用户在支付宝的消费和资金往来记录,预测每个用户的风格。


用人工智能的话来说,就是给每个用户打一个“标签”。


比如,风哥的标签就是“值得”。



大家都知道,马爸爸掌握着剁手党们的海量数据,通过这些数据来猜测用户的风格,并不是什么难事。


比如说,矮大紧同学经常在淘宝的花费是“火车票/机票”,那么就可以给他贴一个“远方”的标签;


吴晓波老师经常在淘宝的花费是“书籍类/艺术类”,那么就可以给他贴一个“才华”的标签。


这都好理解。就好比马爸爸知道女人们买的内衣尺寸,就能推测她们每个人胸的大小,基本八九不离十。


但有个问题是,“风格”这种事情,太模糊,有讲不清楚的地方。比如说,


到底剁手多少“火车票/机票”才算“远方”?


到底剁手多少“书籍类/艺术类”才算“才华”?


即使马爸爸拍脑袋定义好规则,很快就会发现还有巨量的剁手党既不买“火车票/机票”,也不买“书籍类/艺术类”,怎么办?


于是,马爸爸就继续拍脑袋定义了“颜值正义”、“潮”、“旺”……等等一系列标签。


但标签再多,总还有大量剁手党会不符合这些规则,无法被贴上标签。要知道,剁手党是数以亿计的差异个体,每个人的姿势千差万别,这样定义下去,无法穷尽。


况且,随着定义的标签越来越多,会出现新的问题:很多剁手党可能会同时符合多个标准,那到底该给他归在哪个风格类别呢?


可见,面对上亿的人,


要定义一系列的标签规则,既要对所有人一个都不能少地归类,还要让每个人不重复地归到唯一的类别中去,几乎是不可能完成的任务……

(逻辑上讲,这叫符合MECE原则。)


这事情,不像女人的内衣,就是A~F(还是H?)这么几个尺码,胸大胸小的标签规则,是很容易定义清楚的。


所以,先定义规则,再给每个用户打标签的方法,在支付宝这个case上是走不通的。



02


那么,问题来了。支付宝是怎么做到的?


这就要说到人工智能,以及人工智能里一个高逼格的技术:机器学习。


机器学习里面有一种无监督学习的算法——聚类算法,就能完美地解决这个问题。


讲“聚类算法”前,要先跟零基础的老铁们科普下3个新词汇:


“机器学习”、“有监督学习”和“无监督学习”


机器学习,通俗地讲,就是在不需要人类教授它规则的情况下,机器自己就能找到规则,把事情帮你给办了的智能技术。


在这个支付宝case里,就是,你不需要告诉机器如何给剁手党分类的规则(如前所述,你自己都已经讲不清楚了……),它就能帮你把类给分好了。


厉不厉害,聪不聪明,机不机智?


所以,“机器学习”这种技术,能让机器学到人类都不见得知道的东西,这正是人工智能最让人可怕的地方。这个话题,我们留着以后可以好好单讲。


回过来讲机器学习里面的两个重要概念,“有监督学习”和“无监督学习”。它们的区别在于:给到机器的数据本身,是否已经带有类别标记。


什么意思呢?


比如说,我给到机器一堆这样的数据:

(注意,给到机器的不是分类的规则,而是数据,原始数据!)


A君有100万身家,算富人,

B君有1万身家,算穷人,

C君有2000万身家,算富人

……


让机器去学习,然后问这个机器,说有个叫马爸爸的,他身家227亿美元,他应该归在“富人类”还是“穷人类”。


机器经过吭哧吭哧的计算,把答案告诉你了,这个过程,就叫“有监督学习”。


也就是说,我给你的原始数据——在这里是每一个人的信息里,已经包含了他属于那个类别的信息,然后,让机器去学习(发现并总结)归类的规则,然后去对一个新给到的信息(这里的马爸爸)做归类。


那么,什么是“无监督学习”呢?


比如说,这一次,我们给到机器的原始数据是这样的:


A君有100万身家,

B君有1万身家,

C君有2000万身家

……


也就是说,只有每个人的名字和身家信息,没有属于哪一类的信息。


我们把这么一堆数据扔给机器,然后说,你帮我把里面的人分成两类,然后告诉我,现在有个叫马爸爸的人,身家227亿美元,他该属于哪一类。


机器帮你解这道题的过程,就是“无监督学习”。


好了,说到这里,脑子快的老铁应该已经想到了,支付宝的这个case,马爸爸的数据库里只有用户的消费信息,并没有每个用户属于那种风格的类别信息。如果要让机器来归类的话,那么就是属于“无监督学习”。


那么,机器具体是如何通过“无监督学习”来对用户归类的呢?


这就要讲另外一个概念:无监督学习的聚类问题。



03


我们现在面临的情形是酱紫的:


我把一堆剁手党的支付宝消费数据扔给机器,然后,也说不清楚该怎么给他们分类,然后两手一摊说,听说你会,你来帮我分类好了,把所有的剁手党都能归入到一个不会重复的唯一类别里面去就好了。


这事情,放在公司里,员工会以为老板是在给小鞋穿呢。好在,AI不懂这些。


关键是,它还真能搞定。


我们来看看这是个怎样的一个过程。


先来看丢过来的数据:



表格里的每一行,对应一个剁手党的信息,用人工智能的专业术语来讲,叫做一个“样本”(sample);每一列对应一个种类的消费,用人工智能的专业术语来讲,叫做一个“特征”(feature)


当然,马爸爸的真实数据表格会有更多的sample和feature,这里在不影响讨论的前提下,简化了一下。


那么,我们怎么让机器来完成这个人类无法完成的任务呢?


前方会出现程序代码,老铁请勿惊慌。代码只是一种语言,有我这个翻译官帮你稍微这么解释一下下,你就都会明白。

(有编程基础的老铁,可直接看代码,跳过我的灰字解释部分。)


通过代码,我们就能和机器对话,这个过程,是这样的:


第一步,先导入强悍的AI第三方包:



【解释】

从(from)sklearn.cluster这个机器学习包中,导入(import)numpy这个数据处理包。


这个数据包,就相当于是一个智能小机器人,由于我后面还会请它出来做事,为了方便,我给他取了一个简短的昵称,叫np。


然后,也调用(import)np机器人里面的“聚类”算法功能(MeanShift),一会儿都会用到。


这里面,sklearn是一个机器学习的程序包,你就当是在手机里下载安装了一个美图秀秀的App。


numpy是做数据处理的程序包,MeanShift是这个包里面可以处理“聚类问题”的一个功能模块。


你就当在美图秀秀这个App里加入了“一键美颜”的功能模块。


你看,你也能读懂机器的语言了呢。一个赛艇!


第二步,把上述表格读入X:



【解释】

这里略微加快进度,不再做逐句翻译。解释下就是:


把一张叫X的数据表格输入给np这个智能机器人,告诉它,接下来就是要对X这个数据表格做“聚类”处理。


这个过程,就相当于你把某一张照片输入到了美图秀秀App中,告诉它我想要美化的,就是X这张照片。


第三步,训练一下这个机器人:



【解释】

这几句什么意思呢?


请智能机器人np,用它的“聚类”功能模块(MeanShift),帮我把那上亿个剁手党数据(X)做聚类处理。


这里面,有个参数0.8,需要人为设定,简单说来,就是在“一键美颜”之前,你可以去调整的一个参数。


这个参数越小,出来的相片越精致(分类越细致);参数越大,出来的相片越朦胧(分类越笼统)。


这个,由支付宝产品经理说了算。


第四步,取得每个样本的分类结果:



【解释】

这就是一键生成,输出结果的意思。


智能机器人np会按照它自己琢磨出来的归类规则,输出每一个剁手党的归类结果。


输出的结果,大致是这个样子:



所以,这个过程,总结一下就是:


安装美图秀秀App→导入“一键美化”功能包→输入要美化的照片→一键生成美化后的结果。


哦不,应该是:


安装机器学习包→导入“一键聚类”功能包→输入要聚类的数据表→一键生成聚类后的结果。


这个配方是不是很熟悉?easy不easy?方便不方便?



04


其实,就这么10行代码,给上亿人归类的事情,就这么愉快地搞定了!


当然,到这里,机器只是帮你对所有剁手党“不重复地”做了归类,每一类的标签还只是,类别1、类别2、类别3……


也就是说,剧本里的人物还只叫路人甲、路人乙、路人丙……


这显然还不够带劲。


接下来,全宇宙无敌的支付宝产品经理,就启动了他强大的右脑,去分析每一类别人群的典型特征,然后,给他们的类别起一个名字。


这里面的关键是:既文艺又讨喜。


比如,发现某类别剁手党的共同特征是消费了很多“火车票/机票”,那就给他们起个名字,叫“远方”;


发现某类别剁手党的共同特征是消费了很多“书籍类/艺术类”商品,就给他们起个名字,叫“才华”;


如果同时在“服装”、“电子产品”、“数码”都消费很多,标签的名字就叫“潮”吧。


……


这些个名字,就是最后大家看到的全部标签:



所以说,网上盛传的这个段子,其实是有道理的……




05


到这里,跟大家解释了,用机器学习给支付宝用户归类和贴标签的原理和步骤。


有心的老铁可能会问,


用“聚类”这个方法解决模糊归类的问题,我理解了。但这里面的核心就是:那个被你叫做np的智能机器人,它里面直接就有“聚类”这个数据处理功能啊,本质上是它在做这个复杂的数据处理工作。


没错。现在人工智能的应用软件,就已经发展到那么方便的程度。只是你还不知道。


就好比,以前要修个图,你得会用Photoshop啊,得把里面的每个细节功能都掌握啊。现在有美图秀秀了,功能打包,一键完成。直接傻瓜式,任何人都能上手!


所以说,支付宝晒账单的这个事情,看似牛逼看似复杂,其实,用10行代码就能搞定。


所谓的人工智能,就那么简单,连你都看明白了,不是吗?


(不管你到底有没有看明白,要记得转发朋友圈,逼格时刻不容错过~)



上一篇:事情总是没进展?你只是没扔出那颗骰子!

猜你喜欢:你的害怕,其实源自于你的无知



  赞赏 



长按识别以下二维码赞赏




- End -



作者清风徐来,清华学霸,原中大MBA教授,投资达人,学数学的文艺狗,成功的连续创业者。

现为「海豚学研社」社长。



>>> 更多福利 <<<


马上关注「海豚学研社」

回复“50”即可获得

社长送你的《创富思维50则》

回复“报名”即可获取

《比特币课》免费听课资格


MORE | 更多精彩文章





戳阅读原文,查看往期。