协方差矩阵和类内离散度矩阵_类间散度矩阵

协方差矩阵和类内离散度矩阵_类间散度矩阵协方差矩阵和散布矩阵的意义在机器学习模式识别中,经常需要应用到协方差矩阵C和散布矩阵S。如在PCA主成分分析中,需要计算样本的散度矩阵,有的论文是计算协方差矩阵。实质上二者意义差不多,散布矩阵(散度矩阵)前乘以系数1/(n-1)就可以得到协方差矩阵了。在模式识别的教程中,散布矩阵也称为散度矩阵,有的也称为类内离散度矩阵或者类内离差阵,用一个等式关系可表示为:关系:散度矩阵=类内离散度矩阵=类内离差阵=协方差矩阵×(n-1)样本的协方差矩阵乘以n-1倍即为散布矩阵,n表示样本

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

协方差矩阵和散布矩阵的意义

    【尊重原创,转载请注明出处】http://blog.csdn.net/guyuealian/article/details/68922981

      在机器学习模式识别中,经常需要应用到协方差矩阵C和散布矩阵S。如在PCA主成分分析中,需要计算样本的散度矩阵,有的论文是计算协方差矩阵。实质上二者意义差不多,散布矩阵(散度矩阵)前乘以系数1/(n-1)就可以得到协方差矩阵了。

   在模式识别的教程中,散布矩阵也称为散度矩阵,有的也称为类内离散度矩阵或者类内离差阵,用一个等式关系可表示为:

  关系:散度矩阵=类内离散度矩阵=类内离差阵=协方差矩阵×(n-1)

    样本的协方差矩阵乘以n-1倍即为散布矩阵,n表示样本的个数,散布矩阵的大小由特征维数d决定,是一个为d×的半正定矩阵。

一、协方差矩阵的基础

   对于二维随机变量(X,Y)之间的相互关系的数字特征,我们用协方差来描述,记为Cov(X,Y):

协方差矩阵和类内离散度矩阵_类间散度矩阵

那么二维随机变量(X,Y)的协方差矩阵,为

协方差矩阵和类内离散度矩阵_类间散度矩阵

对于三维随机变量X=(X1, X2, X3的协方差矩阵可表示为:

协方差矩阵和类内离散度矩阵_类间散度矩阵

        对于nX=(X1, X2….X n协方差矩阵:

协方差矩阵和类内离散度矩阵_类间散度矩阵

说明:

     (1)协方差矩阵是一个对称矩阵,且是半正定矩阵,主对角线是各个随机变量 的方差(各个维度上的方差)。

   (2)标准差和方差一般是用来描述一维数据的;对于多维情况,而协方差是用于描述任意两维数据之间的关系,一般用协方差矩阵来表示。因此协方差矩阵计算的是不同维度之间的协方差,而不是不同样本之间的

   (3)协方差计算过程可简述为:先求各个分量的均值E(Xi)E(Xj),然后每个分量减去各自的均值得到两条向量,在进行内积运算,然后求内积后的总和,最后把总和除以n-1

例子:设有8个样本数据,每个样本有2个特征:(1,2);(3 3);(3 5);(5 4);(5 6);(6 5);(8 7);(9 8),那么可以看作二维的随机变量(X,Y),即

   X =[1 3 3 5 5 6 8 9]

   Y =[2 3 5 4 6 5 7 8]

   Matlab中可以使用cov(X, Y)函数计算样本的协方差矩阵,其中X,Y都是特征向量。当然若用表示样本的矩阵(X中每一行表示一个样本,每列是一个特征),那么可直接使用cov(X)计算了。

clear all
clc
X=[1,2;3 3;3 5;5 4;5 6;6 5;8 7;9 8]%样本矩阵:8个样本,每个样本2个特征
covX= cov(X)%使用cov函数求协方差矩阵

Jetbrains全家桶1年46,售后保障稳定 运行结果为:

covX =

    7.1429    4.8571
    4.8571    4.0000

当然,可以按定义计算,Matlab代码如下:

clear all
clc
X=[1,2;3 3;3 5;5 4;5 6;6 5;8 7;9 8] %样本矩阵:8个样本,每个样本2个特征
covX= cov(X)                                %使用cov函数求协方差矩阵
%% 按定义求协方差矩阵:(1)使用分量的方法,先求协方差,再组合成协方差矩阵
meanX=mean(X)        %样本均值
varX=var(X)               %样本方差
[Row Col]=size(X);
dimNum=Row;          %s样本个数size(X,1)=8
dim1=X(:,1);              %特征分量1
dim2=X(:,2);              %而在分量2
c11=sum( (dim1-mean(dim1)) .* (dim1-mean(dim1)) ) / ( dimNum-1 );
c21=sum( (dim2-mean(dim2)) .* (dim1-mean(dim1)) ) / ( dimNum-1 ); 
c12=sum( (dim1-mean(dim1)) .* (dim2-mean(dim2)) ) / ( dimNum-1 ); 
c22=sum( (dim2-mean(dim2)) .* (dim2-mean(dim2)) ) / ( dimNum-1 );
C22=[c11,c12;c21,c22]%协方差矩阵

%% 或者(2)直接求协方差矩阵:
tempX= repmat(meanX,Row,1);  
C22=(X-tempX)'*(X-tempX)/(dimNum-1)

运行结果:

covX =    7.1429    4.8571    4.8571    4.0000meanX =     5     5varX =    7.1429    4.0000C22 =    7.1429    4.8571    4.8571    4.0000C22 =    7.1429    4.8571    4.8571    4.0000

说明:
从中可以发现,样本的协方差矩阵的对角线即为样本的方差。

二、协方差矩阵的意义

   为了更好理解协方差矩阵的几何意义,下面以二维正态分布图为例(假设样本服从二维正态分布):

协方差矩阵和类内离散度矩阵_类间散度矩阵

clear all;clc
mu=[0,0];         % 均值向量
C=[5 0;0 1]       %样本的协方差矩阵
[V,D] =eigs(C)    %求协方差矩阵的特征值D和特征向量V
 %% 绘制二维正态分布图
[X,Y]=meshgrid(-10:0.3:10,-10:0.3:10);%在XOY面上,产生网格数据
p=mvnpdf([X(:) Y(:)],mu,C);%求取联合概率密度,相当于Z轴
p=reshape(p,size(X));%将Z值对应到相应的坐标上
figure
set(gcf,'Position',get(gcf,'Position').*[1 1 1.3 1])
subplot(2,3,[1 2 4 5])
surf(X,Y,p),axis tight,title('二维正态分布图')
subplot(2,3,3)
surf(X,Y,p),view(2),axis tight,title('在XOY面上的投影')
subplot(2,3,6)
surf(X,Y,p),view([0 0]),axis tight,title('在XOZ面上的投影');

协方差矩阵C的特征值D和特征向量V分别为:

V =
     1     0
     0     1

D =
     5     0
     0     1

说明:

   1)均值[0,0]代表正态分布的中心点,方差代表其分布的形状。

   2)协方差矩阵C的最大特征值D对应的特征向量V指向样本分布的主轴方向。例如,最大特征值D1=5对应的特征向量V1=[1 0]T即为样本分布的主轴方向(一般认为是数据的传播方向)。次大特征值D2=1对应的特征向量V2=[0 1]T,即为样本分布的短轴方向。

协方差矩阵和类内离散度矩阵_类间散度矩阵

  协方差矩阵和类内离散度矩阵_类间散度矩阵

协方差矩阵C的特征值D和特征向量V分别为:

V =
     0     1
     1     0

D =

     5     0
     0     5

 说明:

   1)由于协方差矩阵C具有两个相同的特征值D1=D2=5,因此样本在V1和V2特征向量方向的分布是等程度的,故样本分布是一样圆形。

   2)特征值D1和D2的比值越大,数据分布形状就越扁;当比值等于1时,此时样本数据分布为圆形。

协方差矩阵和类内离散度矩阵_类间散度矩阵

协方差矩阵和类内离散度矩阵_类间散度矩阵

协方差矩阵C的特征值D和特征向量V分别为:

V =
    0.7071   -0.7071
    0.7071    0.7071

D =
     6     0
     0     4

 说明:

   1)特征值的比值D1/D2=6/4=1.5>1,因此样本数据分布形状是扁形,数据传播方向(样本的主轴方向)为V1=[0.7071 0.7071]T

协方差矩阵和类内离散度矩阵_类间散度矩阵

综合上述,可知: 

(1)样本均值决定样本分布中心点的位置。

(2)协方差矩阵决定样本分布的扁圆程度。

   是扁还是圆,由协方差矩阵的特征值决定:当特征值D1和D2的比值为1时(D1/D2=1),则样本分布形状为圆形。当特征值的比值不为1时,样本分布为扁形;

   偏向方向(数据传播方向)由特征向量决定。最大特征值对应的特征向量,总是指向数据最大方差的方向(椭圆形的主轴方向)。次大特征向量总是正交于最大特征向量(椭圆形的短轴方向)。

三、协方差矩阵的应用

    协方差矩阵(散布矩阵)在模式识别中应用广泛,最典型的应用是PCA主成分分析了,PCA主要用于降维,其意义就是将样本数据从高维空间投影到低维空间中,并尽可能的在低维空间中表示原始数据。这就需要找到一组最合适的投影方向,使得样本数据往低维投影后,能尽可能表征原始的数据。此时就需要样本的协方差矩阵。PCA算法就是求出这堆样本数据的协方差矩阵的特征值和特征向量,而协方差矩阵的特征向量的方向就是PCA需要投影的方向。

    关于PCA的原理和分析,请见鄙人的博客:

    PCA主成分分析原理分析和Matlab实现方法》:http://blog.csdn.net/guyuealian/article/details/68487833

如果你觉得该帖子帮到你,还望贵人多多支持,鄙人会再接再厉,继续努力的~
协方差矩阵和类内离散度矩阵_类间散度矩阵

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/203454.html原文链接:https://javaforall.net

(0)
上一篇 2025年8月14日 下午10:22
下一篇 2025年8月14日 下午11:01


相关推荐

  • hadoop工作平台梳理

    hadoop工作平台梳理

    2022年1月9日
    39
  • 传感器超声波雷达「建议收藏」

    传感器超声波雷达「建议收藏」转自:http://www.itsiwei.com/21962.html在上一次分享中,我介绍了毫米波雷达的原理、数据特性及优缺点。毫米波雷达的低环境敏感和低成本的特性使得其在ADAS和自动驾驶领域得到了广泛的应用。今天要介绍的是一款极其常见的传感器——超声波雷达。如果你觉得超声波雷达有些陌生,那么它还有一个更通俗的名字——倒车雷达。在倒车入库,慢慢挪动车子的过程中,在驾驶室内能听到”…

    2025年11月1日
    4
  • 9种常见的前端跨域解决方案(详解)

    9种常见的前端跨域解决方案(详解)https www imooc com article 一 什么是跨域 在前端领域中 跨域是指浏览器允许向服务器发送跨域请求 从而克服 Ajax 只能同源使用的限制 什么是同源策略 同源策略是一种约定 由 Netscape 公司 1995 年引入浏览器 它是浏览器最核心也最基本的安全功能 如果缺少了同源策略 浏览器很容易受到 XSS CSFR 等攻击 所谓同源是指 协议 域名 端口 三者相同 即便两个不同的域名指向同一个 ip 地址 也非同源 同源策略限制以

    2026年3月19日
    1
  • idea主题下载

    idea主题下载http://www.riaway.com/index.phphttp://color-themes.com/?view=index

    2022年5月31日
    45
  • Python和Pycharm安装与卸载教程「建议收藏」

    Python和Pycharm安装与卸载教程「建议收藏」简介Python解释器通常我们说的Python是指一种跨平台的程序设计语言,而我们这里说的安装Python是指安装Python解释器,只有安装Python解释器你的计算机才能读懂Python语言。PycharmPycharm是一种PythonIDE(集成开发环境),带有一整套帮助Python开发的高效率工具。Pycharm分为专业版(Professional,收费)和社区版(community,免费)。只需要python基础功能可以下载社区版,想要解锁更多功能下载专业版。ps:学生可以申请免

    2022年8月28日
    6
  • 值得收藏!15个 Pythonic 的代码示例

    值得收藏!15个 Pythonic 的代码示例Python 由于语言的简洁性 让我们以人类思考的方式来写代码 新手更容易上手 老鸟更爱不释手 要写出 Pythonic 优雅的 地道的 整洁的 代码 还要平时多观察那些大牛代码 Github 上有很多非常优秀的源代码值得阅读 比如 requests flask tornado 这里小明收集了一些常见的 Pythonic 写法 帮助你养成写优秀代码的习惯 01 变量交换 Badtmp aa bb tmpPythonica b b a02 列表推导 Badmy list

    2025年6月7日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号