1.1 数据挖掘简介
数据挖掘旨在让计算机根据已有数据做出决策。决策可以是预测明天的天气、拦截垃圾邮件、检测网站的语言,或者在约会网站上发现新的恋爱对象。数据挖掘方面的应用已经有很多,新的应用也在源源不断地出现。
数据挖掘涉及算法、统计学、工程学、最优化理论和计算机科学相关领域的知识。除此之外,我们还会用到语言学、神经科学、城市规划等其他领域的概念或知识。要想充分发挥数据挖掘的威力,通常需要在算法中整合这些属于特定领域的知识。
虽然数据挖掘相关应用的实现细节可能千差万别,但是从较高的层次看,它们往往大同小异。数据挖掘的第一步一般是创建数据集,数据集能够描述真实世界的某一方面。数据集主要包括以下两个部分。
❑ 表示真实世界中物体的样本。样本可以是一本书,一张照片,一个动物,一个人或是其他任何物体。
❑ 描述数据集中样本的特征。特征可以是长度、单词频率、腿的数量、创建时间等。
接下来是调整算法。每种数据挖掘算法都有参数,它们或者是算法自身包含的,或者是使用者添加的。这些参数会影响算法的具体决策。
举个简单的例子,我们希望计算机能够把人按照个子高矮分成两大类。我们首先采集数据,得到包含每个人身高的一组数据,以及对他们高矮的判断。
接下来要做的就是调整我们的算法。作为一个简单的算法,如果身高高于x,我们就认为这个人是高个子,否则,他就属于矮个子。我们的算法要过一遍数据,确定x的最佳值。对于上面的数据集,x比较合理的值为170cm。任何高于170cm的人就被归到高个子一类中,其余则为矮个子。
在上面这个数据集中,特征显而易见为身高。因为我们想知道人们的高矮,所以采集了他们的身高数据。抽取特征是数据挖掘过程的一个重要环节。本书后面的章节中会介绍从数据集中抽取区分度高的特征的方法。特征抽取往往需要对相关领域有着深入的理解,或至少需要多次试错。
本书中使用Python语言介绍数据挖掘。出于讲解的需要,为了保证代码、流程的清晰易懂,我们有时候跳过了能够提升算法速度、效果的细节,没有采用最优方案。