以什么姿势进入 DataMining 会少走弯路?

阅读数:1625 2016 年 5 月 11 日

话题:语言 & 开发架构

  • 画外音:看过身边花 1w+ 大洋报培训班,周末夜里坚持学习的同学;面过硕士、博士甚至留学交换生,但结果总不尽如人意;现如今堪比前端一样浑浊的算法领域,让人担忧。

  • 承认一点,每个人都在进步,每个人都走过弯路,曾几某时,自己也一腔热血的写过一篇文章,后来分享了出来 “神爱众人,于是带来 Python” 。目前来看,那篇文章写得并不好,感兴趣的可以去看看。

  • 前不久,给公司同事做算法培训时候,说了自己在算法领域的四点信仰,可以和看官一起分享:

信仰 1:不以具体业务场景出发,不考虑大数据并发实现的数据挖掘,都在耍流氓;

信仰 2:知其然,晓其所以然,万变不离其宗,必定变化莫测,这正是算法魅力;

信仰 3:在 DataMining 领域,不做两种人。一种是工具人,一种是研究者;

信仰 4:拥有健康、丰满的数据,业务场景建模已经成功 90% 以上了;

  • 余下的内容,也将对上面四点分别做阐述,附带案例说明:

学会考虑业务场景建模,多思考大数据并发下的实现:

案例 1:一些网络授课,每当提起分类算法,最常用的典型二分类是男性和女性判别

a. 普遍的讲解流程,介绍各种分类算法,DT、LR、NB 和 SVM等等;

b. 接下来,考虑用户一些基础的网站行为数据,平均访问时长、nick、浏览 page、每日 pv 等等;

c. 最后,带入数据,套用模型,个别还会考虑清洗数据,一切就 Over

一堂简单网络授课,也许不能面面俱到,

但也绝对不能错误的引导 DM(数据挖掘)的核心要领。比如:

让学习者认为算法是整个数据挖掘的核心?数据挖掘就是随便找到数据套用模型,甚至工具包就 OK 了?

很多很多不恰当的思想灌输,正是让现如今算法行业鱼龙混杂,我也不是批判者,也不是熬鸡汤人。我会这样简单去介绍,二分类场景下的男性和女性判别:

Step1:Where 在哪个行业下的用户性别判断的场景需求?(比如:电商行业)

Step2:Why 需要去分析用户性别?(现如今,在资金有限的情况下 [广告费,站外流量和短信等等],精准化营销的需求越来越强烈,同时用户体验也会是至关重要,如何做到千人千面?如何提高整个平台,或者商家店铺的成交转化率、用户回购率和用户粘度?甚至如何给每个用户展示他所想看到的宝贝详情页?这些的这些,都是需要对用户,乃至店铺、商品和品牌进行画像,构建标签体系,其中就包括用户性别!)

Step3:What 如何去分析用户性别?(在数据挖掘中,特征选取不当,模型构建不当,都会容易引起[欠拟合] 和 [过拟合],因此在电商行业的用户性别分析,首先明确一个概念区别(用户网站性别和用户线下性别),顾名思义,一个是用户真实性别,一个是用户在网站的行为性别,而真正对我们有意义的,当然是后者。因此,在考虑用户性别分析特征时,核心要素是考虑用户在平台购买过的类目行为(每款商品在设计之初,都会明确目标群体)。

但是,毕竟会存在很多用户是新用户,这也正是模型的冷启动问题。如果你认为算法是最厉害的,到这里,你会无能为力;但如果你够了解业务,了解数据,你会观察到用户的收货姓名(但,注意,经验表明,每一个电商购物用户,都可能会存在多个收货姓名 ? 甚至存在非姓名的收货姓名?剩下深入的细节,需要建模之处进行合理把控的)

Step4:When 什么时候去分析用户?(通过上面的分析,想必已经够清楚了,模型构建一定要场景化,也必然场景细分,也有就用户细分!这里主要分三类,a. 新用户,b. 购买行为数在一定范围内?c. 高频购买行为用户?

Step5:How 去分析用户性别?(整个二分类场景,模型被我放在最后,希望学习数据挖掘的同学,对于业务和算法的分量,要在心目中有分寸。这里会考虑冷启动模型、分类算法(比如朴素贝叶斯)和符号模型的组合。这里灌输一个思想:模型 != 单算法,而是由多算法 + 一系列规则逻辑组合而成)

[总结]:一堂课程,还是花了很多培训费,即使不能阐述太多,但我想,如果通过上述方式,会不会更恰当呢?

案例 2:很多学者不考虑大数据并发的实现,玩习惯性的单机版时间久了,很难走出这道坎。比如很多人用协同过滤,考虑过大数据量下大矩阵相乘的实现?

知其然,晓其所以然,万变不离其宗,必定变化莫测:

案例 3:很多使用算法,甚至数据清洗方式的同学,更多是将知道的方法组合在一起,认为这就是数据挖掘?

我想,这也许还是

网络课程给学习者带来的诟病吧!

因为课程上已经千篇一律的讲述了数据挖掘的流程体系,所以学习者都会这样做:

a. 业务场景需求出现:不假思索就采取能想到的特征变量;

b. 不考虑数据清洗,不考虑归一化,无量纲化处理,甚至异常和缺失值,就直接进入模型;

c. 不了解具体某一个算法的原理性,一味的用各种工具包,甚至扯上了 Spark,R,Mahout 和 python 等等,输入数据就 OK 了;

...... 很多很多,毕竟我不是批判者,我只是希望大家能够做一件正确的事,再正确做好这件事!

如果换做我,我会这样思考!

Step1:业务需求出现时,多向专业运营人员了解业务背景,结合自己理解,确定初步的特征变量,观察数据分布;

Step2:考虑异常值和缺失值处理(这些都是观察数据找到的思路),甚至结合数据分布,采取合适的无量纲化处理方式, 甚至一定程度上降维;

Step3:结合业务场景建模,用户群体细分,确定模型选择,以及所选算法,比如 NB(朴素贝叶斯)。

Step4:需要深入了解朴素贝叶斯的原理,知道优势和不足,甚至优化方向(比如:取 Log、加平滑曲线等)

[总结] 这里只是一个大概的思路,如果课堂时间允许情况下,用具体二分类(性别判别)的案例分析流程,这样学生能够领悟到更透彻。而不是一味的就那几步数据挖掘步骤!

在 DataMining 领域,不做两种人。一种是工具人,一种是研究者:

做数据挖掘,如果真正热爱这个行业,并希望落实想法,不推荐大家做以上两类人,工具人和研究者

[工具人]:面试过很多人,(这里谈离线批处理)基本都是 Python(很多面试者被豆瓣电影评分的案例害得不浅啊!),很多一味追潮流,也整一个 Spark 来调包,认为就是懂数据挖掘了,甚至 Mahout 和 R 等等;

PS:我曾经反问一位面试者,如果让你招人,你会愿意选择,只会用包,缺乏思考怎么去用?为什么这样用?甚至如何改进和组合的人? 显而易见,面试者的答案是不会招这样的人!

我这里不是批判工具如何不好,曾经大学,我也只是会用 Matlab、Spss,甚至 Lingo。毕业初期,也只是会用 Python 和 R 等。我主要说的是,优秀的模型,不单单是某一个算法能够解决的,其中还包括很多组合算法和逻辑规则。单独的使用工具,结合业务的个性化需求会得不到很好满足,甚至如果让你调优算法,一方面你缺乏算法原理的理解,另一方面,你修改源码的也会很费脑、费神啊!

[总结]:技术没什么吸引人的,它的魅力在于服务业务,通过业务发展来驱动技术提高。这里推荐 MapReduce!

[研究者] 这类人,不过多讨论,毕竟这个社会是需要这样一类人存在的,我也很佩服他们。 我前面说的前提是,如果真正热爱大数据下的数据挖掘,并落实想法,还是直接作为一个实践者吧!

拥有健康、丰满的数据,业务场景建模已经成功 90% 以上了

越到最后,阐述的理由会更少。因为,该说的都已经说了!只想劝各位数据挖掘爱好者、实践者或工作者.好的模型,不是用了如此 NB 的算法模型,而是优秀的泛化能力,而具备泛化能力的模型,缺乏良好的数据源,会是一棵长不大的树苗的;

Google 的阿法狗如此厉害,和它完备、真实和健康的数据源密不可分的!

本文已获作者授权转载,作者:汪榕,专注电商数据挖掘,数据化运营方面。

阅读原文


感谢杜小芳对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。