我对数据挖掘和机器学习是新手,从去年 7 月份在 Amazon 才开始接触,而且还是因为工作需要被动接触的,以前都没有接触过,做的是需求预测机器学习相关的。后来,到了淘宝后,自己凭兴趣主动地做了几个月的和用户地址相关数据挖掘上的工作,有一些浅薄的心得。下面这篇文章主要是我做为一个新人仅从事数据方面技术不到 10 个月的一些心得,也许对你有用,也许很傻,不管怎么样,欢迎指教和讨论。
另外,注明一下,这篇文章的标题模仿了一个美剧《权力的游戏:冰与火之歌》。在数据的世界里,我们看到了很多很牛,很强大也很有趣的案例。但是,数据就像一个王座一样,像征着一种权力和征服,但登上去的路途一样令人胆颤。
数据挖掘中的三种角色
在 Amazon 里从事机器学习的工作时,我注意到了 Amazon 玩数据的三种角色。
我相信其它公司的做数据挖掘或是机器学习的也就这三种工作,或者说这三种人,对于我来说,
数据的质量
目前所流行的 Buzz Word——大数据是相当误导人的。在我眼中,数据不分大小,只分好坏。
在处理数据的过程中,我第一个感受最大的就是数据质量。下面我分几个案例来说明:
案例一:数据的标准
在 Amazon 里,所有的商品都有一个唯一的 ID,叫 ASIN——Amazon Single Identify Number,这个 ID 是用来标识商品的唯一性的(来自于条形码)。也就是说,无论是你把商品描述成什么样,只要 ASIN 一样,这就是完完全全一模一样的商品。
这样,就不像淘宝一样,当你搜索一个 iPhone,你会出现一堆各种各样的 iPhone,有的叫“超值 iPhone”,有的叫“苹果 iPhone”,有的叫“智能手机 iPhone”,有的叫“iPhone 白色/黑色”……,这些同一个商品不同的描述是商家为了吸引用户。但是带来的问题有两点:
1)用户体验不好。以商品为中心的业务模型,对于消费者来说,体验明显好于以商家为中心的业务模型。
2)只要你不能正确读懂(识别)数据,你后面的什么算法,什么模型统统没用。
所以,只要你玩数据,你就会发现,如果数据的标准没有建立起来,干什么都没用。数据标准是数据质量的第一道关卡,没这个玩意,你就什么也别玩了。所谓数据的标准,为数据做唯一标识只是其中最最基础的一步,数据的标准还单单只是这个,更重要的是把数据的标准抽象成数学向量,没有数学向量,后面也无法挖掘。
所以,你会看到,洗数据的大量的工作就是在把杂乱无章的数据归并聚合,这就是在建立数据标准。这里面绝对少不了人肉的工作。无非就是:
另外,说一下 Amazon 的 ASIN,这个事从十多年前就开始了,我在 Amazon 的内网里看到的资料并没有说为什么搞了个这样一个 ID,我倒觉得这并不是因为 Amazon 因为玩数据发现必需建议个商品 ID,也许因为 Amazon 的业务模型就是设计成以“商品为中心”的。今天,这个 ASIN 依然有很多很多的问题,ASIN 一样不能完全保证商品就是一样的,ASIN 不一样也不代表商品不一样,不过 90% 以上的商品是保证的。Amazon 有专门的团队 Category Team,里面有很多业务人员天天都在拼命地在对 ASIN 的数据进行更正。
案例二:数据的准确
用户地址是我从事过数据分析的另一个事情。我还记得当时看到那数以亿计的用户地址的数据的那种兴奋。但是随后我就兴奋不起来了。因为地址是用户自己填写的,这里面有很多的坑,都不是很容易做的。
第一个是假/错地址,因为有的商家作弊或是用户做测试。所以地址是错的,
第二个是真地址,但是因为用户写的不标准,所以很难处理,比如:
这样的例子多得不能再多了。可见数据如果不准确,会增加你处理的难度。有个比喻非常好,玩数据的就像是在挖金矿一样,如果含金量高,那么,挖掘的难度就小,也就容易出效果,如果含金量低,那么挖掘的难度就大,效果就差。
上面,我给了两个案例,旨在说明——
1)数据没有大小之分,只有含金量大的数据和垃圾量大的数据之分。
2)数据清洗是一件多么重要的工作,这也是一件人肉工作量很大的工作。
所以,这个工作最好是在数据产生的时候就一点一滴的完成。
有一个观点:如果数据准确度在 60% 的时候,你干出来的事,一定会被用户骂!如果数据准确度在 80% 左右,那么用户会说,还不错!只有数据准确度到了 90% 的时候,用户才会觉得真牛B。但是从数据准确度从 80% 到 90% 要付出的成本要比 60% 到 80% 的付出大得多得多。大多数据的数据挖掘团队都会止步于 70% 这个地方。因为,再往后,这就是一件相当累的活。
数据的业务场景
我不知道有多少数据挖掘团队真正意识到了业务场景和数据挖掘的重要关系?我们需要知道,根本不可能做出能够满足所有业务的数据挖掘和分析模型。
推荐音乐视频,和电子商务中的推荐商品的场景完全不一样。电商中,只要你买了一个东西没有退货,那么,有很大的概率我可以相信你是喜欢这个东西的,然后,对于音乐和视频,你完全不能通过用户听了这首歌或是看了这个视频就武断地觉得用户是喜欢这首歌和这个视频的,所以,我们可以看到,推荐算法在不同的业务场景下的实现难度也完全不一样。
说到推荐算法,你是不是和我一样,有时候会对推荐有一种感觉——推荐就是一种按不同维度的排序的算法。我个人以为,就提一下推荐这个东西在某些业务场景下是比较 Tricky 的,比如,推荐有两种(不是按用户关系和按物品关系这两种),
推荐有时并不是民主投票,而是专业用户或资深玩家的建议;推荐有时并不是推荐流行的,而是推荐新鲜而我不知道的。你可以看到,不同的业务场景,不同的产品形态下的玩法可能完全不一样,
另外,就算是对于同一个电子商务来说,书、手机和服装的业务形态完全不一样。我之前在 Amazon 做 Demand Forecasting(用户需求预测)——通过历史数据来预测用户未来的需求。
对于需求的预测,我发现,长期在这个行业中打拼的人的预测是最准的,什么机器学习都是浮云。机器学习只有在你要面对的是成千上万种不同商品和品类的时候才会有意义。
数据挖掘不是人工智能,而且差得还太远。不要觉得数据挖掘什么事都能干,找到一个合适的业务场景和产品形态,比什么都重要。
数据的分析结果
我看到很多的玩大数据的,基本上干的是数据统计的事,从多个不同的维度来统计数据的表现。最简单最常见的统计就是像网站统计这样的事。比如:PV 是多少,UV 是多少,来路是哪里,浏览器、操作系统、地理、搜索引擎的分布,等等,等等。
唠叨一句,千万不要以为,你一天有十几个T的日志就是数据了,也不要以为你会用 Hadoop/MapReduce 分析一下日志,这就是数据挖掘了,说得难听一点,你在做的只不过是一个统计的工作。那几个T的 Raw Data,基本上来说没什么意义,只能叫日志,连数据都算不上,只有你统计出来的这些数据才是有点意义的,才能叫数据。
当一个用户在面对着自己网店的数据的时候,比如:每千人有 5 个人下单,有 65% 的访客是男的,18-24 岁的人群有 30%,等等。甚至你给出了,你打败了 40% 同类型商家的这样的数据。作为一个商户,面对这些数据时,大多数人的表现是完全不知道自己能干什么?是把网站改得更男性一点,还是让年轻人更喜欢一点?完全不知道所措。
只要你去看一看,你会发现,好些好些的数据分析出来的结果,看上去似乎不错,但是其实完全不知道下一步该干什么?
所以,我觉得,数据分析的结果并不仅仅只是把数据呈现出来,而更应该关注的是通过这些数据后面可以干什么?如果看了数据分析的结果后并不知道可以干什么,那么这个数据分析是失败的。
总结
综上所述,下面是我觉得数据挖掘或机器学习最重要的东西:
1)数据的质量。分为数据的标准和数据的准确。数据中的杂音要尽量地排除掉。为了数据的质量,大量人肉的工作少不了。
2)数据的业务场景。我们不可能做所有场景下的来,所以,业务场景和产品形态很重要,我个人感觉业务场景越窄越好。
3)数据的分析结果,要让人能看得懂,知道接下来要干什么,而不是为了数据而数据。
搞数据挖掘的人很多,但成功的案例却不多(相比起大量的尝试来说),就目前而言,我似乎觉得目前的数据挖掘的技术是一种过渡技术,还在摸索阶段。另外,好些数据挖掘的团队搞得业务不业务,技术不技术的,为其中的技术人员感到惋惜……
不好意思,我只给出了问题,没有建议,这也说明数据分析中有很多的机会……
最后,还要提的一个是“数据中的个人隐私问题”,这似乎就像那些有悖伦理的黑魔法一样,你要成功就得把自己变得黑暗。是的,数据就像一个王座一样,像征着一种权力和征服,但登上去的路途一样令人胆颤。