热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

随机向量x的协方差阵_【科普】如何正确理解特征值与特征向量

Greeting!特征值与特征向量是大学线性代数与统计学课程里的内容,当年强背了过去,并没有真正理解过这个问题。为了以后学习统计学习方法更

aca97a9596cd0c71399f3a301bfc04f6.png

Greeting!

特征值与特征向量是大学线性代数与统计学课程里的内容,当年强背了过去,并没有真正理解过这个问题。为了以后学习统计学习方法更方便,在此记录下学习文章以加深理解。(个人观点,如有错漏请提出)


抽象理解

特征值(eigenvalue)和特征向量(eigenvector)具有共同前缀 eigen- ,其起源于德语,意为“特征”。首先我们应该充分理解“特征”的含义:对于线性代数而言,特征向量和特征值体现了矩阵的本质,“特征”强调了单个矩阵的特点,相当于它的ID card。

从线性代数的角度出发,如果把矩阵看作n维空间下的一个线性变换,这个变换有很多的变换方向,我们通过特征值分解得到的前N个特征向量,那么就对应了这个矩阵最主要的N个变化方向。我们利用这前N个变化方向,就可以近似这个矩阵(变换)。其中的N个变化方向,就是这个矩阵最重要的“特征”。

有了特征的概念后,我们又如何理解特征值与特征向量呢?可以作这样比喻:

  1. 如果把矩阵看作是位移,那么特征值 = 位移的速度,特征向量 = 位移的方向
  2. 特征向量在一个矩阵的作用下作伸缩运动,伸缩的幅度由特征值确定(注意观察定义式)。特征值大于1,所有属于此特征值的特征向量变长;特征值属于(0, 1),特征向量缩短;特征值小于0,特征向量则反向延长。

我们都知道线性代数中,左乘一个矩阵是对应着行变换,右乘一个矩阵对应列变换,其实际的作用也就是对常规坐标系进行了迁移。那么,【重点】对于在普通二维坐标系下的向量

,它在矩阵
描述空间中的表示与自己单纯的进行拉伸或者缩放的效果一致,满足这种特殊性的
就是特征矩阵,对应的拉伸量
就是特征值。

有了这个特殊的性质,特征向量与特征值出现在很多有矩阵运算的地方,如主成分分析(PCA)、奇异值分解(SVD)等机器学习方法中更是时常提到。至于PCA与SVD的基本思想,请看我接下来的科普文章。

关于定义

设A是n阶矩阵,如果存在常数

和n维非零向量X,

使得

则称

为矩阵A的一个
特征值(标量),X为矩阵A对应于特征值的一个特征向量(
)

该式子可理解为向量x在几何空间中经过矩阵A的变换后得到向量

。由此可知,向量
经过矩阵A变换后,只是大小伸缩了
倍。总而言之:
特征向量提供了复杂的矩阵乘法到简单的数乘之间的转换!
  • 并且,我们有以下推论:

其中第三个是特征值分解公式,

特征向量矩阵(n个大小为
的特征向量
组成)。
是包含对应特征值的
对角矩阵。根据不同的特征值的大小,可以知道每个特征向量对应权重,即其重要性。
  • 从解题的角度,我们再来谈谈如何求特征值和特征向量:

设向量a为矩阵A对应于特征值 λ 的特征向量,

则有:

所以求解a就是求解

的非零解。

其中I是单位矩阵,因此

称为A的
特征多项式

前置知识

(1)方差、协方差、相关系数、协方差矩阵

方差

方差用来度量随机变量 X 与其数学期望 E(X) 的偏离程度,公式为:

方差总是一个非负数,当随机变量的可能值集中在数学期望的附近时,方差较小;反之方差大。由方差的大小可以推断随机变量分布的分散程度

协方差

协方差用来刻画两个随机变量 X , Y 的相关性,公式为:

如果协方差为正,说明X,Y同向变化,协方差越大说明同向程度越高;如果协方差为负,说明X,Y反向运动,协方差越小说明反向程度越高。
对上述“同向”和“反向”的理解:
1)你变大,同时我也变大,说明两个变量是同向变化的,这时协方差就是正的。
2)你变大,同时我变小,说明两个变量是反向变化的,这时协方差就是负的。
3)从数值来看,协方差的数值越大,两个变量同向程度也就越大。反之亦然。

相关系数

用随机变量X,Y的协方差除以X的标准差和Y的标准差,公式为:

相关系数也可以看成是协方差:一种剔除了两个变量量纲,标准化后的协方差。

相关系数是一种标准化后的协方差,有以下特点:
1)也可以反映两个变量变化时是同向还是反向,如果同向变化就为正,反向变化就为负。
2)它消除了两个变量变化幅度的影响,而只是单纯反应两个变量每单位变化时的相似程度。

对于两个随机变量:
1)当他们的相关系数为1时,说明两个变量变化时的正向相似度最大,即,你变大一倍,我也变大一倍;你变小一倍,我也变小一倍。也即是完全正相关(以X、Y为横纵坐标轴,可以画出一条斜率为正数的直线,所以X、Y是线性关系的)。
2)随着他们相关系数减小,两个变量变化时的相似度也变小,当相关系数为0时,两个变量的变化过程没有任何相似度,也即两个变量无关。
3)当相关系数继续变小,小于0时,两个变量开始出现反向的相似度,随着相关系数继续变小,反向相似度会逐渐变大。
4)当相关系数为-1时,说明两个变量变化的反向相似度最大,即,你变大一倍,我变小一倍;你变小一倍,我变大一倍。也即是完全负相关(以X、Y为横纵坐标轴,可以画出一条斜率为负数的直线,所以X、Y也是线性关系的)。

协方差矩阵

7b1ea519adbdb9731e465a80d744b1d8.png
  • 协方差只能处理二维问题,即两个随机变量的相关程度。
  • 维数多了就需要计算多个协方差,于是出现了协方差矩阵。
  • 协方差矩阵的每一个值就是对应下标的两个随机变量的协方差(即相关程度)。

可以看出,协方差矩阵是一个对称矩阵,而且对角线是各个维度的方差。

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]])


应用实例分析——机器学习中的分类问题

  机器学习中的分类问题,给出178个葡萄酒样本,每个样本含有13个参数,比如酒精度、酸度、镁含量等,这些样本属于3个不同种类的葡萄酒。任务是提取3种葡萄酒的特征,以便下一次给出一个新的葡萄酒样本的时候,能根据已有数据判断出新样本是哪一种葡萄酒。

问题详细描述:http://archive.ics.uci.edu/ml/datasets/Wine
训练样本数据:http://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data

把数据集赋给一个178行13列(13个特征)的矩阵R,它的协方差矩阵C是13行13列的矩阵,对C进行特征分解,对角化

其中U是特征向量组成的矩阵,D是特征组成的对角矩阵,并按由大到小排列。

然后,令:

就实现了数据集特征向量上的投影。

【注意】

中的数据列是按照对应特征值的大小排列的,后面的列对应的特征值小,因而去掉以后对整个数据集的影响比较小。比如,现在我们通过上面的公式去掉后面的8列,只保留前5列(
),就相当于将13维的数据通过PCA降到了5维。

Talk is cheap, show me the code!

根据蜥蜴书的内容,后面会专门开一个专栏分享如何使用sklearn库解决上述机器学习问题的code以及对应注释,同步会上传至Github上,敬请期待!



推荐阅读
  • 浅析python实现布隆过滤器及Redis中的缓存穿透原理_python
    本文带你了解了位图的实现,布隆过滤器的原理及Python中的使用,以及布隆过滤器如何应对Redis中的缓存穿透,相信你对布隆过滤 ... [详细]
  • 本文介绍如何使用OpenCV和线性支持向量机(SVM)模型来开发一个简单的人脸识别系统,特别关注在只有一个用户数据集时的处理方法。 ... [详细]
  • 本文介绍如何使用 Python 的 DOM 和 SAX 方法解析 XML 文件,并通过示例展示了如何动态创建数据库表和处理大量数据的实时插入。 ... [详细]
  • 本文介绍了如何使用Python爬取妙笔阁小说网仙侠系列中所有小说的信息,并将其保存为TXT和CSV格式。主要内容包括如何构造请求头以避免被网站封禁,以及如何利用XPath解析HTML并提取所需信息。 ... [详细]
  • 本文详细探讨了使用Python3编写爬虫时如何应对网站的反爬虫机制,通过实例讲解了如何模拟浏览器访问,帮助读者更好地理解和应用相关技术。 ... [详细]
  • python模块之正则
    re模块可以读懂你写的正则表达式根据你写的表达式去执行任务用re去操作正则正则表达式使用一些规则来检测一些字符串是否符合个人要求,从一段字符串中找到符合要求的内容。在 ... [详细]
  • 本文介绍了如何在Python中使用插值方法将不同分辨率的数据统一到相同的分辨率。 ... [详细]
  • 一个建表一个执行crud操作建表代码importandroid.content.Context;importandroid.database.sqlite.SQLiteDat ... [详细]
  • Spring Data JdbcTemplate 入门指南
    本文将介绍如何使用 Spring JdbcTemplate 进行数据库操作,包括查询和插入数据。我们将通过一个学生表的示例来演示具体步骤。 ... [详细]
  • 开机自启动的几种方式
    0x01快速自启动目录快速启动目录自启动方式源于Windows中的一个目录,这个目录一般叫启动或者Startup。位于该目录下的PE文件会在开机后进行自启动 ... [详细]
  • 本文讨论了在进行 MySQL 数据迁移过程中遇到的所有 .frm 文件报错的问题,并提供了详细的解决方案和建议。 ... [详细]
  • 本文详细介绍了 InfluxDB、collectd 和 Grafana 的安装与配置流程。首先,按照启动顺序依次安装并配置 InfluxDB、collectd 和 Grafana。InfluxDB 作为时序数据库,用于存储时间序列数据;collectd 负责数据的采集与传输;Grafana 则用于数据的可视化展示。文中提供了 collectd 的官方文档链接,便于用户参考和进一步了解其配置选项。通过本指南,读者可以轻松搭建一个高效的数据监控系统。 ... [详细]
  • 大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式
    大类|电阻器_使用Requests、Etree、BeautifulSoup、Pandas和Path库进行数据抓取与处理 | 将指定区域内容保存为HTML和Excel格式 ... [详细]
  • Presto:高效即席查询引擎的深度解析与应用
    本文深入解析了Presto这一高效的即席查询引擎,详细探讨了其架构设计及其优缺点。Presto通过内存到内存的数据处理方式,显著提升了查询性能,相比传统的MapReduce查询,不仅减少了数据传输的延迟,还提高了查询的准确性和效率。然而,Presto在大规模数据处理和容错机制方面仍存在一定的局限性。本文还介绍了Presto在实际应用中的多种场景,展示了其在大数据分析领域的强大潜力。 ... [详细]
  • javascript分页类支持页码格式
    前端时间因为项目需要,要对一个产品下所有的附属图片进行分页显示,没考虑ajax一张张请求,所以干脆一次性全部把图片out,然 ... [详细]
author-avatar
zhanghuabing
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有