Loading [MathJax]/extensions/TeX/boldsymbol.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【机器学习-无监督学习】降维与主成分分析

【机器学习-无监督学习】降维与主成分分析

作者头像
Francek Chen
发布于 2025-01-22 15:10:51
发布于 2025-01-22 15:10:51
20600
代码可运行
举报
运行总次数:0
代码可运行

机器学习是一门人工智能的分支学科,通过算法和模型让计算机从数据中学习,进行模型训练和优化,做出预测、分类和决策支持。Python成为机器学习的首选语言,依赖于强大的开源库如Scikit-learn、TensorFlow和PyTorch。本专栏介绍机器学习的相关算法以及基于Python的算法实现。

【GitCode】专栏资源保存在我的GitCode仓库:https://gitcode.com/Morse_Chen/Python_machine_learning


  在上一篇文章聚类中,我们介绍了无监督学习的重要问题之一:聚类问题,并主要讲解了k均值算法。结尾处我们提到,在解决复杂聚类问题时,第一步通常不会直接使用k均值算法,而是会先用其他手段提取数据的有用特征。对于高维复杂数据来说,其不同维度代表的特征可能存在关联,还有可能存在无意义的噪声干扰。因此,无论后续任务是有监督学习还是无监督学习,我们都希望能先从中提取出具有代表性、能最大限度保留数据本身信息的几个特征,从而降低数据维度,简化之后的分析和计算。这一过程通常称为数据降维(dimensionality reduction),同样是无监督学习中的重要问题。本文就来介绍数据降维中最经典的算法——主成分分析(principal component analysis,PCA)。

一、降维

(一)维数灾难

维数灾难(Curse of Dimensionality)通常是指在涉及到向量的计算的问题中,随着维数的增加,计算量呈指数倍增长的一种现象。在很多机器学习问题中,训练集中的每条数据经常伴随着上千、甚至上万个特征。要处理这所有的特征的话,不仅会让训练非常缓慢,还会极大增加搜寻良好解决方案的困难。这个问题就是我们常说的维数灾难。

图1 维数灾难

  维数灾难涉及数字分析、抽样、组合、机器学习、数据挖掘数据库等诸多领域。在机器学习的建模过程中,通常指的是随着特征数量的增多,计算量会变得很大,如特征达到上亿维的话,在进行计算的时候是算不出来的。有的时候,维度太大也会导致机器学习性能的下降,并不是特征维度越大越好,模型的性能会随着特征的增加先上升后下降

(二)降维概述

1. 什么是降维?

降维(Dimensionality Reduction)是将训练数据中的样本(实例)从高维空间转换到低维空间,该过程与信息论中有损压缩概念密切相关。同时要明白的,不存在完全无损的降维。有很多种算法可以完成对原始数据的降维,在这些方法中,降维是通过对原始数据的线性变换实现的。

2. 为什么要降维

  • 高维数据增加了运算的难度。
  • 高维使得学习算法的泛化能力变弱(例如,在最近邻分类器中,样本复杂度随着维度成指数增长),维度越高,算法的搜索难度和成本就越大。
  • 降维能够增加数据的可读性,利于发掘数据的有意义的结构。

3. 降维的主要作用

(1)减少冗余特征,降低数据维度

  假设我们有两个特征:

:长度用厘米表示的身高;

:是用英寸表示的身高。这两个分开的特征

,实际上表示的内容相同,这样其实可以减少数据到一维,只有一个特征表示身高就够了。很多特征具有线性关系,具有线性关系的特征很多都是几余的特征,去掉冗余特征对机器学习的计算结果不会有影响。

(2)数据可视化

t-distributed Stochastic Neighbor Embedding(t-SNE)将数据点之间的相似度转换为概率。原始空间中的相似度由高斯联合概率表示,嵌入空间的相似度由“学生t分布”表示。虽然Isomap,LLE和variants等数据降维和可视化方法,更适合展开单个连续的低维的manifold。但如果要准确的可视化样本间的相似度关系,如对于下图所示的S曲线(不同颜色的图像表示不同类别的数据),t-SNE表现更好。因为t-SNE主要是关注数据的局部结构。

4. 降维的优缺点

降维的优点:

  • 通过减少特征的维数,数据集存储所需的空间也相应减少,减少了特征维数所需的计算训练时间;
  • 数据集特征的降维有助于快速可视化数据;
  • 通过处理多重共线性消除冗余特征。

降维的缺点:

  • 由于降维可能会丢失一些数据;
  • 在主成分分析(PCA)降维技术中,有时需要考虑多少主成分是难以确定的,往往使用经验法则。

二、主成分与方差

  顾名思义,PCA的含义是将高维数据中的主要成分找出来。设原始数据

,其中

。我们的目标是通过某种变换

,将数据的维度从

减小到

,且通常

。变换后的数据不同维度之间线性无关,这些维度就称为主成分。也就是说,如果将变换后的数据排成矩阵

,其中

,那么

的列向量是线性无关的。从矩阵的知识可以立即得到

  PCA算法不仅希望变换后的数据特征线性无关,更要求这些特征之间相互独立,也即任意两个不同特征之间的协方差为零。因此,PCA算法在计算数据的主成分时,会从第一个主成分开始依次计算,并保证每个主成分与之前的所有主成分都是正交的,直到选取了预先设定的

个主成分为止。关于主成分选取的规则,我们以一个平面上的二元高斯分布为例来具体说明。如图2(a)所示,数据点服从以

为中心、

方向方差为1.5、

方向方差为0.5、协方差为0.8的二元高斯分布。从图中可以明显看出,当前的

两个特征之间存在关联,并不是独立的。

图2 一个二元高斯分布和两个维度的投影情况

  图2(b)展示了数据分别向

方向投影的结果。由于

方向方差更大,数据在该方向的投影分布也更广。也就是说,数据向

方向的投影保留了更多信息,

是一个比

更好的特征。如果我们不再把目光局限于

两个方向,而是考虑平面上的任意一个方向,那么如左图中红色虚线所示,沿直线

的方向数据的方差是最大的,我们应当将此方向作为数据的特征之一。既然PCA算法希望选出的主成分保留最多的信息,那么就应当不断选取数据方差最大的方向作为主成分。因此,PCA计算的过程就是依次寻找方差最大方向的过程。

  为了方便计算,我们通常要先对数据进行中心化,把当前每个特征都变为均值为0的分布。用

表示数据

的第

个维度,那么均值

数据中心化,得到

  以图2(a)的高斯分布为例,变换后的图像如图3(b)所示,其中心点已经从

变为了

。接下来在讨论时,我们默认数据都已经被中心化。下面,我们就来具体讲解如何寻找数据中方差最大的方向。

图3 数据的中心化

三、利用特征分解进行PCA

  为了找到方差最大的方向,我们先来计算样本在某个方向上的投影。设

为方向向量,满足

,向量

在方向

上的投影为

。于是所有样本在方向

上的方差为

  矩阵

称为样本的协方差矩阵。由于

是常数,简单起见,下面省略因子

。要令方差最大,就相当于求解下面的优化问题

  在求解该问题之前,我们先来介绍矩阵的特征值(eigenvalue)与特征分解(eigendecomposition)相关的知识。对于方阵

,如果向量

与实数

满足

,就称

是矩阵

的特征值,

为矩阵的特征向量。特征向量

的任意非零实数倍

满足

因而

也还是特征向量。简单来说,矩阵

作用到其特征向量

上的结果等价于对该向量做伸缩变换,伸缩的倍数等于特征值

,但不改变向量所在的直线。从这个角度来看,

共线,

自然就是特征向量。因此,我们通常更关心单位特征向量,即长度为1的特征向量。例如,矩阵

的特征值及其对应的单位特征向量有两组,分别为

,大家可以自行计算验证。显然,对角矩阵

的特征值就等于其对角线上的元素

。特别地,

阶单位阵

的特征值是1,且空间中的所有向量都是该特征值对应的特征向量。

  我们可以从线性变换的角度来理解矩阵的特征值和特征向量。一个

阶方阵

可以看作是

维空间中的变换,将

维向量

变为另一个

维向量

。由于

以及

对任意向量

和实数

成立,该变换是一个线性变换。事实上,当坐标轴确定之后,线性变换与矩阵之间有一一对应关系。如果把向量都看作从原点指向向量所表示坐标的有向线段,可以证明,任意一个线性变换总可以分解成绕原点旋转和长度伸缩的组合。因此,矩阵与向量相乘

可以理解为将向量

旋转某一角度,再将长度变为某一倍数。而矩阵的特征向量,就是在该变换作用下只伸缩不旋转的向量,并且其对应的特征值就是伸缩的倍数。当特征值

时,变换后的向量与原向量方向相同;

时方向相反;

则表示矩阵会把所有该直线上的向量压缩为零向量。

  从这一角度继续,我们可以引入正定矩阵(positive definite)和半正定矩阵(positive semidefinite)的概念。如果对任意非零向量

,都有

,就称

为半正定矩阵;如果严格有

,就称

为正定矩阵。如果将

看作变换后的向量,那么

就表示

之间的夹角小于等于90°。由此,我们可以立即得到半正定矩阵的所有特征值都非负,否则负特征值会使特征向量在变换后反向,与原向量夹角为180°,产生矛盾。

  为什么我们要引入半正定矩阵呢?在上面的优化问题中,我们得到的目标函数是

,其中

是协方差矩阵。事实上,该矩阵一定是半正定矩阵。设

是任一非零向量,那么

  根据定义,

是半正定矩阵。因此,我们可以用半正定矩阵的一些性质来帮助我们求解该优化问题。这里,我们不加证明地给出一条重要性质:对于

阶对称半正定矩阵

,总可以找到它的

个单位特征向量

,使得这些特征向量是两两正交的,也即对任意

,都有

有兴趣的可以在线性代数的相关资料中找到该性质的证明。利用该性质,记

,有

于是,

对角线上的元素全部为1,其他元素全部为0,恰好是单位矩阵

。因此,

的逆矩阵就是其转置,

。因为组成该矩阵的向量是相互正交的,我们将这样的矩阵称为正交矩阵(orthogonal matrix)。根据逆矩阵的性质,我们有

设特征向量

对应的特征值是

,那么矩阵

可以写为

其中,

是由特征向量所对应的特征值依次排列而成的对角矩阵。上式表明,一个半正定矩阵可以分解成3个矩阵的乘积,其中

是其正交的特征向量构成的正交矩阵,

是其特征值构成的对角矩阵,这样的分解就称为矩阵的特征分解。

  利用特征分解,我们可以很容易地计算

的值。首先,由于

是维空间中的个正交向量,

一定可以唯一表示成这些向量的线性组合,即

,其中系数

等于向量

方向上的投影长度。我们可以将这组向量想象成相互垂直的坐标轴,而

就相当于

在这组坐标轴下的坐标。这样,

可以化为

这里,我们用到了

的性质,把求和中

都消去了。接下来,

可以计算得:

  在上面的优化问题

中,我们还要求

是方向向量,即

。这一要求给系数

添加了限定条件:

因此,原优化问题等价于

  由于

是半正定矩阵,其特征值

必定非负,该问题的解就是

的最大特征值

,不妨设其为

。为了使上式取到最大值,应当有

,且其他的

全部为零。因此,使方差最大的方向就是该特征值

对应的特征向量

的方向。

  上面的计算结果表面,用PCA寻找第一个主成分的过程就是求解PCA最大特征值及其对应特征向量的过程。事实上,由于协方差矩阵

半正定,其所有特征向量正交,恰好也满足我们最开始“每个主成分都与之前的所有主成分正交”的要求。如果排除掉第一主成分,第二主成分就对应

第二大特征值的特征向量,依次类推。因此,如果我们要把

维的数据降到

维,只需要计算

最大的

个特征值对应的特征向量即可。设这

个特征向量依次为

,矩阵

,原数据矩阵

,那么降维后的数据为

四、动手实现PCA算法

  下面,我们在NumPy库中线性代数工具的帮助下实现PCA算法。首先,我们导入数据集PCA_dataset.csv并将其可视化。数据集的每一行包含两个数

,代表平面上点的坐标

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import numpy as np
import matplotlib.pyplot as plt

# 导入数据集
data = np.loadtxt('PCA_dataset.csv', delimiter=',')
print('数据集大小:', len(data))

# 可视化
plt.figure()
plt.scatter(data[:, 0], data[:, 1], color='blue', s=10)
plt.axis('square')
plt.ylim(-2, 8)
plt.grid()
plt.xlabel(r'$x_1$')
plt.ylabel(r'$x_2$')
plt.show()

  接下来,我们按上面讲解的方式实现PCA算法。numpy.linalg中提供了许多线性代数相关的工具,可以帮助我们计算矩阵的特征值与特征向量。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def pca(X, k):
    d, m = X.shape
    if d < k:
        print('k应该小于特征数')
        return X, None

    # 中心化
    X = X - np.mean(X, axis=0)
    # 计算协方差矩阵
    cov = X.T @ X
    # 计算特征值和特征向量
    eig_values, eig_vectors = np.linalg.eig(cov)
    # 获取最大的k个特征值的下标
    idx = np.argsort(-eig_values)[:k]
    # 对应的特征向量
    W = eig_vectors[:, idx]
    # 降维
    X = X @ W
    return X, W

  最后,我们在数据集上测试该PCA函数的效果,并将变换后的数据绘制出来。由于原始数据只有二维,为了演示PCA的效果,我们仍然设置

,不进行降维。但是,从结果中仍然可以看出PCA计算的主成分方向。相比于原始数据,变换后的数据最“长”的方向变成了横轴的方向。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
X, W = pca(data, 2)
print('变换矩阵:\n', W)

# 绘图
plt.figure()
plt.scatter(X[:, 0], X[:, 1], color='blue', s=10)
plt.axis('square')
plt.ylim(-5, 5)
plt.grid()
plt.xlabel(r'$x_1$')
plt.ylabel(r'$x_2$')
plt.show()

五、用sklearn实现PCA算法

  Sklearn库中同样提供了实现好的PCA算法,我们可以直接调用它来完成PCA变换。可以看出,虽然结果图像与我们上面直接实现的版本有180°的旋转,变换矩阵的元素也互为相反数,但PCA本质上只需要找到主成分的方向,因此两者得到的结果是等价的。

使用scikit-learn库中decomposition模块的PCA类可以创建PCA模型,其基本语法格式和参数说明如下。

sklearn.decomposition.PCA(n_components=None, *, copy=True, whiten=False, svd_solver='auto', tol=0.0, iterated_power='auto', n_oversamples=10, power_iteration_normalizer='auto', random_state=None)

参数名称

参数说明

n_components

接收int或str。表示所要保留的主成分个数n,即保留下来的特征个数n,赋值为int时,表示降维的维度,如n_components=1,将把原始数据降到一个维度。赋值为str时,表示降维的模式,如取值为’mle’时,将自动选取特征个数n,使得满足所要求的方差百分比。默认为None。

copy

接收bool。表示是否在运行算法时,将原始训练数据复制一份。若为True,则运行后,原始训练数据的值不会有任何改变,因为是在原始数据的副本上进行运算;若为False,则运行后,原始训练数据的值会发生改变。默认为True。

whiten

接收bool。表示是否白化,使得每个特征具有相同的方差。默认为False。

svd_solver

接收{‘auto’, ‘full’, ‘arpack’, ‘randomized’},用于奇异值分解的算法。‘auto’会根据输入数据选择最佳的求解器。默认为’auto’。

tol

接收float。奇异值的容忍度。在使用’arpack’求解器时使用。默认为0.0。

iterated_power

接收int或’auto’。在使用’randomized’求解器时,幂法迭代的次数。默认为’auto’。

n_oversamples

接收int。随机SVD的过采样数量。默认值为10。

power_iteration_normalizer

接收{‘auto’, ‘LU’, ‘none’}。在幂迭代中使用的归一化方法。默认为’auto’。

random_state

接收int、RandomState实例或None。控制估计器的随机性。如果设置为固定整数,则可以确保结果的可重复性。默认为None。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from sklearn.decomposition import PCA

# 中心化
X = data - np.mean(data, axis=0)
pca_res = PCA(n_components=2).fit(X)
W = pca_res.components_.T
print ('sklearn计算的变换矩阵:\n', W)
X_pca = X @ W

# 绘图
plt.figure()
plt.scatter(X_pca[:, 0], X_pca[:, 1], color='blue', s=10)
plt.axis('square')
plt.ylim(-5, 5)
plt.grid()
plt.xlabel(r'$x_1$')
plt.ylabel(r'$x_2$')
plt.show()

六、拓展:奇异值分解

  本文介绍了数据降维的常用算法之一:PCA算法。数据降维是无监督学习的重要问题,在机器学习中有广泛的应用。由于从现实生活中采集的数据往往非常复杂,包含大量的冗余信息,通常我们必须对其进行降维,选出有用的特征供给后续模型使用。此外,有时我们还希望将高维数据可视化,也需要从数据中挑选2到3个最有价值的维度,将数据投影后绘制出来。除了PCA之外,现在常用的降维算法还有线性判别分析(linear discriminant analysis,LDA)、一致流形逼近与投影(uniform manifold approximation and projection,UMAP)、t分布随机近邻嵌入(t-distributed stochastic neighbor embedding,t-SNE)等。这些算法的特点各不相同,也有不同的适用场景。

  关于PCA的计算方式,由于计算协方差矩阵

和特征分解的时间复杂度较高,实践中通常会采用矩阵的奇异值分解(singular value decomposition,SVD)来代替特征分解。上面我们用到的sklearn库中的PCA算法就是以奇异值分解为基础的实现的。相比于特征分解,奇异值分解不需要实际计算出

,并且存在更高效的迭代求解方法。感兴趣的可以查阅相关资料,了解特征分解和奇异值分解的异同。

1. 奇异值分解的构造

2. 奇异值分解用于数据压缩

3. 奇异值分解的几何解释

4. 奇异值分解——SVD与PCA的关系

  实际上,如果将矩阵

看作是一个样本集合,其中的行看作特征随机变量,列看作每一个样本。当对数据集进行规范化后,矩阵

就是样本集合的协方差矩阵。这样,SVD分解后的右奇异矩阵就是PCA分析中的特征向量组成的矩阵。

  最后,大家可以在SETOSA网站的PCA算法动态展示平台上观察PCA的结果随数据分布的变化,加深对算法的理解。

:以上文中的数据集及相关资源下载地址: 链接:https://pan.quark.cn/s/15d427a80558 提取码:vYkb

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-01-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
机器学习:无监督学习
Tips:如果出现某个聚类中心没有分配到点的情况,一般是直接将这个中心去掉,如果规定必须要刚好
Here_SDUT
2022/09/19
7010
机器学习:无监督学习
机器学习(27)【降维】之主成分分析(PCA)详解
关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第一 【Python】:排名第三 【算法】:排名第四 前言 主成分分析(Principal components analysis,以下简称PCA)是最重要的降维方法之一。在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用。一般我们提到降维最容易想到的算法就是PCA,下面我们就对PCA的原理做一个总结。 PCA基本思想 PCA顾名思义,就是找出数据里最主要的方面,用数据里最主要的方面来代替原始数据。具体的,假如我们的数据集是n维的,共有
昱良
2018/04/04
2.5K0
机器学习(27)【降维】之主成分分析(PCA)详解
[机器学习|理论&实践] 机器学习中的数学基础
机器学习作为一门复杂而强大的技术,其核心在于对数据的理解、建模和预测。理解机器学习的数学基础对于深入掌握其原理和应用至关重要。本文将深入介绍机器学习中的数学基础,包括概率统计、线性代数、微积分等内容,并结合实例演示,使读者更好地理解这些概念的实际应用。
数字扫地僧
2023/12/13
5620
数据科学基础(十) 降维
📚 文档目录 随机事件及其概率 随机变量及其分布 期望和方差 大数定律与中心极限定理 数理统计的基本概念 参数估计 假设检验 多维 回归分析和方差分析 降维 10.1 主成分分析(PCA) 不懂线性代数, 下面这些参考了一些 PCA 的说明, 但我总觉得某些解释的不是很严谨. 目标 PCA 常用于高维数据的降维,可用于提取数据的主要特征分量. 对于原始数据矩阵 其中, 列向量 为 n 个样本中的一个. r 行表示 r 个维度. 对该矩阵进行中心化,得到中心化矩阵 X image.png X
Rikka
2022/01/19
5010
数据科学基础(十) 降维
图解机器学习 | 降维算法详解
教程地址:http://www.showmeai.tech/tutorials/34
ShowMeAI
2022/03/11
1.3K0
图解机器学习 | 降维算法详解
【1024特辑 | 机器学习-无监督学习】EM算法
  本文我们继续介绍概率相关模型的算法。在前面的文章中,我们已经讲解了贝叶斯网络与最大似然估计(MLE)。设数据集的样本为
Francek Chen
2025/01/22
950
【1024特辑 | 机器学习-无监督学习】EM算法
【机器学习-无监督学习】自编码器
  在前面的文章中,我们介绍了各种类型的无监督学习算法,如聚类算法、降维算法等。归根结底,无监督学习的目的是从复杂数据中提取出可以代表数据的特征,例如数据的分布、数据的主要成分等等,再用这些信息帮助后续的其他任务。随着机器学习向深度学习发展和神经网络的广泛应用,用神经网络提取数据特征的方法也越来越重要。本文介绍的自编码器(autoencoder,AE)就是其中最基础的一种无监督特征提取方法,也是一种深度学习模型。
Francek Chen
2025/01/22
2740
【机器学习-无监督学习】自编码器
主成分分析(PCA)原理总结
    主成分分析(Principal components analysis,以下简称PCA)是最重要的降维方法之一。在数据压缩消除冗余和数据噪音消除等领域都有广泛的应用。一般我们提到降维最容易想到的算法就是PCA,下面我们就对PCA的原理做一个总结。
刘建平Pinard
2018/08/14
1.1K0
主成分分析(PCA)原理总结
【机器学习-监督学习】集成学习与梯度提升决策树
  本文将会首先介绍集成学习的思路以及一些常用的集成学习方法,然后介绍梯度提升决策树模型。在前面的文章中,我们讲解了许多不同的机器学习算法,每个算法都有其独特的优缺点。同时,对于同一个任务,往往有多种算法可以将其解决。例如我们要将平面上的一些点分类,假设算法一和算法二的正确率是75%,算法三是50%。3种算法都已经通过调参达到了其最优表现,已经无法再进一步了。那么,我们是否能通过组合这些算法,得到比75%更高的正确率呢?看上去组合之后,算法三会拖算法一和二的后腿,反而会拉低整体表现,更别说提升了。然而,我们考虑表1中的例子。
Francek Chen
2025/01/22
1820
【机器学习-监督学习】集成学习与梯度提升决策树
第十五章 降维
第二种类型的无监督学习问题,叫做降维。 这里有一些,你想要使用降维的原因: ① 数据压缩 数据压缩不仅能对数据进行压缩,使得数据占用较小的内存或硬盘空间。它还能对学习算法进行加速 ② 可视化数据
tomas家的小拨浪鼓
2019/03/19
5940
第十五章 降维
【机器学习-监督学习】逻辑斯谛回归
  在介绍了机器学习中相关的基本概念和技巧后,本章我们继续讲解参数化模型中的线性模型。有了前文的基础,我们可以先来对KNN算法和线性回归进行比较,进一步回答“什么是参数化模型”这一问题。对于机器学习算法来说,其目标通常可以抽象为得到某个从输入空间到输出空间的映射
Francek Chen
2025/01/22
1760
【机器学习-监督学习】逻辑斯谛回归
【机器学习】--主成分分析PCA降维从初识到应用
主成分分析(Principal Component Analysis,PCA), 是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。
LhWorld哥陪你聊算法
2018/09/13
1.7K0
【机器学习】--主成分分析PCA降维从初识到应用
机器学习十大经典算法之PCA主成分分析
主成分分析算法(PCA)是最常用的线性降维方法,它的目标是通过某种线性投影,将高维的数据映射到低维的空间中,并期望在所投影的维度上数据的信息量最大(方差最大),以此使用较少的数据维度,同时保留住较多的原数据点的特性。
墨明棋妙27
2022/09/23
8800
特征工程-主成分分析PCA
主成分分析(Principle Component Analysis,PCA)是常用的降维方法,用较少的互不相关的新变量来反映原变量所表示的大部分信息,有效解决维度灾难问题。
唔仄lo咚锵
2022/11/30
8470
特征工程-主成分分析PCA
理解主成分分析
在现实世界的数据分析任务中,我们面对的数据通常较为复杂,例如多维数据。我们绘制数据并希望从中找到各种模式,或者使用数据来训练机器学习模型。一种看待维度(dimensions)的方法是假设你有一个数据点 xxx,如果我们把这个数据点想象成一个物理对象,那么维度就是仅仅是一个视图(译者注:这里的视图应该是和三视图中的视图是一个概念)的基础(basis of view),就像从横轴或者纵轴观察数据时的位置。
Alan Lee
2019/05/28
7310
奇异值分解(SVD)原理与在降维中的应用
    奇异值分解(Singular Value Decomposition,以下简称SVD)是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于推荐系统,以及自然语言处理等领域。是很多机器学习算法的基石。本文就对SVD的原理做一个总结,并讨论在在PCA降维算法中是如何运用运用SVD的。
刘建平Pinard
2018/08/14
7060
奇异值分解(SVD)原理与在降维中的应用
主成分分析(Principal Component Analysis,PCA)
)个主成分(线性无关变量)来代替m个原有变量(线性相关变量),使问题得以简化,并能保留原有变量的大部分信息(原有变量的方差)。
Michael阿明
2020/07/13
9380
主成分分析(Principal Component Analysis,PCA)
机器学习基础与实践(三)----数据降维之PCA
写在前面:本来这篇应该是上周四更新,但是上周四写了一篇深度学习的反向传播法的过程,就推迟更新了。本来想参考PRML来写,但是发现里面涉及到比较多的数学知识,写出来可能不好理解,我决定还是用最通俗的方法解释PCA,并举一个实例一步步计算,然后再进行数学推导,最后再介绍一些变种以及相应的程序。(数学推导及变种下次再写好了) 正文:   在数据处理中,经常会遇到特征维度比样本数量多得多的情况,如果拿到实际工程中去跑,效果不一定好。一是因为冗余的特征会带来一些噪音,影响计算的结果;二是因为无关的特征会加大计算量,耗
Charlotte77
2018/01/09
9230
机器学习基础与实践(三)----数据降维之PCA
PCA详解
对于数组和Series而言,维度就是shape返回的数值shape中 返回了几个数字,就是几维。
皮大大
2021/03/02
1.7K0
PCA模型
主成分分析是指将数据中相关性很高的属性 / 变量转化成彼此相互独立或不相关的新属性 / 变量,利用较少的新属性 / 变量(主成分)去解释原来数据中的大部分属性 / 变量的一种降维方法。
hotarugali
2022/03/16
9000
相关推荐
机器学习:无监督学习
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验