| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 终于明白PCA降维的数学原理了 -> 正文阅读 |
|
[人工智能]终于明白PCA降维的数学原理了 |
一、相关资料本文主要参考了PCA的数学原理 ,除此之外加上了自己的一些理解和笔记,以及PCA代码实战。
二、简介在机器学习领域中,我们对原始数据提取特征后的维度可能是很高的,比如10万维,在这个 PCA(Principal Component Analysis)作为降维中最经典的方法,至今已有100多年的历史, 机器学习中经常要处理成千上万甚至几十万维的数据在这种情况下,机器学习的资源消耗是不可接受的,因此我们必须对数据进行降维。 但是降维必然意味着信息的丢失,不过鉴于实际数据本身常常存在的相关性,我们可以想办法在降维的同时将信息的损失尽量降低。 例如淘宝店铺的数据,从经验我们可以知道,“浏览量”和“访客数”往往具有较强的相关关系,而“下单数”和“成交数”也具有较强的相关关系。这里我们非正式的使用“相关关系”这个词,可以直观理解为“当某一天这个店铺的浏览量较高(或较低)时,我们应该很大程度上认为这天的访客数也较高(或较低)”。 这种情况表明,如果我们删除浏览量或访客数其中一个指标,我们应该期待并不会丢失太多信息。因此我们可以删除一个,以降低机器学习算法的复杂度。 上面给出的是降维的朴素思想描述,可以有助于直观理解降维的动机和可行性,但并不具有操作指导意义。
三、PCA数学原理(最大方差理论,最大可分性)设向量B的模为1,则A与B的内积值等于A向B所在直线投影的矢量长度 3.1 基要准确描述向量,首先要确定一组基,然后给出在基所在的各个直线上的投影值(该向量与基进行点积),就可以了 一个二维向量可以对应二维笛卡尔直角坐标系中从原点出发的一个有向线段 例如,在二维空间中向量(3,2),他在
e
1
=
(
1
,
0
)
e_1=(1,0)
e1?=(1,0)和
e
2
=
(
0
,
1
)
e_2=(0,1)
e2?=(0,1)基下的坐标为(3,2)。实际上我们可以选择任意两组线性无关的向量作为基。
α
1
=
(
1
/
2
,
1
/
2
)
\alpha_1=(1/\sqrt 2,1 /\sqrt 2)
α1?=(1/2?,1/2?)和
α
2
=
(
?
1
/
2
,
1
/
2
)
\alpha_2=(-1/\sqrt 2,1/\sqrt 2)
α2?=(?1/2?,1/2?)也可以成为一组基,一般来说,我们希望基的模是1,因为从内积的意义可以看到,如果基的模是1,那么就可以方便的用 如何获得(3,2)在新基上的坐标? 向量(3,2)在这组新基下的坐标为 ( ( 3 , 2 ) ? α 1 , ( 3 , 2 ) ? α 2 ) = ( 5 2 , ? 1 2 ) ((3,2)\cdot \alpha_1,(3,2)\cdot \alpha_2)=\left(\frac{5}{\sqrt{2}},-\frac{1}{\sqrt{2}}\right) ((3,2)?α1?,(3,2)?α2?)=(2?5?,?2?1?) 通常来说,基并不要求是正交的,但是呢,通常来说正交性质比较好,所以一般使用的基都是正交的。 3.2 基变换标准正交基:基两两之间点积为0,并且每个基的范数为1 问题:设向量 v = ( 5 , 1 , 3 , 4 , 0 , . . , 3 ) v=(5,1,3,4,0,..,3) v=(5,1,3,4,0,..,3)假设 ( e 1 , e 2 , . . . , e n ) (e_1,e_2,...,e_n) (e1?,e2?,...,en?)是n维空间中的自然基(也是标准正交基), ( α 1 , α 2 , . . . , α n ) (\alpha_1, \alpha_2,...,\alpha_n) (α1?,α2?,...,αn?)是n维空间中的另一组标准正交基,则n维向量 v v v在 ( α 1 , α 2 , . . . , α n ) (\alpha_1, \alpha_2,...,\alpha_n) (α1?,α2?,...,αn?)这组基下的坐标是多少? 根据前面的介绍向量
v
v
v在新基下的坐标为 那如果我现在有很多个向量
v
1
,
v
2
,
.
.
v
m
v_1,v_2,..v_m
v1?,v2?,..vm?,那我就可以转换成矩阵的形式来表示这m个向量在新基下的坐标
3.3 如何将数据从高维降到低维,同时信息损失更少?上述的操作没有实战性,因为我们没法衡量要删哪几列,而PCA给了一种具体的衡量标准。 3.4 均值、方差、协方差3.5 PCA降维的优化目标简单来说,PCA希望找到这样一组基 ( α 1 , α 2 , . . . , α n ) (\alpha_1, \alpha_2,...,\alpha_n) (α1?,α2?,...,αn?),使得: 原始的m条数据在这组基下的m个坐标(m个新数据)
用数学公式来表示上面的优化目标: 解释下为什么 D = 1 m ? 1 Y ? Y T D=\frac{1}{m-1}Y\cdot Y^T D=m?11?Y?YT是m个新数据的协方差矩阵? 我们在做PCA前,会先进行去中心化(平移一下,让每个维度的m个数据的平均值为0),好处是表示方差和协方差的时候比较简单。 3.6 最终的优化目标换句话说,现在优化目标变成了寻找一个矩阵
α
\alpha
α,满足
α
C
α
T
\alpha C\alpha^T
αCαT是一个对角矩阵(其实
C
n
×
n
=
1
m
?
1
v
v
T
C_{n\times n}=\frac{1}{m-1}vv^T
Cn×n?=m?11?vvT,显然 至于这个矩阵
α
\alpha
α怎么求,在数学上叫做 四、PCA算法总结PCA算法的两种实现方法:
4.1 基于
|
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/27 2:18:37- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |