首页 > 代码库 > 多特征数据预处理的一种尝试
多特征数据预处理的一种尝试
在一个实例中,有近60个特征,上千组数据样本。考虑到数据受噪声污染可能比较严重,希望能首先筛除部分不合理数据,也就是仅采用高度集中区域的数据。那么,问题就是,如何找到数据高度集中区域。找到数据密集区,数据之间的规律性更强,更利于接下来的识别。
首先考虑到的就是抽样,或者美其名曰蒙特卡洛抽样。这是一种正向问题解决方法,对于复杂问题往往有意想不到的效果。但是,此处有近60个特征,若每个特征分x个区间,总区间就是x^60,计算机根本无法解决。
那么,退一步,首先找到样本点在每个特征上的分布,找到最集中的区域,再合并,是否可行呢?事实上,每个特征的集中区域,并不一定是同时考虑多个特征的密集区。从二维投影到一维,会把另一个变量对应的各区间累积起来,并不要求在另一变量上的分布如何。
换个思路,从样本点出发是否可行呢?找到每个样本点周围一定范围内的样本点数目,样本点数目最大的那个对应的样本点,就是样本密集区的中心。需要计算各样本点相互之间的距离,会有n(n-1)/2个数据,显然增长的比较慢一点。如果样本点数据过多,仍然难以实现。
在寻找密集区的时候,是否可以降低样本点数目?如果样本的分布具有一定规律,那么如果随机抽样,如果抽样数目较多,将逼近样本的分布规律。此处寻找样本密集区,并不是非常强的要求,似乎可行。
小结一下,可以采用两步,首先对数据二次抽样,再计算任一样本点周边一定范围内样本点数目,最大者对应的样本点就是密集区的近似中心。为了提高精度,可以采用更多的样本,仅考虑任一样本点相对密集区内样本点的距离,再次比较一定范围内样本数目,从而提高样本点中心的精度。
找到中心之后,新数据的分类,就可以采用k近邻法。也可以训练神经网络、SVM,找到边界,再用于分类。
多特征数据预处理的一种尝试