SVD & PCA

机器学习:对数据进行降维(PCA和SVD) 对数据进行降维(PCA和SVD) 阅读详情

本文讲解SVD和PCA

Singular Value Decomposition

abbr. SVD

The Singular Value Decomposition is a highlight of linear algebra. A is any m by n matrix, square or rectangular. Its rank is r. We will diagonalize this A , but not by S−1AS. The eigenvectors in S have three big problems: They are usually not orthogonal, there are not always enough eigenvectors, and Ax=λx requires A to be square. The singular vectors of A solve all those problems in a perfect way.

” A is diagonalized”

Av1=σ1u1Av2=σ2u2…Avr=σrur

The singular vectors v1…vr are in the row space of A. The singular values σ1…σr are all positives number. When the v′s and u′s go into the columns of V and U, orthogonality gives VTV=I and UTU=I . The σ′s go into diagonal matrix Σ .

proof:
v 是ATA的eigen vector
那么 v 在A的row space上
ATAvi=σ2ivi
ATA 一定是半正定的( XTATAX≥0 )
所以存在 r 个eigenvalue 大于0 (r为rank)

row space ⊥ nullspace
(proof: row space是 ATy 的集合与 nullspace 中的 x 的dot product
XT(ATy)=(AX)Ty=0)

V 在Rn上,可以找出 r 个正交基(v′s是singular vector),可以在nullspace上找出 n−r 个正交基,可以构造 Vn×n ,显然 VT=V

目标是 AV=UΣ
VT=V−1
A=UΣVT
ATAvi=σ2ivi
vTiATAvi=σ2ivTivi
∥Avi∥2=σ2i so that ∥Avi∥=σi
AATAvi=σ2iAvi gives ui=Avi/σi as a unit eigenvector of AAT

ui 在A的column space上,所以存在 r 个正交基,与v′s对应,同理可以在left null space上找到m-r个正交基组成 U 。

A=UΣVT=u1σ1vT1+⋯+urσrvTr

将SVD用于降维:
Am×nVn×r=Um×rΣr×r
就是将 A 投影到V所以定义的space上,从而达到了降维。可以按照singular value的大小进行排列,如果前 k 个singular value的大小占据了90%(只是个例子),那么相应的vi就可以丢掉,从而继续降维。eigenvalue相当于把数据投影到eigenvector上后,所有点的方差(因为要构造unit vector)。

Principal Component Analysis

abbr. PCA
SVD是PCA的一种方法,还有一种常用的方法就是将SVD降维中所用到的 V 换成了A的协方差矩阵的eigenvalue所组成的投影矩阵。
PCA的目的是使投影后的矩阵各向量之间的协方差为0,既去除了各个向量之间的线性关系,并且使得投影后的矩阵的在各个方向上的方差达到最大化。可以参考主成分分分析这篇文章所讲的最大方差理论。简单的对于分类来说,方差越大那么区分度越高。

算法步骤:

  1. 求矩阵 Am×n 中的每一列的均值,可以得到一个 n×1 的vector m 。其中A的每一行代表一个数据点,而每一列就是一个feature;
  2. 对A的每一行都减去 m ;
  3. 求A的转置的协方差矩阵 C ;
  4. 求C的eigenvalue和eigenvector;
  5. 根据eigenvalue对eigenvector进行排序,可根据需求舍弃较小的eigenvalue所对应的eigenvector;
  6. 将eigenvector所组成的矩阵进行转置( r×n )与转置的 A (n×m)进行dot product,将结果转置既为所求结果。

因为用到了协方差矩阵,协方差矩阵中每一项度量的是两个随机变量的相关性, Σij=cov(Xi,Xj)=E[(Xi−ui)(Xj−uj)T] ,协方差定义中的 Xi 是行向量,对应 Am×n 中的一列,既对一个random variable的一组观测值。所以需要对 A 进行转置,使得A的行向量成为feature。cov(AT)的对角线是每一个feature的方差,其他的则是两个feature的协方差。
假设投影后的矩阵为 Y ,那么YT=PTAT,这里的表述方法是为了方便表达协方差矩阵。并且 PT 是一个rotation matrix ,因为 PT=P−1 。
那么 cov(YT)=E((YT)(YT)T)
=E((PTAT)(PTAT)T)
=E(PT(AT(AT)T)P)
=PTcov(AT)P
由于 cov(AT) 是一个对称矩阵,所以可以将其对角化,而对角化所用的矩阵就是 cov(AT)的 eigenvetor所组成的矩阵(spectral theorem)。所以 pi 就是 cov(AT) 的eigenvector。在推导的过程中,要注意A是已经减去了均值的,要不不能这么推,这个过程反推也是有意义的,也能说明第一步为什么不需要减去均值。
接着就可以按照eigenvalue对eigenvector进行排序,根据需要cover多少variance来选几个eigenvector了。为什么这么选,可以想一下coviance matrix对角线上的值的意义。

import numpy as np

def pca(data,normalise=1):

    # centre data
    m = np.mean(data, axis=0)
    data -= m

    # Covariance matrix
    C = np.cov(np.transpose(data))

    # Compute eigenvalues and sort into descending order
    evals, evecs = np.linalg.eig(C)
    indices = np.argsort(evals)
    indices = indices[::-1]
    evecs = evecs[:, indices]
    evals = evals[indices]


    evalsNorm = evals / np.sum(evals)
    cumEvals = np.cumsum(evalsNorm)
    evecs = evecs[:,:(np.where(cumEvals > 0.9)[0][0] + 1)]

    if normalise:
       for i in range(np.shape(evecs)[1]):
           evecs[:, i] = evecs[:, i] /  np.linalg.norm(evecs[:, i])

    # Produce the new data matrix
    # x = np.transpose(np.dot(np.transpose(evecs), np.transpose(data)))
    x = np.dot(data, evecs)

    # Compute the original data again
    y = np.transpose(np.dot(evecs, np.transpose(x))) + m

    return x,y,evals,evecs

iris = np.genfromtxt(r"/home/real/pca/iris.data", delimiter=",", dtype="str")
iris = iris[:, range(np.shape(iris[0])[0] - 1)]
iris = iris.astype(np.float)
x,y,evals,evecs = pca(iris)
np.savetxt("result.csv", x, delimiter=",")
np.savetxt("resulty.csv", y, delimiter=",")
机器学习——降维算法PCA和SVD(sklearn) 与特征选择类似,我们可以用不同的特征提取技术来减少数据集的特征数量。特征选择和特征提取的区别在于,当我们用诸如 逆序选择之类的特征选择算法 时,数据集的原始特征 保持不变,而当我们用 特征提取 方法时,会将数据变换 或投影到 新特征空间。在降维的背景下,我们可以 把特征提取理解为 数据压缩的一种方法,其目的是保持大部分的相关信息。在实际应用中,特征提取 不仅可以优化存储空间 或 机器学习算法 的计算效率,而且还可以 通过减少 维数 提高预测性能,尤其是当我们 处理非正则化 模型的时候。 阅读详情

相关推荐

PCA & SVD & 极分解 简介

A brief intro to PCA and SVD decomposition.

DZYO的博客 1395

奇异值分解(SVD)与PCA(主成分分析)

奇异值分解(Singular Value Decomposition,以下简称SVD)是在机器学习领域广泛应用的算法,它不光可以用于降维算法中的特征分解,还可以用于推荐系统(稍后讲解),以及自然语言处理等领域,是很多机器学习算法的基石。下面将从SVD的原理、SVD的推导、分析SVD与PCA之间的关系等进行讲解,一步步到最后的推荐系统。 一、SVD原理 1.1 SVD定义 若A是一个m*n的矩...

weixin_43972621的博客 8024

使用Hyper-V使用下载下来的macOS安装引导安装macos

然后关闭工具返回安装界面选择第二个reinstall,选择119g那个硬盘。我的资源上传了:macOS Monterey on Hyper-V.7z。设置固件的启动顺序,引导安装盘放到第一位,mac安装110g放第二。选择disk utility格式化那个110g。下载解压的macos引导挂载到虚拟硬盘。其他设置安全禁用,检查禁用,集成都选中。新建一个虚拟硬盘装mac,110g。

viviliving的专栏 3023

降维算法PCA和SVD

文章目录前言PCA和SVD1. 降维算法的实现1.1 降维的步骤表格2. PCA,SVD简单概述总结 前言 提示:这里可以添加本文要记录的大概内容: 例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。 PCA和SVD 在降维过程中,我们会减少特征的数量,这意味着删除数据,数据量变少则表示模型可以获取的信息会变少,模型的表现可能会因此受影响。同时,在高维数据中,必然有一些特征是不带有有效的信息的(比如噪音),或者有一些特征带有的信息和.

m0_50572604的博客 4106

机器学习(ML)在材料领域应用

机器学习作为一种兼顾开发效率以及开发成本的方法,已经逐渐应用于材料发现、结构分析、性质预测、反向设计等多个领域,并且在材料学研究中展现出惊人的潜力。传统的发现新材料的方法,如经验试错法和基于密度泛函理论(DFT)的方法,往往需要较长的研发周期,成本高、效率低,已经不能很好的适应如今需求量激增的材料学领域 ...

W5632DE的博客 3713

python 成语接龙-连接数据库

from xpinyin import Pinyin import pymysql while 1: conn = pymysql.connect( host='localhost', #本地连接 user='root', #数据库账户名 password='password', #数据库密码 db='dic',

Hero2902的博客 598

奇异值分解(SVD)与主成分分析(PCA)

奇异值分解(SVD)与主成分分析(PCA) 1 算法简介 奇异值分解(Singular Value Decomposition),简称SVD,是线性代数中矩阵分解的方法。假如有一个矩阵A,对它进行奇异值分解,可以得到三个矩阵相乘的形式,最左边为m维的正交矩阵,中间为m*n 的对角阵,右边为n维的正交矩阵: A=UΣVTA=U\Sigma V^{T}A=UΣVT 这三个矩阵的大小如下图所示: 矩阵...

伍六七的博客 2867

『与善仁』Appium基础 — 19、元素定位工具之UI Automator Viewer

文章目录(一)uiautomatorviewer定位工具1、uiautomatorviewer介绍2、uiautomatorviewer工具打开方式3、uiautomatorviewer布局介绍4、uiautomatorviewer工具的使用 之前我们在做web页面自动化的时候就说过,元素定位是页面自动化的第一步。 同理App自动化测试的第一步,也是元素的定位。 在APP中定位元素的话,需要借助一些元素定位工具。 APP中的元素定位工具大致有三种: uiautomatorviewer Appium Ins

繁华似锦Fighting 1520

降维【PCA & SVD】

PCA(principle component analysis)主成分分析 理论依据 最大方差理论 最小平方误差理论 一、最大方差理论(白面机器学习) 对一个矩阵进行降维,我们希望降维之后的每一维数据能够有大的方差。 为什么呢? 因为每一维的方差越大,说明数据之间区分度高,想象一个极端的情况,降维之后的数据集所有维度 都是一样的值,方差为0,那么数据就没什么意义了...

apk6909的博客 170

整理 钢琴 约翰汤普森-简易钢琴(小汤)

文件名:(小汤1)约翰-汤普森钢琴1 超清PDF (原版引进)文件名:(小汤2)约翰-汤普森钢琴2 超清PDF (原版引进)文件名:(小汤3)约翰-汤普森钢琴3 超清PDF (原版引进)文件名:(小汤4)约翰-汤普森钢琴4 超清PDF (原版引进)文件名:(小汤5)约翰-汤普森钢琴5 超清PDF (原版引进)文件大小:20.1 MB。文件大小:23.7 MB。文件大小:45.7 MB。文件大小:51.7 MB。文件大小:72.0 MB。

TS的博客 5万+

uniapp(全端兼容) - 实现点击输入框时完美顶起键盘,获取键盘高度动态计算顶起距离,解决软键盘弹出时输入框被覆盖问题,uniapp微信小程序/移动端h5网页/安卓苹果app(示例代码,一键复制

uniapp,支付宝微信小程序,移动端H5网页网站,软键盘弹出位置不对,软键盘挡住了输入框怎么办,获取键盘高度计算弹出距离,uniapp如何解决输入框input激活后键盘弹出遮挡问题,uniapp输入框偶尔被键盘遮挡,解决uniapp在App环境下输入框被软键盘遮挡的问题,uniapp 完美解决苹果和安卓input框遮挡兼容问题,uniapp输入框拉起软键盘时,输入框显示不全,被软键盘挡住一半,input被键盘遮挡的解决方案,软键盘遮挡输入框,uniapp软键盘顶不起来输入框,输入框没有被软键盘弹出来怎么办

✅ 精选推荐文章 1万+

PCA & SVD

PCA和SVD讲解

weixin_39965184的博客 154

【CASS精品教程】035:南方CASS7.1台阶画法案例大全

摘要:本文详细介绍了南方CASS7.1软件中5种台阶工具的使用方法,包括普通台阶、有边台阶、L型台阶、U型台阶和不规则台阶。重点说明各类台阶的绘制步骤和注意事项,如绘制方向(从右下角逆时针连接4个点)、台阶方向标识(白色边为下边)、台阶数自动生成不可更改等特性。同时指出高版本CASS可能存在操作差异,并配以多张示意图直观展示各类台阶的绘制过程和效果,为使用CASS7.1绘制建筑台阶提供了实用指导。(148字)

智慧空间实验室 2920

SVD & PCA;Collaboration Filtering

Relationship between SVD and PCA. How to use SVD to perform PCA?https://stats.stackexchange.com/questions/134282/relationship-between-svd-and-pca-how-to-use-svd-to-perform-pca

weixin_42375099的博客 204

HFSS实战项目——Ku波段微带发夹线滤波器

保姆级教程!!!看完必会,非常详细!!!Ku频段5阶切比雪夫微带线带通滤波器的仿真实例。首先介绍了滤波器的技术指标和基本理论知识,重点介绍了滤波器的耦合系数和外部品质因数。建立了谐振器的设计模型、耦合系数与谐振器间距的设计模型、外部品质因数与抽头位置的设计模型和滤波器整体电路的模型。详细介绍了谐振器设计模型的建立步骤。

2401_87464239的博客 3040

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Machine Learning(2)PCA & SVD

PCA(Principal Component Analysis) 是一种常见的数据分析方式,常用于高维数据的降维,可用于提取数据的主要特征分量。

江凪水心的博客 263

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

主成分分析PCA & 奇异值分解SVD

一 特征值和特征向量 想了解PCA和SVD,首先要了解的一个概念就是特征值和特征向量。        A是矩阵,x是向量、是数。如果满足公式,则说是矩阵A的一个特征值,非零向量x为矩阵A的属于特征值的特征向量。矩阵A的特征值和特征向量可以写成以下格式,请注意。 为什么能把x叫做A矩阵的特征向量呢,其实矩阵乘向量可以理解成对向量进行旋转和拉长。当然并不是所有向量都可以被旋转,矩阵无法旋转的非...

m0_38126215的博客 821

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

数学基础-数据预处理-降维-PCA & SVD

PCA原理 主成分分析(PCA)是将研究对象的多个相关变量化为少数几个不相关的变量的一种多元统计方法。为了尽可能完整的收集过程的运行信息或产品质量信息,要检测许多个过程变量或质量参数,当然这可以避免重要信息的遗漏,然而从统计的角度看,这些变量可能存在很强的相关性,使得分析问题增加了复杂性。因而,自然想到用少数几个不相关的综合变量来代替原来较多的相关变量方法的研究;而且要求这些不相关的综合变量能够...

weixin_37801695的博客 741

机器学习-数据降维之PCA(SVD奇异值分解&特征值分解)

1.相关背景 在许多领域的研究与应用中,通常需要对含有多个变量的数据进行观测,收集大量数据后进行分析寻找规律。多变量大数据集无疑会为研究和应用提供丰富的信息,但是也在一定程度上增加了数据采集的工作量。更重要的是在很多情形下,许多变量之间可能存在相关性,从而增加了问题分析的复杂性。如果分别对每个指标进行分析,分析往往是孤立的,不能完全利用数据中的信息,因此盲目减少指标会损失很多有用的信息,从而产生错误的结论。 因此需要找到一种合理的方法,在减少需要分析的指标同时,尽量减少原指标包含信息..

qq_35912099的博客 1584

GAMES001 奇异值分解与主成分分析SVD & PCA 学习:奇异值分解(SVD)

前面已经搞清楚了实对称矩阵的特征值分解 S=QΛQTS=Q\Lambda Q^TS=QΛQT,但那只适用于方阵而且是对称的矩阵。可是实际当中遇到的矩阵,往往行数和列数都不一样(比如一张 100×50100\times 50100×50 的图片矩阵),根本不是方阵,更谈不上对称。奇异值分解(Singular Value Decomposition,SVD) 要解决的就是这个问题:对任意形状的矩阵,找到一种类似的"拆解成简单部分"的方法。 这一节要做的事情,其实是想办法把前面学过的对称矩阵特征值分解借用过来,构

虾球 319

GAMES001 奇异值分解与主成分分析SVD & PCA 学习:SVD 图像压缩:从零开始理解

一张分辨率为 m×nm \times nm×n 的黑白图像,本质上就是一个大小为 m×nm \times nm×n 的矩阵 A∈Rm×n A \in \mathbb{R}^{m \times n} A∈Rm×n 矩阵里每一个元素代表对应像素的灰度值(比如 0 表示纯黑,255 表示纯白)。这个矩阵是"稠密"的,意思是几乎每个位置都有一个非零的数字,如果原样存储,需要存 m×nm \times nm×n 个数。 比如一张 1000×10001000 \times 10001000×1000 的图,就要存 10

虾球 24

GAMES001 奇异值分解与主成分分析SVD & PCA 学习:如何理解一个矩阵?

矩阵这个东西,第一次见到它的时候,很多人只会觉得它是"一堆排成方块的数字"。但矩阵真正厉害的地方在于:同样一张数字表格,换一个角度去看,就能代表完全不同的东西。这篇文章从零开始,带你搞清楚矩阵最常见的三种理解方式——线性变换、图片、几何数据,每一种都配一张示意图,并且用可以直接运行的 C++ 代码把它"跑出来"给你看。 三张示意图见配套的 PDF 文件,下文会在合适的位置标注插入位置(图1、图2、图3)。在最基础的层面上,矩阵就是一张按行、按列排列的数字表格。如果一个矩阵有 mmm 行、nnn 列,我们就说

虾球 262

GAMES001 奇异值分解与主成分分析SVD & PCA 学习:左逆与伪逆——从零理解

这一部分是上一篇《矩阵求导推导最小二乘》的延续,讲的是同一个左逆公式 (A⊤A)−1A⊤(A^\top A)^{-1}A^\top(A⊤A)−1A⊤,但换一个角度——用**奇异值分解(SVD)**重新把它推导一遍,最后引出"伪逆"这个更通用的概念。 配套图形见 PDF 文件《左逆与伪逆_图解.pdf》,其中:上一篇推导过,对于超定方程组 Ax≈bAx\approx bAx≈b(AAA 是 m×nm\times nm×n,m>nm>nm>n,列满秩),最小二乘解是: x=(A⊤A)−1A⊤b x = (A^\

虾球 68

GAMES001 奇异值分解与主成分分析SVD & PCA 学习:矩阵的伪逆:矩阵的右逆

在讲右逆之前,要先明确一个前提条件:这里讨论的矩阵 AAA,形状是 m×nm\times nm×n,并且 m<nm<nm<n。 也就是说,AAA 的行数比列数少,行少列多,形象地说就是一个"矮胖"的矩阵,专业说法叫"宽矩阵"(wide matrix)。 为什么要强调这一点?因为矩阵的行数和列数关系,决定了方程 Ax=bAx=bAx=b 是"解不够多"还是"解太多":任何一个矩阵 AAA(这里是 m×nm\times nm×n,m<nm<nm<n)都可以做奇异值分解,写成三个矩阵相乘的形式: A=UΣVT A

虾球 120

GAMES001 奇异值分解与主成分分析SVD & PCA 学习:形状匹配:把 t 代回去,问题就只剩下旋转 R了

上一节已经推出了最优平移量的公式: t=pc−Rqc t = p_c - Rq_c t=pc​−Rqc​ 这个公式有一个问题:它本身还包含着未知的 RRR,所以还不能直接拿来用;但它确实告诉我们一件很有用的事——不管最终选出来的 RRR 是什么,最优的 ttt 永远可以由这个公式算出来。既然如此,干脆把这个 ttt 的表达式,反过来代回最开始的目标函数里,把 ttt 这个未知量彻底"消掉",这样一来,原来同时含有 R,tR,tR,t 两个未知量的问题,就变成了一个只含有 RRR 一个未知量的问题。这正是这一

虾球 133
上一篇: Probability Integral Transform
下一篇: Using C++ 11's Smart Pointers
d_delete
博客等级 码龄14年 2粉丝 4原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值