数据结构论坛

注册

 

发新话题 回复该主题

11种数据降维算法,代码已开源 [复制链接]

1#
治疗白癜风用什么药好 http://disease.39.net/yldt/bjzkbdfyy/6160465.html
网上关于各种降维算法的资料参差不齐,同时大部分不提供源代码。这里有个GitHub项目整理了使用Python实现了11种经典的数据抽取(数据降维)算法,包括:PCA、LDA、MDS、LLE、TSNE等,并附有相关资料、展示效果;非常适合机器学习初学者和刚刚入坑数据挖掘的小伙伴。01为什么要进行数据降维?所谓降维,即用一组个数为d的向量Zi来代表个数为D的向量Xi所包含的有用信息,其中dD;通俗来讲,即将高维度下降至低维度;将高维数据下降为低维数据。通常,我们会发现大部分数据集的维度都会高达成百乃至上千,而经典的MNIST,其维度都是64。MNIST手写数字数据集但在实际应用中,我们所用到的有用信息却并不需要那么高的维度,而且每增加一维所需的样本个数呈指数级增长,这可能会直接带来极大的「维数灾难」;而数据降维就可以实现:

使得数据集更易使用

确保变量之间彼此独立

降低算法计算运算成本

去除噪音

一旦我们能够正确处理这些信息,正确有效地进行降维,这将大大有助于减少计算量,进而提高机器运作效率。而数据降维,也常应用于文本处理、人脸识别、图片识别、自然语言处理等领域。02数据降维原理往往高维空间的数据会出现分布稀疏的情况,所以在降维处理的过程中,我们通常会做一些数据删减,这些数据包括了冗余的数据、无效信息、重复表达内容等。例如:现有一张*的图,除去中心50*50的区域其它位置均为零值,这些为零的信息就可以归为无用信息;而对于对称图形而言,对称部分的信息则可以归为重复信息。因此,大部分经典降维技术也是基于这一内容而展开,其中降维方法又分为线性和非线性降维,非线性降维又分为基于核函数和基于特征值的方法。

线性降维方法:

PCA、ICALDA、LFA、LPP(LE的线性表示)

非线性降维方法:

基于核函数的非线性降维方法——KPCA、KICA、KDA基于特征值的非线性降维方法(流型学习)——ISOMAP、LLE、LE、LPP、LTSA、MVU哈尔滨工业大学计算机技术专业的在读硕士生Hucodr则整理了PCA、KPCA、LDA、MDS、ISOMAP、LLE、TSNE、AutoEncodr、FastICA、SVD、LE、LPP共12种经典的降维算法,并提供了相关资料、代码以及展示,下面将主要以PCA算法为例介绍降维算法具体操作。0主成分分析(PCA)降维算法PCA是一种基于从高维空间映射到低维空间的映射方法,也是最基础的无监督降维算法,其目标是向数据变化最大的方向投影,或者说向重构误差最小化的方向投影。它由KarlParson在年提出,属于线性降维方法。与PCA相关的原理通常被称为最大方差理论或最小误差理论。这两者目标一致,但过程侧重点则不同。最大方差理论降维原理将一组N维向量降为K维(K大于0,小于N),其目标是选择K个单位正交基,各字段两两间COV(X,Y)为0,而字段的方差则尽可能大。因此,最大方差即使得投影数据的方差被最大化,在这过程中,我们需要找到数据集Xmxn的最佳的投影空间Wnxk、协方差矩阵等,其算法流程为:

算法输入:数据集Xmxn;

按列计算数据集X的均值Xman,然后令Xnw=X?Xman;

求解矩阵Xnw的协方差矩阵,并将其记为Cov;

计算协方差矩阵COv的特征值和相应的特征向量;

将特征值按照从大到小的排序,选择其中最大的k个,然后将其对应的k个特征向量分别作为列向量组成特征向量矩阵Wnxk;

计算XnwW,即将数据集Xnw投影到选取的特征向量上,这样就得到了我们需要的已经降维的数据集XnwW。

最小误差理论降维原理而最小误差则是使得平均投影代价最小的线性投影,这一过程中,我们则需要找到的是平方错误评价函数J0(x0)等参数。详细步骤可参考《从零开始实现主成分分析(PCA)算法》:
分享 转发
TOP
发新话题 回复该主题