在数据挖掘实践里面还有学术道路上,很多朋友都在追求炫目的模型。但实际上数据挖掘的成功与否,很大程度上取决于数据的预处理。当你的数据预处理得当的时候,一些很经典的模型(比如logistic regression)亦能得到非常优良的结果,反之,如果数据处理不得当,即使你花尽心思也没有任何模型能够挽救你数据的硬伤。
数据的预处理大致可以分为对因变量的处理和对自变量的处理,比如说在回归分析中,有时我们会对因变量y取对数,让数据看起来更加符合正态分布一些。而我们首期预处理版本只处理连续型数值自变量,第一个系统是提取基于各自变量的主成分(principal component),第二个系统则是对自变量进行比例转换(scaling)
只所以强调这两个自变量处理方法,是因为在我们过去的数据挖掘实践中,它们扮演着至关重要的作用,而且在绝大多数情况下,两者如果配合得当,其效果是非常优秀的。
首先,我们谈谈为什么要提取主成分。对于主成分,大家可以这样理解:要刻画美国股市的走势,您可以查阅所有股价的变动情况,也可以仅仅查阅NASDAQ指数或者S&P 500指数。如果说股价是原始数据,而NASDAQ指数或者s&p 500就是这些原始数据推导出来的主成分(事实上,NASDAQ指数的计算公式与主成分的计算公式是不同的,但是二者的思想是相通的)。在这个例子中,很明显,作为主成分的NASDAQ指数是股价的一个总结或者说数据的简化,但它却比单个的股价更易于分析。
从比较理论的角度说,在数据挖掘里面有一个所谓“高维诅咒”(high dimensionality curse),比较宽泛的定义上来说,高为诅咒的意思是随着自变量数目的增加,模型的复杂度也在增加(比如说刻画人工神经网络复杂度的vapnik-chernovenkis维度是相关网络所有参数的总和),而复杂度越高,在其他情况等同的条件下,模型的实用性则会下降,所以我们应该尽量使用简单的模型 (这是哲学里面所谓的occam' razor的重要体现)因此我们需要尽量控制自变量个数,而利用提取主成分的方式来减少自变量个数,是很好的一个方法。
从更严格的意义来说,高维诅咒特指自变量个数大于样本数的情况。在这种情况下,经典的模型拟合将会产生很多的问题。比如说传统的回归模型中的 估计回归参数所需的(X'X)的逆将不复存在。所以人们往往会通过提取主成分的方式来降维(dimension reduction)
进一步说,在实际的数据分析中,数据的各自变量往往不是独立的,比如在预测身体状况的实例中,‘身高’与‘体重’两个自变量并非是独立的,这种现象统计学上称为multicolinearity. 值得注意的是,multicolinearity本身蕴含着丰富的信息,并不是恶魔,但是如果忽视掉它而硬套传统的分析方法,比如用最小二乘法求线性回归方程的参数,那么则会出现参数估计严重不稳定等一系列副作用。而主成分的算法保证了各主成分之间是相互独立的,因此当有multicolinearity存在的时候,提取主成分能够让模型参数估计稳定可靠。
综上所述,适当地提取主成分对于构建模型,和解释模型在很多时候是有益的。但是,大家要注意的是,主成分的提取非常依赖各自变量的变动情况(比如自变量的标准差standard deviation)。而当一个自变量的数量级是10000,而另一个自变量的数量级是0.01的时候,第一个自变量的标准差将大大大于第二个自变量的标准差. 在这种情况下,主成分的构建过程将被第一个自变量主宰,而蕴含在第二个自变量中的信息也无法体现在主成分中。因此,在实践中,大家在提取主成分前往往会进行比例转换,一般包含去中心化(demean)与比例转换( scaling)两部分。大家可以理解为重新为每个自变量赋予新的权重,让每个自变量的信息都能反映在主成分的构建过程中。其中 Pareto scaling相对比较温和的转换方法,即还在一定程度上凸显高标准差的自变量的作用,而univariance scaling则比较激烈,每一个自变量几乎变得同样重要。
对于主成分与比例转换的理论我们无法展开讨论,而在我们的系统中,您只需设定您需要提取的成分个数 同时选择比例转换的方法就可以了。一般来说,每个主成分中蕴含的原始数据的信息是急速递减的,普通情况下2~5个主成分就能满足分析需要。考虑到避免过度拟合的关系(见我们上一篇日志),我们建议在实际获得数据前预设需要提取的主成分的个数,我们推荐3或者5.
您可以访问我们的网址
www.foam-buffalo.com试用最新的云端数据挖掘系统