(转)降维与特征选择
机器学习数据分析(分类)的常见步骤:
1、预处理:把数据处理成一些有意义的特征,这一步的目的主要是为了降维。
2、建模:这部分主要是建立模型(通常是曲线的拟合),为分类器搭建一个可能的边界。
3、分类器处理:根据模型把数据分类,并进行数据结论的预测。
本文讲的主要是数据的预处理(降维)。

machine learning的终极目标就是为了预测,当然预测前我们要对数据进行training。通常我们不会拿原始数据来训练,为什么呐?可能有些人觉得原始信息包含了样本最丰富的信息,没有经过任何处理的raw data能最完整表达样本,这个观点没有错。但是用raw data来直接训练的话,有一个问题就是我们设计的分类器在训练集上会得到很好的performance,但在测试集上的performance却变得非常差。这就是过拟合(overfitting)的问题。用raw data直接训练还有一个问题就是原始维度太高,耗时长。
解决过拟合的问题就要求我们找出raw data中差异性最大的那些特征,这样才能保证分类器在测试集有好的performance。所以通常我们都是要对原始数据进行特征提取的。提取特征的算法根据元数据类型的不同而不同,这里说下时间序列特征提取,参看:http://www.doc88.com/p-7199887004197.html,特征提取后还需要通过降维和特征选择来降低特征的维度,降维包括线性和非线性降维,降维用的最多是PCA。
下面说说降维和特征选择的区别:
降维本质上是从一个维度空间映射到另一个维度空间,特征的多少别没有减少,当然在映射的过程中特征值也会相应的变化。举个例子,现在的特征是1000维,我们想要把它降到500维。降维的过程就是找个一个从1000维映射到500维的映射关系。原始数据中的1000个特征,每一个都对应着降维后的500维空间中的一个值。假设原始特征中有个特征的值是9,那么降维后对应的值可能是3。
特征选择就是单纯地从提取到的所有特征中选择部分特征作为训练集特征,特征在选择前和选择后不改变值,但是选择后的特征维数肯定比选择前小,毕竟我们只选择了其中的一部分特征。举个例子,现在的特征是1000维,现在我们要从这1000个特征中选择500个,那个这500个特征的值就跟对应的原始特征中那500个特征值是完全一样的。对于另个500个没有被选择到的特征就直接抛弃了。假设原始特征中有个特征的值是9,那么特征选择选到这个特征后它的值还是9,并没有改变。
PCA的理解:
举一个例子:小明开了家店铺,他每天在统计其店铺的访问量V和成交量D。可以发现,往往V多的时候,D通常也多。D少的时候,V通常也很少。可以猜到V和D是有种必然的联系,但又没有绝对的联系。此时小明如果想根据V、D来衡量这一天的价值,往往可以根据一些历史数据来计算出V、D的关联比。拍脑门说一个,如果关联比大于80%,那么可以取VD其中任意一个即可衡量当天价值。这样就达到了降维的效果。
当然降维并非只能在比如说2维数据V,D中选取其中的1维V作为特征值,它有可能是在V+D的情况下,使得对V, D的关联比最大。 但是PCA思想就是如此。简单点说:假设有x1、x2、x3…xn维数据,我们想把数据降到m维,我们可以根据这n维的历史数据,算出一个与x1…xn相关m维数据,使得这个m维数据对历史数据的关联比达到最大。
PCA的数据分析,请查看连接:https://cloud.tencent.com/developer/article/1005442