zoukankan      html  css  js  c++  java
  • 机器学习算法——降维

    降维是机器学习中很重要的一种思想。在机器学习中经常会碰到一些高维的数据集,而在高维数据情形下会出现数据样本稀疏,距离计算等困难,这类问题是所有机器学习方法共同面临的严重问题,称之为“ 维度灾难 ”。另外在高维特征中容易出现特征之间的线性相关,这也就意味着有的特征是冗余存在的。基于这些问题,降维思想就出现了。当数据量比较大的时候,可以通过降纬的方式来处理,常见的降纬方法有主成分分析(PCA)、因子分析(factor analysis)、线性判别分析(LDA)、奇异值分解(SVD)。

    主成分分析的优缺点:

    优点:降低数据的复杂性,识别最重要的多个特征。

    缺点:不一定需要,且可能损失有用信息。

    适用数据类型:数值型数据。

    Principal Component Analysis(PCA)是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中表示,并期望在所投影的维度上数据的方差最大,以此使用较少的数据维度,同时保留住较多的原数据点的特性。
    通俗的理解,如果把所有的点都映射到一起,那么几乎所有的信息(如点和点之间的距离关系)都丢失了,而如果映射后方差尽可能的大,那么数据点则会分散开来,以此来保留更多的信息。可以证明,PCA是丢失原始数据信息最少的一种线性降维方式。(实际上就是最接近原始数据,但是PCA并不试图去探索数据内在结构)  
    使用decomposition库的PCA类选择特征的代码如下:
    1 from sklearn.decomposition import PCA
    2 #主成分分析法,返回降维后的数据
    3 #参数n_components为主成分数目
    4 PCA(n_components=2).fit_transform(iris.data)
    PCA追求的是在降维之后能够最大化保持数据的内在信息,并通过衡量在投影方向上的数据方差的大小来衡量该方向的重要性。但是这样投影以后对数据的区分作用并不大,反而可能使得数据点揉杂在一起无法区分。这也是PCA存在的最大一个问题,这导致使用PCA在很多情况下的分类效果并不好。

    Linear Discriminant Analysis (也有叫做Fisher Linear Discriminant)是一种有监督的(supervised)线性降维算法。与PCA保持数据信息不同,LDA是为了使得降维后的数据点尽可能地容易被区分!
    假设原始数据表示为X,(m*n矩阵,m是维度,n是sample的数量)
    既然是线性的,那么就是希望找到映射向量a, 使得 a‘X后的数据点能够保持以下两种性质:
    1、同类的数据点尽可能的接近(within class)
    2、不同类的数据点尽可能的分开(between class)
    使用lda库的LDA类选择特征的代码如下:
    1 from sklearn.lda import LDA
    2 #线性判别分析法,返回降维后的数据
    3 #参数n_components为降维后的维数
    4 LDA(n_components=2).fit_transform(iris.data, iris.target)

    参考资料:

    1、https://www.cnblogs.com/jiangxinyang/p/9291741.html

    2、https://www.jianshu.com/p/6a9db201cb13

    3、https://zhuanlan.zhihu.com/p/44258470

    4、https://baijiahao.baidu.com/s?id=1664419210560925668&wfr=spider&for=pc

    5、https://www.cnblogs.com/pinard/p/6239403.html

    6、https://www.cnblogs.com/pinard/p/6243025.html

    7、https://zhuanlan.zhihu.com/p/68754729

    8、https://blog.csdn.net/taojiea1014/article/details/82825715

    9、https://www.cnblogs.com/hellojamest/p/10908052.html

  • 相关阅读:
    Educational Codeforces Round 83 --- F. AND Segments
    Educational Codeforces Round 83 --- G. Autocompletion
    SEERC 2019 A.Max or Min
    2019-2020 ICPC Southwestern European Regional Programming Contest(Gym 102501)
    Educational Codeforces Round 78 --- F. Cards
    今天我学习了一门全新的语言
    codeforces 1323D 题解(数学)
    Educational Codeforces Round 80 (Div. 2) 题解 1288A 1288B 1288C 1288D 1288E
    Educational Codeforces Round 81 (Div. 2) 题解 1295A 1295B 1295C 1295D 1295E 1295F
    Codeforces Round #617 (Div. 3) 题解 1296C 1296D 1296E 1296F
  • 原文地址:https://www.cnblogs.com/enhaofrank/p/12819299.html
Copyright © 2011-2022 走看看