数据挖掘前世今生
数据模型很多时候就是一个类似Y=f(X)的函数,这个函数贯穿了模型从构思到建立,从调试再到最后落地应用的全部过程。
对模型而言,其中的规则和参数,最初是通过经验判断人为给出的。伴随着统计方法和技术的发展,在模型的建立过程中,也引入了统计分析的过程。更进一步地,随着计算机科学的发展,建模的过程,也被交给了机器来完成,因此数据挖掘也被用到了模型的建立中。
数据挖掘,是从大量数据中,挖掘出有价值信息的过程。在有的地方,数据挖掘也被成为是数据探矿,正如数据挖掘的英文data mining一样,从数据中挖掘有价值的知识,正如在矿山中采集钻石一般,不断去芜存精,不断发掘数据新的价值。数据挖掘是通过对数据不断的学习,从中发掘规律和信息的过程,因此也被称为统计学习或者是机器学习。对数据挖掘而言,其应用范围广泛,除了建模,在人工智能领域也有使用。
回到模型中,从经验判断到数据挖掘,建立模型的计算特征发生了极大的改变。
计算特征的发展
首先数据的维度开始从少变多,最初只有几个维度,到现在有上百个维度。数据的体量,即记录的条数也从少量到海量,从过去了百条规模到了现在亿条规模。伴随着数据获取的难度下降,数据的维度和记录数量会越来越多。在这种情况下,数据的处理过程也越来越复杂,从过去简单的几次加减计算得到结果,到了现在必须要经历上亿次的复杂运算。同时,伴随着计算性能的提升,对于从数据中提取信息而言,也从渐渐深入,过去只能发现一眼看出的浅表信息,如今可以不断去挖掘隐含的知识。
数据挖掘的基本思想
数据挖掘的别名机器学习和统计学习一样,数据挖掘的实质是通过计算机的计算能力在一堆数据中发掘出规律并加以利用的过程。因此对数据挖掘而言,就需要经历规则学习、规则验证和规则使用的过程。
数据挖掘的基本思想
规则学习又称为模型训练,在这个步骤中,有一个数据集将作为训练集。按照相关的算法和输出规则的要求,从训练集中筛选出需要使用的变量,并根据这些变量生成相关的规则。有的时候,是将过去已经发生的数据作为训练集,在对比已知的结果和输入的变量的过程中,以尽可能降低输出误差的原则,拟合出相应的模型。
当产生了规则后,就需要验证规则的效果和准确度,这个时候就需要引入验证集。验证集和训练集具有相同的格式,既包含了已知的结果也包含了输入的变量。与训练集不同的是,对验证集的应用是直接将规则应用于验证集中,去产生出相应的输出结果,并用输出的结果去对比实际情况,以来确定模型是否有效。如果有效的话,就可以在实际的场景中应用。如果效果不理想,则回头去调整模型
测试集是将模型在实际的场景中使用,是直接应用模型的步骤。在测试集中,只包含输入变量却没有像其他两个数据一样存在的已知结果。正因为结果未知,就需要用测试集通过模型去产生的输出的结果。这个输出结果,将在为结果产生以后进行验证,只要有效,模型就会一直使用下去。
 
数据挖掘的流程
数据挖掘与数据分析的流程相似,都是从数据中发现知识的过程,只不过由于数据体量和维度的原因,数据挖掘在计算上最大。
数据挖掘的流程
对数据挖掘而言,首先是进行数据获取,数据获取的来源很多,有系统中自行记录的数据,对这种数据只要导出即可,同时也有外来数据,比如网页爬取得数据,或者是购买的数据,这些数据需要按照分析系统的需求进行导入。
在完成了数据获取步骤后,就需要进行数据处理,数据处理即是处理数据中的缺失值,错误值以及异常值,按照相关的规则进行修正或者删除,同时在数据处理中也需要根据变脸之间的关系,产生出一系列的衍生变量。总而言之,数据处理的结果是可以进行分析的数据,所有数据在进行分析以前都需要完成数据处理的步骤。
如果数据在分布上存在较极端的情况,就需要经历数据平衡的不走。例如对于要输出的原始变量而言,存在及其少量的一种类别以及及其大量的另一种类别,就像有大量的0和少量的1一样,在这种情况下,就需要对数据进行平衡,通过复制1或者削减0的形式生成平衡数据集。
当完成数据平衡后,将会把数据处理的结果分出一部分作为验证集使用,如果数据平衡性好,那么剩下的部分作为训练集,如果平衡性不好,那么平衡数据集就会作为训练集使用。当有了训练集后,就按照相关的算法对训练集进行学习,从而产生出相关的规则和参数。当有了规则以后,就将产生的规则用在验证集中,通过对比已知结果和输出结果之间的误差情况,来判断是否通过。如果通过则在后面再测试集中使用,如果未通过,就通过数据平衡、参数调整,以及变量选择等手段重新调整规则,并再次进行验证,直到通过验证。
对于验证集验证的步骤而言,在无监督学习中没有这个步骤,当缠上规则后,就直接用于测试集。
数据挖掘周而复始
数据挖掘是一个周而复始的过程,在生成规则的过程中,不断地对模型进行调整,从而提升精度。同时也将多批次的历史数据引入到数据挖掘的过程中,进行多次的验证,从而在时间上保证模型的稳定性。
数据挖掘的模式
在数据挖掘中,对于规则的获取,存在三种方式,分别是监督学习,无监督学习和半监督学习,这三种方式都是通过从数据的统计学习来制定规则。
在一个数据挖掘问题中,变量可以分为自变量和因变量,规则是以自变量为输入,以因变量为输出的结果,由此对数据挖掘问题,就把自变量定义为X,把因变量定义为Y。
 
获取规则的方式,来源于对数据的统计学习
对于监督学习而言,训练集中包括了自变量X和因变量Y,通过对比X和Y的关系,得除相应的规则,同时再在验证集中,通过输入验证集的自变量X,借助规则得到因变量Y的预测值,再将Y的预测值与实际值进行对比,看是否可以将模型验证通过,如果通过了,就把只包含自变量X的测试集用于规则中,最终输出因变量Y的预测值。在监督学习中,因变量的实际值和预测值的对比,就起到监督的作用,在规则制定中需要尽量引导规则输出的结果向实际值靠拢。
对无监督学习而言,训练集中,就没有包含因变量Y,需要根据模型的目标,通过对自变量X的分析和对比来得出相关的规则,并能够产生合理的输出结果,即Y,在制定规则的过程中,需要有一些人为的原则对规则进行调整。当完成调整后,就可以把只包含自变量X的测试集放到规则中,去产生规则的结果Y。
对比监督学习和无监督学习,最大的区别就是,在制定规则的过程中,是否有Y用于引导规则的生成。监督学习中,有Y存在,生成规则过程中和生成规则时,也会对比Y的预测值和实际值。而在无监督学习中,就没有Y作为对比的标准,相应的规则都直接由X产生。
半监督学习,与监督学习类似,也需要因变量Y参与到规则生成和规则验证中去。但是在训练集只用只有一少部分的对象既有自变量X和因变量Y,还有大部分对象只包含了自变量X。因此在对半监督学习的规则生成中,需要有一些特殊的手段来处理只包含的自变量X的对象后,再生成相关的规则。在后面的验证和测试的流程都与监督学习一致。因而对于半监督学习,最重要的问题就是如何借助少量的因变量Y而产生出可以适用的规则。
数据挖掘的应用场景
数据挖掘应用的场景很多,通常有四种情况被广泛的使用。