01
什么是数据挖掘
数据挖掘(Data Mining)应该是一门大家都听说过,但又不太容易说清楚的课程。在数据科学领域,乃至在更大的计算机科学领域,数据挖掘就好比山东蓝翔,大家不一定都知道挖掘机要怎么开,但一定都知道挖掘机技术到底哪家强。
不过,知名度高也未必全是好事,尤其是啤酒尿布的故事太经典,反而会让大家以为这活很“高端”,离自己太远,不会用也用不上。其实,很多人未必学过数据挖掘,甚至可能没有听过这四个字,但实际已经早就开始在进行数据挖掘。譬如说股民。
很多人说今年的行情很有希望,要去学炒股。学炒股就是学股市中的数据挖掘,流派很多,譬如说技术分析流,认为K线图或者其他什么图,和股市后市走势关系密切;价值投资流则认为,通过一整套考察公司的指标体系,才能更好地推测股票的未来价值;当然也有一些旁门左道,譬如说门口大妈流,就是看到门口卖菜的大妈开始谈论股票的时候,说明行情就见顶了,要赶紧抽身。不管你钟情哪种方法,所要做的事都非常类似,就是把从各种地方收集的信息,也就是“数据”,加以整理分析,挖掘出和你关心的对象的目标关系。
这样的例子还有很多,譬如数据挖掘非常非常常用的异常检测,别看这词挺学术,我举个例子大家肯定就知道了,体检。虽然这是个枸杞配啤酒的朋克养身时代,不过预防疾病还得靠体检。但是,体检的结果是一堆的指标项,是数值,但数值本身是不会告诉你身体有没啥毛病,得首先有一个标准区间,然后发现指标异常,接着还要建立指标和疾病之间的关联关系,完成了这些前期工作,最后才能通过体检告诉你身体是不是还能再战五百年。这些前期工作就是数据挖掘。说回我们的老本行计算机,异常就更多了,譬如说WEB日志,经常需要进行异常检测从而发现网络入侵。
这都是数据挖掘。不是按某本名叫《数据挖掘》的书的某某方法依样画葫芦才叫数据挖掘,正好相反,是大家在各种数据挖掘的实践中形成了一些方法和工具,大家都觉得很好用,研究人员就加以收集整理,理清条理形成体系,才最终诞生了“数据挖掘”这门课。
02
数据挖掘和机器学习、模式识别
当你真的开始去学数据挖掘,遇到的第一个问题很可能是犯迷糊。数据科学领域有三朵金花,分别是数据挖掘、机器学习和模式识别,而数据挖掘的知识体系,和同样非常热门的机器学习以及模式识别有很高的重合度,那种感觉,不是在同一赛道有三名选手,而更像是在三条赛道看到了同一名选手。当然,就我的意见,这三个名词究竟存在怎样的我心中有你你心中有Ta的复杂三角关系,其实一点也不影响学习,毕竟有位红帽白须的老爷爷曾经说过,小孩子才做选择,成年人当然是全都学。三角关系越是复杂,要学的内容越是分不清你我,总的学习成本反而会更低。
但是,问题确实存在,不管看着有多像,但毕竟是有三个词,加上“到底该学哪个”这类的问题常年盘踞提问排行榜,这里我还是想尝试先回答。首先要说的是,数据挖掘、机器学习和模式识别三者并不存在什么无法逾越的鸿沟,经常出现一个算法到处客串的情况,边界越来越模糊已经是肉眼可见的大趋势。就核心内容来看,机器学习主要是工具集,数据挖掘和模式识别,则是这套工具集的两块用武之地,所以,在学习数据挖掘和模式识别的课上,你不用意外,无论选用什么教材,肯定都会看到非常多机器学习的老面孔。
再说模式识别。模式识别的重点在于两个字,识别,所以一般的应用形式都叫XX识别,譬如说现在大家都很熟的人脸识别,往大了说就是图像识别。除了图像,模式识别也研究其它各种数据形式,譬如音频类的语音识别,以及文本类的自然语言识别,当然,现在更习惯称之为自然语言理解。
最后回到我们今天的主角,数据挖掘。在写作时,我很想找到一条对数据挖掘的形式化定义,让大家能有一些具象的感觉,翻了很多资料,最后也只能宣告放弃。不过,这些资料虽然没有,我姑且取个交集,结论大概是所谓的数据挖掘,就是在各种数据之中,通过一定的方法和工具,挖掘发现感兴趣的知识。
归结来说,数据挖掘就是要解决三个问题,去哪挖、挖什么和怎么挖。下面我们就分三个部分分别介绍,数据挖掘是怎