数据挖掘就是从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中,提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。听起来比较抽象,我们举个例子。傍晚小街路面上沁出微雨后的湿润,和煦的细风吹来,抬头看看天边的晚霞,嗯,明天又是一个好天气。走到水果摊旁,挑了个根蒂蜷缩、敲起来声音浊响的青绿西瓜,心里期待着享受这个好瓜。由路面微湿、微风、晚霞得出明天是个好天气。根蒂蜷缩、敲声浊响、色泽青绿推断出这是个好瓜,显然,我们是根据以往的经验来对未来或未知的事物做出预测。人可以根据经验对未来进行预测,那么机器能帮我们做这些吗?能,这就是数据挖掘。“经验”通常以“数据”的形式存在,数据挖掘的任务就是从历史数据(之前挑瓜的经历,注意是经历还不是经验)中挖掘出有用的“知识”,也就是所谓“模型”(现在就形成经验了),在面对新情况时(未抛开的瓜)模型就可以用来预测(是不是好瓜)。用高中生能理解的数学语言来讲,数据挖掘建模任务的本质就是,根据一些历史已有的、从输入空间 X(如 {[色泽青绿;根蒂蜷缩;敲声浊响],[色泽乌黑;根蒂蜷缩;敲声沉闷],[色泽浅白;根蒂硬挺;敲声清脆]} )到输出空间 Y(如 {好瓜,坏瓜,坏瓜})的对应,找出一个函数 f,来描述这个对应关系,这个函数就是我们要的模型。有了模型之后再做预测就简单了,也就是拿一套新 x,用这个函数算一个 y 出来就完了。那么,模型又是怎么建立出来,也就是这个函数是怎么找出来的呢?想想如何让一个人拥有判断瓜好坏的能力呢?需要用一批瓜来练习,获取剖开前的特征(色泽、根蒂、敲声等),然后再剖开它看好坏。久而久之,这个人就能学会用剖开前瓜的特征来判断瓜的好坏了。朴素地想,用来练习的瓜越多,能够获得的经验也就越丰富,以后的判断也就会越准确。用机器做数据挖掘是一样的道理,我们需要使用历史数据(用来练习的瓜)来建立模型,而建模过程也被称为训练或学习,这些历史数据称为训练数据集。训练好了模型后,好像发现了数据的某种规律,就可以拿来做预测了。也就是说,数据挖掘是用来做预测的,而要做到这种预测,需要有足够多已经有结果的历史数据为基础。
数据挖掘能干什么
那么,这种预测技术如何应用在我们的生产销售过程中呢?以贷款业务为例,金融机构要做风险控制,防止坏帐,就要在放贷前知道这个贷款人将来不能按时还款的风险,从而决定是否放贷以及贷款利率。要做到这件事,我们要有一定数量的历史数据,也就是以前贷款人及贷款业务的各种信息,比如贷款人的收入水平、受教育程度、居住地区、信用历史、负债率等等可能会影响违约率的因素,还有贷款本身的金额、期限、利率等等。然后就可以使用数据挖掘技术建立模型来寻找用户及贷款的各种信息 X 和是否会发生违约 Y 之间的关系。建好的模型可以用来预测,及时发现高风险用户。需要说明的,数据挖掘模型的预测并不能保证 100% 准确(比如再有经验的瓜农也有选错瓜的时候),如果只有一例目标(比如只有一笔贷款)需要预测时,那就没有意义了。但通常,我们都会需要预测很多例目标,这样即使不是每一例都能预测正确,但能保证一定的准确率,这仍然是很有意义的。对于贷款业务,模型找出来的高风险客户未必都是真的,但准确率只要足够高,仍然能够有效的防范风险。数据挖掘技术的应用非常广泛,比如工业领域中可以根据历史生产数据来预测良品情况,从而改进工艺参数降低不良率;畜牧业可以使用数据挖掘技术根据测量牲畜体温来预测牲畜是否生病,从而提前防治;医院也可以使用历史医疗记录基于数据挖掘技术找出关联规律,帮助医生更好地诊断疾病。总之,只要是有数据有场景几乎都会考虑用数据挖掘解决某些问题。