传送门:请点击我git
若是点击有误:https://github.com/LeBron-Jian/DeepLearningNotegithub
这里我打算补充一下机器学习涉及到的一些关于特征值和特征向量的知识点。算法
(注意:目前本身补充到的全部知识点,均按照本身网课视频中老师课程知识点走的,同时一些公式是网友辛辛苦苦敲的,这里用到那个博客均在文末补充地址,不过这里首先表示感谢!!)数组
这里学习特征值和特征向量以前先说一下机器学习中特征提取的特征向量与矩阵的特征向量的区别框架
个人理解是机器学习的特征向量是指你所提取的特征组成的向量(也称为 feature vector),这个特征能够是任意的,好比人的身高体重,头发的长短等,单位也是由本身决定,彻底看你的需求。而矩阵的特征向量(称为 eigen vector)是线性代数里的概念,是对矩阵求解特征方程获得的向量。不过这里我主要学习线性代数中矩阵的特征值和特征向量。机器学习
一个标量就是一个单独的数,通常用小写的变量名称表示。 函数
一个向量就是一列数,这些数是有序排列的。用过次序中的索引,咱们能够肯定每一个单独的数。一般会赋予向量粗体的小写名称。当咱们须要明确表示向量中的元素时,咱们会将元素排列成一个方括号包围的纵柱:学习
咱们能够把向量看作空间中的点,每一个元素是不一样的坐标轴上的坐标。优化
矩阵是二维数组,其中的每个元素被两个索引而非一个所肯定。咱们一般会赋予矩阵粗体的大写变量名称,好比A。若是一个实数矩阵高度为 m,宽度为 n,那么咱们说 A属于Rm*n。spa
矩阵在机器学习中很是重要,实际上,若是咱们如今有N个用户的数据,每条数据含有M个特征,那其实它对应的就是一个N*M的矩阵;再好比,一张图由 16*16的像素点组成,那就是一个16*16的矩阵。
几何代数中定义的张量是基于向量和矩阵的推广,通俗一点理解的话,咱们能够将标量视为零阶张量,矢量视为一阶张量,那么矩阵就是二阶张量。
例如,能够将任意一张彩色图片表示成一个三阶张量,三个维度分别是图片的高度,宽度和色彩数据。将这张图用张量表示出来,就是最下面的这张表格:
其中表的横轴表示图片的宽度值,这里只截取0~319;表的纵轴表示图片的高度值,这里只截取0~4;表格中每一个方格表明一个像素点,好比第一行和第一列的表格数据为 [1.0, 1.0, 1.0],表明的就是 RGB三原色在图片的这个位置的取值状况(即R=1.0, G=1.0, B=1.0)。
固然咱们还能够将这必定义继续扩展,即:咱们能够用四阶张量表示一个包含多张图片的数据集,这四个维度分别是:图片在数据集中的编号,图片高度,宽度以及色彩。
张量在深度学习中是一个很重要的概念,由于它是一个深度学习框架中的核心组件,后续的全部运算和优化算法是基于张量进行的。
有时咱们须要衡量一个向量的大小。在机器学习中,咱们常用被称为范数(norm)的函数衡量矩阵大小,Lp范围以下:
因此:L1 范数 ||x||:为 x 向量各个元素绝对值之和;L2 范数 ||x||2 为 x 向量各个元素平方和的开方。
方差用来度量随机变量 X 与其数学指望 E(X) 的偏离程度,公式为:
方差总数一个非负数,当随机变量的可能值集中在数学指望的附加时,方差较小;反之方差大。由方差的大小能够推断出随机变量分布的分散程度。
协方差用来刻画两个随机变量 X, Y 的相关性,公式为:
若是协方差为正,说明X, Y 同向变化,协方差越大说明同向程度越高
若是协方差为负,说明X, Y反向运动,协方差越小说明反向程度越高
对于上述“同向”和“反向”的理解:
用随机变量X,Y的协方差除以X的标准差和Y的标准差,公式为:
相关系数也能够当作是协方差:一种剔除了两个变量量纲,标准化后的协方差。
相关系数是一种标准化后的协方差,有如下特色:
对于两个随机变量:
协方差只能处理二维问题,即两个随机变量的相关程度
维度多了就须要计算多个协方差,因而出现了协方差矩阵
协方差矩阵的每个值就是对应下标的两个随机变量的协方差(即相关程度)
能够看出,协方差矩阵是一个对称矩阵,并且对角线是各个维度的方差。
Python代码举例:
import numpy as np X = np.array([[-2.1,-1,4.3],[3,1.1,0.12],[3,1.1,0.12]]) #每一行表明一个随机变量,每列表明随机变量的值 #[[-2.1,-1,4.3], # [3,1.1,0.12], # [3,1.1,0.12]] print(np.cov(X)) #[[ 11.71 , -4.286 , -4.286 ], # [ -4.286 , 2.14413333, 2.14413333], # [ -4.286 , 2.14413333, 2.14413333]])
特征值(eigenvalue)和特征向量(eigenvector)具备共同前缀 eigen-,其起源于德语,意为“特征”,而Eigen的英文本意为“本证的,固有的,特有的”意思。再看一下计算特征值所须要的特征行列式所对应的英文单词是 determinant,意思是“决定性的,名词决定性因素”。
首先咱们应该充分理解“特征”的含义:对于线性代数而言,特征向量和特征值体现了矩阵的本质,“特征”强调了单个矩阵的特色,至关于它的 ID card。
从线性代数的角度出发,若是把矩阵看作 n 维空间下的一个线性变换,这个变换有不少的变换方向,咱们经过特征值分解获得的前N个特征向量,那么就对应了这个矩阵最主要的N个变化方向。咱们利用这前N个变化方向,就能够近似这个矩阵(变换)。其中的N个变化方向,就是这个矩阵最重要的“特征”。
有了特征的概念以后,咱们又如何理解特征值与特征向量呢?能够作这样的比喻:
数学定义:对于给定矩阵A,寻找一个常数 λ 和非零向量 x,使得向量 x被矩阵 A 做用后所得的向量 Ax 与原向量 x 平行,而且知足 Ax = λx,则称 λ 为矩阵 A 的一个特征值(标量),X为矩阵 A 对应于特征值的一个特征向量(1*n)。
该式子可理解为向量 x 在几何空间中通过矩阵 A的变换后获得向量 λx。由此可知,向量 X 通过矩阵 A 变化后,只是大小伸缩了 λ 倍。总而言之:特征向量提供了复杂的矩阵乘法到简单的数乘之间的转换。
从解题角度,咱们再看如何求特征值和特征向量:设向量 x 为矩阵 A对应于特征值 λ 的特征向量,即 Ax = λx,则有 (A - λI)x = 0,因此求解 x 就是求解 (A - λI)x = 0 中 x 的非零解。其中 I 为单位矩阵,所以 | λI -A) 称为 X 的特征多项式。
咱们有如下推论:
其中第三个是特征值分解公式,W为 n*n 的特征向量矩阵(n个大小为 1*n 的特征向量 X组成)。Σ 是包含对应特征值的对角矩阵。根据不一样的特征值的大小,可知道每一个特征向量对应权重,即其重要性。
3.3 特征子空间
特征子空间(characteristic subspace)是一类重要的子空间,即对应于线性变换的一特征值的子空间。设V是域P上的线性空间,σ 的对应于特征值 λ0 的全体特征向量与零向量所组成的集合。特征空间中包含了全部的特征向量
咱们知道,对于n阶方阵,可得:
而 x != 0,即齐次线性方程组(*λ)有非零解
方程组(*λ)的解空间称为对应于 λ 的特征子空间。
3.4 特征多项式
设:
则称:
为矩阵 A 的特征多项式,记为 f(λ)。
矩阵乘法从表面来说,是前一个矩阵的行乘之后一个矩阵的列(前提是前一个矩阵的行数等于后一个矩阵的列数);它的真正含义是变换,咱们学习高等代数一开始就学习行变换列变换,因此矩阵乘法就是线性变换。
再来讲一下其定义,若是存在向量 Vi,常数 λi,使得如下式子成立,则称常数 λi 为方阵A的特征值,而向量 Vi 则是可对角化方阵 A的特征向量:
特征向量的代数上含义是:将矩阵乘法转换为数乘操做;
特征向量的几何上含义是:特征向量经过方阵 A 变换变换只进行缩放,而特征向量的方向仍然不变。
特征值分解能够写成如下形式:
其中 U 是由 A 的特征向量组成的矩阵,也是方阵,Σ 是对角矩阵,对角线上是对应的特征值,能够对特征向量 ui 进行正交单位化,这样矩阵A就能够表示为如下形式:
其中 Q 为 U 进行单位正交化后的矩阵, Σ ' 仍是对角矩阵,对角线上是对应的特征值,由于 Q 中的列向量都是单位正交的,因此 QTQ = E ,从而 Q-1 = QT。
好比下面一个矩阵:
它其实对应的线性变换是下面的形式:
由于这个矩阵M乘以一个向量(x, y)的结果是:
上面的矩阵是对称的,因此这个变换时一个对 x, y 轴的方法一个拉伸变换(每个对角线上的元素将会对一个维度进行拉伸变换,当值 > 1,是拉伸,当值 < 1 的时候是缩短)。
下面再看另外一个对称矩阵:
此对称矩阵,它对坐标轴(正交)的影响以下:
将上面右边的坐标轴(图中黑色十字)逆时针旋转 45 度,将会看到:
这样就和最开始的对角矩阵的变换相似了,在某个坐标轴的方向上伸长了3倍,此次的坐标轴发生了旋转,用数学语言就是,给定一个对称矩阵M,存在一个向量V,将M右乘向量V,将M右乘向量V,至关于将这个向量缩放了 λ 倍。式子表达以下:
MVi = λiVi
其中Vi 称为矩阵M的特征向量,λi 称为矩阵M的特征值。因此咱们能够获得如下结论:
下面看一个更通常的矩阵,咱们是否能将其从一组标准正交基变换到另外一组正交基,当矩阵不是对称的时候,好比说矩阵是下面的样子:
它所描述的变化是下面的样子:
这实际上是在平面上对一个轴进行的拉伸变换(如蓝色的箭头所示),在图中,蓝色的箭头是一个最主要的变化方向(变化的方向可能不止一个)。
此时的两条坐标轴并非正交的,若是将右图中的坐标轴旋转 30度,咱们将会看到:
而后再对坐标轴旋转60度,将会看到
此时,两条坐标轴已是正交的,说明对于任意的矩阵,咱们都能找到一组坐标轴,它由原来的坐标轴经过旋转和缩放获得。用几何意义表达以下:
如上图所示,对于二维矩阵M,咱们总能找到一组标准正交基V1和V2,使得 MV1 和 MV2 是正交的,咱们用另外一组标准正交基U1和U2表示 MV1 和 MV2 的方向,这样就将M从一组标准正交基用另外一组标准正交基来表示。
注意:标准正交基
在线性代数中,一个内积空间的正交基(orthogonal basis)是元素两两正交的基,称基中的元素为基向量。倘若一个正交基的基向量的模长都是单位长度 1,则称这正交基为标准正交基或规范正交基。
既然特征值表达了重要程度且和特征向量所对应,那么特征值大的就是主要信息了,基于这点咱们能够提取各类有价值的信息了!咱们都知道线性代数中,左乘一个矩阵是对应着行变换,右乘一个矩阵对应列变换,其实际的做用也就是对常规坐标系进行了迁移。那么对于在普通二维坐标下的向量 x ,它在矩阵 A 描述空间中的表示与本身单纯的进行拉伸或缩放的效果是一致的,知足这种特殊性的 X 就是特征矩阵,对应的拉伸量 λ 就是特征值。
有了这个特殊的性质,特征值与特征向量出如今不少有矩阵运算的地方,如主成分分析(PCA),奇异值分解(SVD) 等机器学习方法中。
图像处理中的 PCA 降维方法(最著名的),选取特征值最高的 k个特征向量来表示一个矩阵,从而达到降维分析 + 特征显示的方法,还有图像压缩的 K-L 变换。再好比不少人脸识别,数据流模式挖掘分析等方面。
如上图所示,原图如左图所示,提取最重要的n个特征来表示,咱们发现仍然能够显示这个图的主要特征。
特征值的求解过程以下:
矩阵A以下:
咱们首先求其特征多项式,经过其特征方程,求解特征值。
则特征值为 λ =2, 1。
而后把每一个特征值 λ 代入线性方程组 (A - λE)x = 0中,求出基础解系。
当 λ = 2 时,解线性方程组 (A - 2E)x = 0,以下:
当 λ = 1 时,解线性方程组 (A - E)x = 0,以下:
设有 m 条 n 维数据:
1,原始数据集矩阵X:
2,均值为(2, 3),求均值后:
3,再求协方差矩阵(C= 1/m*X*XT):
4,特征值:
经过协方差矩阵C的特征方程,求出特征值:
获得:
5,求出对应的一组特征向量:
把每一个特征值代入线性方程组(A - λE)x =0,求出其基础解系,并获得一组特征向量。
6,标准化:
7,选择较大特征值对应的特征向量:
8,执行PCA变换:Y=PX 获得的Y就是PCA降维后的值 数据集矩阵:
首先,咱们展现一下SVD分解的公式:
进行SVD分解的步骤就是:
1,求U(U中的每一个特征向量叫作A的左奇异向量)
从下面公式咱们能够发现,AAT的特征向量组成的就是U向量:
2,求V(V中的每一个特征向量叫作A的右奇异向量)
从下面公式咱们能够发现:ATA 的特征向量组成的就是V矩阵:
3,求Σ
因此先求出ATA和 AAT,进而求出ATA和 AAT 的特征值和特征向量,而后获得U和V,最后经过 σi = √λi 直接求出奇异值,而后代入咱们上面的奇异值分解公式,获得奇异值分解。
咱们须要进行奇异值分解的矩阵A以下:
咱们首先求出 ATA和 AAT:
进行求出 ATA 的特征值和特征向量:
接着求 AAT 的特征值和特征向量:
利用 Avi=σiui,i=1,2 求奇异值:
固然,咱们也能够用 σi = √λi 直接求出奇异值为 √3 和 1。
最终获得 A 的奇异值分解为:
参考地址:
https://zhuanlan.zhihu.com/p/165382601
https://zhuanlan.zhihu.com/p/36584206
https://zhuanlan.zhihu.com/p/126102942
https://www.zhihu.com/question/29589753/answer/1635329454
https://www.zhihu.com/search?type=content&q=%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E7%89%B9%E5%BE%81%E5%80%BC%E5%92%8C%E7%89%B9%E5%BE%81%E5%90%91%E9%87%8F%E7%9A%84%E7%9F%A5%E8%AF%86%E7%82%B9%E3%80%82