【机器学习】从特征分解,奇异值分解到主成分分析

1.理解特征值,特征向量

一个对角阵\(A\),用它做变换时,自然坐标系的坐标轴不会发生旋转变化,而只会发生伸缩,且伸缩的比例就是\(A\)中对角线对应的数值大小。

对于普通矩阵\(A\)来说,是不是也可以找到这样的向量,使得经\(A\)变换后,不改变方向而只伸缩?答案是可以的,这种向量就是\(A\)的特征向量,而对应的伸缩比例就是对应的特征值。

特征值会有复数是为什么?

首先要知道,虚数单位\(i\)对应的是旋转\(90^o\),那么,如果特征值是复数,则对应的特征向量经矩阵\(A\)变换后将会旋转\(90^o\),且伸缩率是复数的模。

2.矩阵的分解1:特征值分解

一个方阵\(A\),它的线性无关的特征向量个数不会超过其维度,不同特征值对应的特征向量一定是线性无关的。而同一特征值对应的特征向量也不一定相关。

但是,如果重复特征值重复计数,特征值的个数一定是\(n\),对应的也有\(n\)个特征向量。那么矩阵就可以分解:

\(Ax_i=\lambda x_i\)

\(AX=\Lambda X\)

其中,\(\Lambda\)是将\(A\)的特征值作为对角元素的对角阵,\(X\)是与特征值位置对应的特征向量(列)排成的矩阵。

\(A=X^{-1}\Lambda X\)

从而,可以将\(A\)分解为上面的形式,这样,在计算,分析性质等会很有帮助。

一个应用就是PCA时,对协方差矩阵\(A^TA\)做特征分解,以提取主成分。

3.矩阵的分解2:奇异值分解SVD

上面的特征值分解只针对于方阵,而对于一般矩阵,可不可以做类似分解呢?

这就是奇异值分解。

什么是奇异值:A的奇异值是\(A^TA\)的特征值的平方根。因为矩阵是变换,经非方阵\(A\)变换后也有向量其方向不变,只伸缩,这个伸缩率就是奇异值,对应的向量为\(A^TA\)的特征向量。

酉矩阵:\(A^T=A^{-1}\)的矩阵。

什么是奇异值分解?

具体来说:对于非方阵\(A\),它的奇异值分解形式是:

\(A=U\sum V^T\)

其中,\(A:m*n;U:m*m ; \sum : m*n; V:n*n\),且\(、U、V\)都是酉矩阵。

\(\sum\)矩阵只有对角线元素不为0,称为奇异值。

并且:

\(V\)是矩阵\(A^TA\) 的标准化特征向量构成的矩阵,称为右奇异向量矩阵。右奇异向量实现列数压缩。

\(U\)是矩阵\(A^TA\)的标准化特征向量构成的矩阵,称为左奇异向量矩阵。左奇异向量实现列数压缩。

\(\sum\)矩阵对角线的奇异值就是矩阵\(A^TA\)的特征值的平方根。

下面推导一下为什么是这样:

奇异值分解,将\(m*n\)的矩阵\(A\),分解为:

$A=U\sum V^T $

则:\(A^T=V\sum^T U^T => A^TA=V\sum^TU^TU\sum V^T=V\sum^2V^T\)

上面用到了\(U^TU=I\)。

即得到了:

$ A^TA=V\sum^TU^TU\sum V^T=V\sum^2V^T$

因而很显然,方阵\(A^TA\)的标准化特征向量排列成的矩阵就是\(V\),而特征值开根号就是奇异值

所以,从这里也可知,奇异值的个数就是\(A^TA\)的特征值个数。

4. 主成分分析PCA

为什么做主成分分析?

做数据分析处理,针对每个样本都收集了大量特征,设样本数为\(m\),特征数为\(n\),则我们得到的数据矩阵为:

\(A=[m*n]\);每行为一个样本,每列为一个特征。

大量的数据会导致处理计算复杂,并且多个特征相互之间可能存在多重相关关系,导致把所有数据放在一起处理过分拟合了某些指标;而盲目的删除一些特征又可能导致关键信息的损失。

如何减少特征数,又保留住绝大部分信息呢?+正则化项可以自动学习这个过程。PCA主成分分析可以实现这个目的,其本质是数据降维。

怎么做主成分分析?

1.找主成分方向:正交的

将列数\(n\)降维到\(n'\),怎么做呢?如果有一个维度它的变化不大,那么包含的信息就很少,自然可以删除,但在现有数据下,很难看出哪个维度变化不大,数据是杂乱的。因此将其变换到以特征向量为基的坐标系下,\(n\)维矩阵自然可以变换到\(n\)维特征向量坐标系,这样,所有\(n\)个特征是相互正交的。变换到新的坐标系后,由于特征值的大小表征了离散程度,哪个特征变化小就可以通过特征值大小看出来。

根据最大方差理论,变化大的维度含有的信息远大于变化小的。

求PCA方向就是\(A^TA\)的特征值方向。

为什么要对\(A^TA\)求特征向量呢(为什么是这个方向)?

这是因为,原本我们想将列向量变换到正交的特征向量方向,即寻找新的坐标系,将每条数据在这个新的坐标系下标出。这个方向实际上就是\(A^TA\)的特征向量的方向。因为,根据第5部分,\(A=U\sum V^T=>AV=U\sum\),可以看到,\(V\)的各个向量的方向就是相互正交方向,这个方向使得数据\(A\)的列向量变换后依然正交。而如何将列向量变换到正交方向上去呢?投影。这个式子也给了我们答案,即相乘,类似于内积,(一个向量到另一个向量的投影)。因此,这样就将所有列向量(特征)映射到了相互正交的空间,倘若有的变量变化不大,此时可以根据特征值大小看出,即特征值小则方差小,信息量小。

另外可以发现,中心化后,\(A^TA\)就是协方差矩阵,这是为什么许多教材上直接说对协方差矩阵求特征向量,特征向量的方向就是主成分方向。

那么,确定了主成分方向,如何确定使用哪几个主成分呢?

特征值的意义就是特征向量方向上的伸缩率,因此,特征值的大小衡量了该主成分方向上的离散程度,特征值越大,则越离散,方差越大,信息越多。

因此可以定义贡献率:该特征值/特征值之和。

所以,只要选取特征值最大的几个主成分方向以及对应的主成分向量(主成分特征)就可以了。这是为什么教材中按特征值大小排序。

总结一下主成分步骤:

要将列特征变换到另一个空间,使得特征之间是相互正交的,即变换后的\(n\)维特征正好处于新坐标系的轴上。

  1. 求\(A^TA\)特征值以及对应的特征向量,按大小排序。
  2. 该特征向量就是新的坐标轴方向,将A的各行向新的特征值方向上做投影,得到主成分。
  3. 根据贡献率,选择需要的主成分数。

上面的过程很类似于奇异值分解,实际上,学习库中的PCA不会真的对\(A^TA\)求特征向量,这太费时了,因为求特征向量实际上就要首先求特征多项式,大于三阶不存在通用算法求解。实际上,scikit-learn做奇异值分解的途中,有算法可以直接得到右边的\(V\),从而确定了方向。

PCA的缺点是解释性不强,即变换后的特征到底代表了什么是不能够解释的,但这不影响PCA很有效,对我来说更重要的是帮助理解特征值分解和奇异值分解。

原文地址:https://www.cnblogs.com/duye/p/10731816.html

时间: 2024-11-09 03:18:18

【机器学习】从特征分解,奇异值分解到主成分分析的相关文章

特征分解 奇异值分解

特征分解:将矩阵分 解成一组特征向量和特征值. 方阵 A 的 特征向量(eigenvector)是指与 A 相乘后相当于对该向量进行缩放 的非零向量 v 标量 λ 被称为这个特征向量对应的 特征值(eigenvalue).(类似地,我们也可以 定义 左特征向量(left eigenvector)v?A = λv?,但是通常我们更关注 右特征向量 (right eigenvector)) 如果V是A的特征向量,那么任何放缩后的 sv (s为任意非零实数)也是A的特征向量,所以A的特征向量我们只考虑

机器学习的数学基础 - 特征分解与奇异值分解

特征分解 奇异值分解(Singular Value Decomposition, SVD) 原文地址:https://www.cnblogs.com/DicksonJYL/p/9547328.html

【机器学习算法-python实现】PCA 主成分分析、降维

1.背景 PCA(Principal Component Analysis),PAC的作用主要是降低数据集的维度,然后挑选出主要的特征. PCA的主要思想是移动坐标轴,找到方差最大的方向上的特征值,什么叫方差最大的方向的特征值呢.就像下图中的曲线B,一样,它的覆盖范围最广. 基本步骤:(1)首先计算数据集的协方差矩阵 (2)计算协方差矩阵的特征值和特征向量 (3)保留最重要的n个特征 what is 协方差矩阵: 定义是变量向量减去均值向量,然后乘以变量向量减去均值向量的转置再求均值.例如x是变

机器学习: 特征脸算法 EigenFaces

人脸识别是机器学习和机器视觉领域非常重要的一个研究方向,而特征脸算法是人脸识别里非常经典的一个算法,EigenFaces 是基于PCA (principal component analysis) 即主分量分析的. 一张尺寸为 w×h 的人脸图像 Ii可以看成是一个 D×1 的列向量, x∈RD,其中 D=w×h, 那么,给定一个训练集 S, 含有 m 张人脸图像, 即: S={xi},i=1,2,...m, 简单来说,我们希望通过一些线性映射,将原始向量 x 从高维空间 RD 变换到一个低维空

矩阵特征分解介绍及雅克比 Jacobi 方法实现特征值和特征向量的求解 C++/OpenCV/Eigen

对角矩阵(diagonal matrix):只在主对角线上含有非零元素,其它位置都是零,对角线上的元素可以为0或其它值.形式上,矩阵D是对角矩阵,当且仅当对于所有的i≠j, Di,j= 0. 单位矩阵就是对角矩阵,对角元素全部是1.我们用diag(v)表示一个对角元素由向量v中元素给定的对角方阵.对角矩阵受到关注的部分原因是对角矩阵的乘法计算很高效.计算乘法diag(v)x,我们只需要将x中的每个元素xi放大vi倍.换言之,diag(v)x = v⊙x.计算对角方阵的逆矩阵也很高效.对角方阵的逆

机器学习:特征工程

特征选择直接影响模型灵活性.性能及是否简洁. 好特征的灵活性在于它允许你选择不复杂的模型,同时运行速度也更快,也更容易理解和维护. 特征选择 四个过程:产生过程,评价函数,停止准则,验证过程. 目的:过滤特征集合中不重要特征,挑选一组最具统计意义的特征子集,从而达到降维的效果. 选择标准:特征项和类别项之间的相关性(特征重要性). - - -搜索特征子空间的产生过程- - - 搜索的算法分为完全搜索(Complete),启发式搜索(Heuristic), 随机搜索(Random) 3大类. 完全

(转)机器学习之SVD分解

一.SVD奇异值分解的定义 假设是一个的矩阵,如果存在一个分解: 其中为的酉矩阵,为的半正定对角矩阵,为的共轭转置矩阵,且为的酉矩阵.这样的分解称为的奇异值分解,对角线上的元素称为奇异值,称为左奇异矩阵,称为右奇异矩阵. 二.SVD奇异值分解与特征值分解的关系 特征值分解与SVD奇异值分解的目的都是提取一个矩阵最重要的特征.然而,特征值分解只适用于方阵,而SVD奇异值分解适用于任意的矩阵,不一定是方阵. 这里,和是方阵,和为单位矩阵,为的特征向量,为的特征向量.和的特征值为的奇异值的平方. 三.

机器学习中特征的处理及选择

基础概念 特征工程是通过对原始数据的处理和加工,将原始数据属性通过处理转换为数据特征的过程,属性是数据本身具有的维度,特征是数据中所呈现出来的某一种重要的特性,通常是通过属性的计算,组合或转换得到的.比如主成分分析就是将大量的数据属性转换为少数几个特征的过程.某种程度而言,好的数据以及特征往往是一个性能优秀模型的基础. 既然叫特征工程,自然涵盖了很多内容,而其中涉及到的比较重要的部分是特征的处理及选择. 特征处理包含: 数据清洗 数据规范化 特征构造与衍生 特征选择包含: 特征过滤 wrappe

[python机器学习及实践(6)]Sklearn实现主成分分析(PCA)

1.PCA原理 主成分分析(Principal Component Analysis,PCA), 是一种统计方法.通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分. PCA算法: 2.PCA的实现 数据集: 64维的手写数字图像 代码: #coding=utf-8 import numpy as np import pandas as pd from sklearn.decomposition import PCA from matplotlib imp