数据挖掘系列篇(3):DM解决几类问题
数据挖掘作为一门科学进入国内已经有几年时间了,从过去之前的啤酒与尿布的案例到现在在BAT公司的应用普及开来,这几年DM已经越发的成熟,在大数据应用价值上发挥着重要的作用。宋代禅宗大师青原行思提出参禅的三重境界:“参禅之初,看山是山,看水是水;禅有悟时,看山不是山,看水不是水;禅中彻悟,看山仍然山,看水仍然是水。”
数据挖掘也是这样,初学数据挖掘的时候比较迷茫,看到山还是山,看到数据也只是表现的数据,流离于表面形态。行进之时,初悟一二,在了解了数据挖掘的基本技能和工具,在实践中做过几个案例,解决了不少问题之后能够对数据挖掘有一些自己的经验理解,能够看穿数据背后表露的一些现象和本质。而在历经无数case之后,遇到各种荆棘坎坷,又明白了数据的真谛,又要跳出数据的角度,面前的这座山还是原来的山,只是变得厚重了而已。
北美发达的商业交易市场,已不再是传统股票经纪人每天看财报,分析股指,买卖两三支股票就能高枕无忧的年头了。T+0的交易模式允许交易方在同一天买入和卖出,于是就产生了自动交易机,每秒钟执行上百万次的买卖交易,而这些交易的决策,完全是由机器智能实现的。因为交易笔数的增多,每笔交易的利润并不需要很大,整体也能产生巨大的盈利。甚至有公司利用纽约证交所到太平洋对岸的结算中心2ms的信息传输延迟,赚取了大量收入,这些高频交易,跟传统的金融分析已经间隔渐远,大数据技术成为重中之重。当美国一大批商学院在向信息界寻求力量,而中国的商学院尚处于学习美国以往模式,学生只懂现象不懂技术,此番培养的金融人才,必将很难适应市场,这是熊老师提出对国内“金融热”的大大担忧。而计算机行业,若有数据挖掘背景,将会有巨大的发展空间,不仅仅在金融界。
之前数云的段勇通过一本《深入浅出谈数据挖掘》讲述了数据挖掘主要解决分类、聚类、关联、预测这四类问题,介绍的角度也更多的是结合电信方面的案例。而现在随着电商、互联网金融的发展,这类问题的应用丰富了很多,但从本质角度来说还是分类、聚类、关联、预测等问题,其中分类问题应用的更多,特别是0/1问题。
今天计划的是通过数据挖掘解决的几类问题,重点介绍下电商和互联网金融的常见应用,而像关联、分类、聚类、预测这些基本的概念稍微一带而过,如果有什么不清楚的,可以私下再探讨具体的概念、定义、区别,以及围绕关联、聚类、分类、预测使用的哪些算法会重点介绍下,计划的是后面会通过python、r、sas、MATLAB再介绍下具体怎么用的。
1.分类VS预测
从人出生开始就遇到分类问题的学习,比如常问的电影里的那人是好人还是坏人,你是男性还是女性,我体重65kg是轻还是重,我的成绩是优/良/中/差,这些都属于分类的问题。结合我们具体的数据挖掘应用场景,常遇到:电商中你会不会买这个商品,你有没有看我这条广告,你算不算我的价值客户;互联网金融中这支股票算好还是坏,风险评估是高还是低,适合长期持有还是短期操作等。
还有一点,就是它和预测问题的区别。预测问题常见解决的是连续值预测,比如预测你25岁结婚,而不是25岁会不会结婚。预测你月底30号来充值话费,而非你月底会不会来充值话费。本身分类也是预测的一部分,算法层面应用会有些区别。
常见的分类主要是用LR、RF、GBDT、bayes等,预测方面回归分析、最小二乘法、时间序列等。
分类常见的为0/1问题的解决,所以LR、bayes这方面有一定的优势,会计算出分类结果的probability,具体实际在推哪些人群的时候可以自定义相应的probability和conclusion。
引用一段段勇老师分享的,可能很多人已经在关心数据挖掘方法是怎么预测P(X=1)这个问题的了,其实并不难。解决这类问题的一个大前提就是通过历史数据的收集,已经明确知道了某些用户的分类结果,如已经收集到了10000个用户的分类结果,其中7000个是属于“1”这类;3000个属于“0”这类。伴随着收集到分类结果的同时,还收集了这10000个用户的若干特征(指标、变量)。这样的数据集一般在数据挖掘中被称为训练集,顾名思义,分类预测的规则就是通过这个数据集训练出来的。训练的大概思路是这样的:对所有已经收集到的特征/变量分别进行分析,寻找与目标0/1变量相关的特征/变量,然后归纳出P(X=1)与筛选出来的相关特征/变量之间的关系(不同方法归纳出来的关系的表达方式是各不相同的,如回归的方法是通过函数关系式,决策树方法是通过规则集)。
看到上面这个解释,相信大家应该知道分类问题的基本情况,在分类问题算法上,重点会遇到两个注意点:feature selection & instance selection。这个会直接影响你在做分类算法上的max drawdown和accuracy ratio。而之前也有不少同学问道说怎么去选择feature和instance,其实这个取决于两点,1.你有哪些数据;2.经验判断。
举个例子,case为判断这个用户会不会使用交罚业务?
step1:find out接触交罚业务的历史用户,其中1定义为使用过,0定义为未使用;
step2:feature selection,选择和交罚相关的特征,比如你有没有车、经常自驾游、短期中期长期去过多少地方、有没有经常加油、平时驾驶速度等等。
step3:train model,evaluate the model。
step4:实测。
具体步骤大家可以拿python调下LR包应用下。
2.聚类
聚类主要解决的是在“物以类聚、人以群分”,比如以收入分群,高富帅VS矮丑穷;比如按职场分群,职场精英VS职场小白等等。
聚类的方法层出不穷,基于用户间彼此距离的长短来对用户进行聚类划分的方法依然是当前最流行的方法。大致的思路是这样的:首先确定选择哪些指标对用户进行聚类;然后在选择的指标上计算用户彼此间的距离,距离的计算公式很多,最常用的就是直线距离(把选择的指标当作维度、用户在每个指标下都有相应的取值,可以看作多维空间中的一个点,用户彼此间的距离就可理解为两者之间的直线距离。);最后聚类方法把彼此距离比较短的用户聚为一类,类与类之间的距离相对比较长。
常用的算法k-means、分层、FCM等。
3.关联
关联主要是在做用户场景推荐更多,结合他买过什么产品给他推荐相关联的产品。
涉及到的指标有三个:支持度support、置信度confidence、提升度lift。
假设有10000个人购买了产品,其中购买A产品的人是1000个,购买B产品的人是2000个,AB同时购买的人是800个。支持度指的是关联的产品(假定A产品和B产品关联)同时购买的人数占总人数的比例,即800/10000=8%,有8%的用户同时购买了A和B两个产品;置信度指的是在购买了一个产品之后购买另外一个产品的可能性,例如购买了A产品之后购买B产品的可信度=800/1000=80%,即80%的用户在购买了A产品之后会购买B产品;提升度就是在购买A产品这个条件下购买B产品的可能性与没有这个条件下购买B产品的可能性之比,没有任何条件下购买B产品可能性=2000/10000=20%,那么提升度=80%/20%=4。
常用到得算法apriori、FP-growth等。
有什么需要补充的欢迎大家给我留言,或者日后补充。
著作权归作者所有。
商业转载请联系作者获得授权,非商业转载请注明出处。
作者:宿痕
来源:知乎
转载请注明:数据分析 » 数据挖掘系列篇(3):DM解决几类问题