关于特征值、特征向量的讲解有很多的教程,对于这些枯燥的数学基础怎么运用到自己的实际计算机视觉实验中,是一项很重要的任务。算法的底层其实就是数学公式的各种结合与推导,有时间不是我们不能很好的去理解这些算法基础,而是没有一个很好的教程带领我们这些小白去一步步的从底层学习。写博客的目的一方面就是记录自己的总结,另一方面就是用自己的大白话去描述这些专业的术语与思想,方便自己能看懂学习。(以上纯属个人观点)

----------矩阵---------

首先,我们把矩阵比作跑步,跑步最重要的就是知道两个要素方向(朝哪个方向跑)和速度(我要跑的多快),而矩阵的特征向量就是跑步的方向,矩阵的特征值就是跑步的速度。(这个比喻只是帮助大家理解怎么由数学概念转换到实际生活运用中)

---------线性变换-------

我们知道,矩阵乘法对应了一个变换,是把任意一个向量变成另一个方向或长度都大多不同的新向量。在这个变换的过程中,原向量主要发生旋转、伸缩的变化。如果矩阵对某一个向量或某些向量只发生伸缩变换,不对这些向量产生旋转的效果,那么这些向量就称为这个矩阵的特征向量,伸缩的比例就是特征值。实际上,上述的一段话既讲了矩阵变换特征值及特征向量的几何意义(图形变换)也讲了其物理含义。物理的含义就是运动的图景:特征向量在一个矩阵的作用下作伸缩运动,伸缩的幅度由特征值确定。特征值大于1,所有属于此特征值的特征向量身形暴长;特征值大于0小于1,特征向量身形猛缩;特征值小于0,特征向量缩过了界,反方向到0点那边去了。关于特征值和特征向量,这里请注意两个亮点。这两个亮点一个是线性不变量的含义,二个是振动的谱含义。

所谓的线性变换(旋转、伸缩)就是向量在不同的基(其实就是单位特征向量组成的坐标系)之间进行变来变去。下图给出了所用的基和原点:

1.在基下面有一个(如左图):             2.将左乘一个矩阵A,可得下图(如中图):         3.再将左乘一个矩阵A,可得下图(如右图):

                                      

3.下面改变一下的方向:(如左图)                  4.再将左乘一个矩阵A,可得下图(如右图):

                            

得出结论:

如果存在某个或某些向量在A作用之后,它只是伸长或者缩短,其位置仍停留在其原来张成的直线上,那么称之为A的特征向量,伸长或者缩短的倍数称为对应特征向量的特征值

1.未改变方向的A在同一条直线上,只是A的长度要比短。缩短了倍,该是矩阵A的特征值,对应的A是矩阵A的特征向量。

2.经过改变方向后的和A在同一条直线上,只是A的长度要比长,则是矩阵A的特征向量,而A在长度上是倍,该也是矩阵A的特征值。即在矩阵A的作用下,保持方向不变,进行倍的拉伸。可写作:

  (从上述结果可以看出,矩阵A不止有一个特征值与特征向量,特征向量所在直线上的向量都是特征向量)

特征向量所在直线包含了所有的特征向量,这些总的组成了特征空间。

(两个红色箭头就是最大特征值,最小特征值,之间组成了特征空间,改变的位置,以及矩阵A的值,特征空间会随着矩阵的变化而改变,即上述所比喻的跑步,所对应的速度最大的方向就是由最大特征值对应的特征向量表现出来的)

特征向量是线性不变量:所谓特征向量概念的亮点之一是不变量,这里叫线性不变量。因为我们常讲,线性变换啊线性变换,不就是把一根线(向量)变成另一根线(向量),线的变化的地方大多是方向和长度一块变。而一种名叫“特征向量”的向量特殊,在矩阵作用下不变方向只变长度。不变方向的特性就被称为线性不变量。(特征向量之所以被称为“特征”,因为它具有不变的特性)

特征值与特征向量性质:

1.只有方阵才有特征值和特征向量

方阵总有特征值,因为总有特征多项式(特征方程),但不是所有方阵都有实数特征解

实方阵一定有实数特征解

2.不同特征值对应的特征向量是线性无关的

3.对于实对称矩阵或埃尔米特矩阵来说,不同特征值对应的特征向量必定正交(相互垂直)

--------举例--------

以对角矩阵为例:

------------相似矩阵---------------

设 A,B 都是 n 阶矩阵,若有可逆矩阵 P ,使 AP=B, 则称 B 是 A 的相似矩阵,或说 A 和 B 相似。

运用的几何意义是:同一线性变换在不同基下的表达形式(类似于直角坐标到极坐标系下图像是不会变换的)。(掌握相似矩阵的性质)

----------对角矩阵--------

对角矩阵(diagonal matrix)是一个主对角线之外的元素皆为0的矩阵,常写为diag(a1,a2,…,an) 。对角矩阵可以认为是矩阵中最简单的一种,值得一提的是:对角线上的元素可以为 0 或其他值,对角线上元素相等的对角矩阵称为数量矩阵;对角线上元素全为1的对角矩阵称为单位矩阵。对角矩阵的运算包括和、差运算、数乘运算、同阶对角阵的乘积运算,且结果仍为对角阵。

-----矩阵对角化:对n阶矩阵A,如果可以找到可逆矩阵P,使得AP=对角阵,就称为把方阵A对角化。

矩阵对角化的充要条件:n阶矩阵有n个线性无关的特征向量。 
推论:若n阶方阵A有n个互不相同的特征值,则A可对角化。而且:1.对角阵的主对角元素为A的特征值。2. 可逆矩阵P由A的n个线性无关的特征向量作列向量构成。

可对角化,是有条件的,这里又用到了特征向量。你只有找到A的n个线性无关的特征向量,才能将A顺利地对角化。

根据特征值与特征向量,用于找矩阵的相似对角阵,非常有意义。

举例:

---------

------特征值分解---------------

首先解释一下为什么这些值叫特征值,这些向量叫特征向量。因为:

1.在相似变换中,这些东西不变,而且其他不变性质可以通过特征值不变来推导;所以特征值是相似的这些矩阵的集合(这一类矩阵)的公共属性,它当然可以作为特征。

2.从几何意义上讲,特征向量描述了矩阵对应的线性变换的主要变换方向。线性变换对向量的作用是伸缩(新的长度)和旋转(新的方向),旋转会消减拉伸的作用,特征向量只有伸缩没有旋转,它就代表了这个线性变换的主要方向;那么特征值就是描述该方向上的变换速度(倍数),所以把特征值排序,从大到小的特征值及其特征向量能近似地描述原矩阵的主变换方向和变换速度。

特征值分解是找最相似的矩阵:

特征值分解是将一个矩阵分解为如下形式: A=Q∑, 
  其中,Q是这个矩阵A的特征向量组成的矩阵,Σ是一个对角矩阵,每一个对角线元素就是一个特征值,里面的特征值是由大到小排列的,这些特征值所对应的特征向量就是描述这个矩阵变化方向(从主要的变化到次要的变化排列)。也就是说矩阵A的信息可以由其特征值和特征向量表示。
  
  对于矩阵为高维的情况下,那么这个矩阵就是高维空间下的一个线性变换。可以想象,这个变换也同样有很多的变换方向,我们通过特征值分解得到的前N个特征向量,那么就对应了这个矩阵最主要的N个变化方向。我们利用这前N个变化方向,就可以近似这个矩阵(变换)。
 
  总结一下,特征值分解可以得到特征值与特征向量,特征值表示的是这个特征到底有多重要,而特征向量表示这个特征是什么。不过,特征值分解也有很多的局限,比如说变换的矩阵必须是方阵。

----------具体应用在图像压缩上,比如说,有这么一副512×512的图片(方阵才有特征值),这个图片可以放到一个矩阵里面去,就是把每个像素的颜色值填入到一个512×512512×512的 A 矩阵中。根据之前的矩阵对角化A=p,其中为对角阵,对角线上是从大到小排列的特征值,我们只保留前面50个的特征值(也就是最大的50个,其实也只占了所有特征值的百分之十),其它的都填0,重新计算矩阵后,利用新得到的矩阵,进行恢复图像,效果仍然与原图像差不多。

         

----------------

1.左乘矩阵        

上述操作发生旋转变成了标准基(如上述右图)

2.继续左乘矩阵

得到如下图:

这两次相乘对应于前边的讲解,第一次乘以P特征向量,(就是对基进行旋转)相当于指明了跑步的方向。第二次乘以特征值,就是指明了跑步的速度的大小。

因此如果特征向量正交,这样就能保证变换的最大方向在基方向,如果特征向量不正交就不能保证变换在最大方向上。因此,在实际应用中就要去找正交基,但是特征向量很有可能不是正交的,故需要奇异值分解(SVD)。

3.在上述基础上再次的左乘,就会把基变换回去。如下图:

(在此整个过程中只是把整个图像坐标系给旋转、拉伸了而已。图像并没有变化)

//Python求特征值与特征向量
>>> import numpy as np
>>> a=np.array([[2,-1],[-1,2]])
>>> a
array([[ 2, -1],[-1,  2]])
>>> e,q=np.linalg.eig(a)
>>> e # 特征值
array([ 3.,  1.])
>>> q # 特征向量作为列向量
array([[ 0.70710678,  0.70710678],[-0.70710678,  0.70710678]])
>>>
>>> a=np.array([[1,2,3],[3,2,5],[1,10,8]])
>>> e,q=np.linalg.eig(a)
>>> e
array([ 13.50864036,  -0.42667365,  -2.0819667 ])
>>> q
array([[-0.27543318, -0.6534998 , -0.23748816],[-0.44255955, -0.44847532, -0.67779488],[-0.85339183,  0.60976053,  0.69584012]])
>>>
>>> E=np.diag(e) # 对角阵
>>> E
array([[ 13.50864036,   0.        ,   0.        ],[  0.        ,  -0.42667365,   0.        ],[  0.        ,   0.        ,  -2.0819667 ]])

图片截取来自知乎。

机器学习中的数学基础:(1)实际应用中矩阵特征值与特征向量的几何意义相关推荐

  1. 机器学习中的数学基础:(1.1)矩阵特征值和特征向量的几何意义

    给定一个二维矩阵 先求出该矩阵的特征值与特征向量,特征值分别获是:, 对应的特征向量为: (列向量)PS:此处的U是正交矩阵,根据正交矩阵的性质,可以有 如果从定义来理解特征向量的化,某一物体经过该矩 ...

  2. 「管理数学基础」1.3 矩阵理论:特征值与特征向量

    文章目录 特征值与特征向量 定义 特征向量的性值 特征矩阵.特征多项式.特征方程 例题 解答 分析 定理:特征向量线性无关 使用数学归纳法证明 特征值与特征向量 定义 Ax=λxAx = \lambd ...

  3. MATLAB中求矩阵特征值和特征向量

    格式:[X,B]=eig(A) %求矩阵A的特征值和特征向量,其中B的对角线元素是特征值 eg: 特征值0.8105对应的特征向量是[0.3365 -0.9417]: 特征值21.2895对应的特征向 ...

  4. 【机器学习中的数学基础】矩阵特征值、特征向量和特征值分解的几何意义

    [机器学习中的数学基础]矩阵特征值.特征向量和特征值分解的几何意义 在<机器学习>西瓜书中的第十章提到了"多维缩放"(简称MDS)方法,该方法是一种经典的的降维方法.此 ...

  5. python中向量长度_线性代数精华——矩阵的特征值与特征向量

    点击上方蓝字,和我一起学技术. 今天和大家聊一个非常重要,在机器学习领域也广泛使用的一个概念--矩阵的特征值与特征向量. 我们先来看它的定义,定义本身很简单,假设我们有一个n阶的矩阵A以及一个实数λ, ...

  6. 机器学习中的数学基础(2)——理解基、线性组合与向量空间

    https://www.toutiao.com/a6668922466275951118/ 这是<机器学习中的数学基础>系列的第2篇. 铺垫 在介绍各种"高大上"的名词 ...

  7. 免费教材丨第51期:数学基础课程----概率论教程、机器学习中的数学基础

    小编说 过去几个月里,有不少人联系我,向我表达他们对人工智能.数据科学.对利用机器学习技术探索统计规律性,开发数据驱动的产品的热情.但是,我发现他们中有些人实际上缺少为了获取有用结果的必要的数学直觉和 ...

  8. 秦曾昌人工智能课程---1、机器学习中的数学基础

    秦曾昌人工智能课程---1.机器学习中的数学基础 一.总结 一句话总结: 函数+线代:了解数学常用函数,了解矩阵,了解线性代数 由浅入深:人工智能需要的高数基础并不多,由浅入深,很简单的 1.机器学习 ...

  9. 秦曾昌人工智能课程---2、机器学习中的数学基础2

    秦曾昌人工智能课程---2.机器学习中的数学基础2 一.总结 一句话总结: 概率论在机器学习中比较重要 1.机器学习中最重要的数学基础是什么? 概率和统计:机器学习中很多情况需要处理不确定性, 2.我 ...

最新文章

  1. matlab摆线等时性程序,摆的等时性实验报告.doc
  2. HTML5数据库建模,HTML5的五种客户端离线存储方案
  3. Python处理word文件
  4. multinorm r语言_与心理学数据分析相关的R工具包
  5. Spring Integration –轮询文件的创建和修改
  6. day19_java基础加强_动态代理+注解+类加载器
  7. java冒泡法优化_数据结构java版之冒泡排序及优化
  8. java如何获取tree_如何从javac插件获取memberselecttree中的表达式类型?
  9. Javascript基础之Array数组API
  10. ecshop添加404页面
  11. 【生信技能树2020-10-31】单细胞数据挖掘学习笔记-1.1 下载、探索数据
  12. 5G/NR BWP基本概念
  13. 【动画演示软件】Focusky教程 | 如何隐藏某帧的内容,使其在演示时才出现?
  14. 两家符合CMMB标准的手机电视芯片厂商网址
  15. 计算机管理员绩效指标,网络管理员绩效kpi考核标准..doc
  16. unity2d自动生成敌人_在Unity 2D中产生敌人
  17. P4 晶体管四种工作状态+静态分析【更新】
  18. [Ant自动打包]ant执行命令的详细参数和Ant自带的系统属性
  19. 计算机网络互连基础技术及实战
  20. python数据域宽左对齐_Python语言及其运用_第七章_像高手一样玩转数据

热门文章

  1. Android 设置透明的方法
  2. Android aar 代码查看
  3. NOIP2012 DAY1 T2 国王游戏
  4. 机器学习与算法面试太难?
  5. Springboot在IDEA热部署的配置方法
  6. php 操作分表代码
  7. 结构化方法与面向对象方法之比较
  8. 用sublime server 启动本地服务器(手机访问电脑页面)
  9. 关于学习编程的一些看法
  10. Codeforces Round #228 (Div. 1)B