协方差

协方差及协方差矩阵

本小妞迷上赌 提交于 2019-12-26 00:14:14
一、统计学的基本概念   统计学里最基本的概念就是样本的均值、方差、标准差。首先,我们给定一个含有n个样本的集合,下面给出这些概念的公式描述: 均值: 标准差: 方差:   均值描述的是样本集合的中间点,它告诉我们的信息是有限的,而标准差给我们描述的是样本集合的各个样本点到均值的距离之平均。   以这两个集合为例,[0, 8, 12, 20]和[8, 9, 11, 12],两个集合的均值都是10,但显然两个集合的差别是很大的,计算两者的标准差,前者是8.3后者是1.8,显然后者较为集中,故其标准差小一些,标准差描述的就是这种“散布度”。之所以除以n-1而不是n,是因为这样能使我们以较小的样本集更好地逼近总体的标准差,即统计上所谓的“无偏估计”。而方差则仅仅是标准差的平方。 二、为什么需要协方差   标准差和方差一般是用来描述一维数据的,但现实生活中我们常常会遇到含有多维数据的数据集,最简单的是大家上学时免不了要统计多个学科的考试成绩。面对这样的数据集,我们当然可以按照每一维独立的计算其方差,但是通常我们还想了解更多,比如,一个男孩子的猥琐程度跟他受女孩子的欢迎程度是否存在一些联系。协方差就是这样一种用来度量两个随机变量关系的统计量,我们可以仿照方差的定义:   来度量各个维度偏离其均值的程度,协方差可以这样来定义:   协方差的结果有什么意义呢?如果结果为正值,则说明两者是正相关的

协方差矩阵

十年热恋 提交于 2019-12-25 15:53:09
概念 协方差(Covariance)在概率论和统计学中用于衡量两个变量的总体误差。而方差是协方差的一种特殊情况,即当两个变量是相同的情况。 这个解释摘自维基百科,看起来很是抽象,不好理解。其实简单来讲,协方差就是衡量两个变量相关性的变量。当协方差为正时,两个变量呈正相关关系(同增同减);当协方差为负时,两个变量呈负相关关系(一增一减)。 而协方差矩阵,只是将所有变量的协方差关系用矩阵的形式表现出来而已。通过矩阵这一工具,可以更方便地进行数学运算。 数学定义 回想概率统计里面关于方差的数学定义: \[ Var(X)=\frac{\sum_{i=1}^n{(x_i-\overline x)(x_i-\overline x)}}{n-1} \] 协方差的数学定义异曲同工: \[ Cov(X,Y)=\frac{\sum_{i=1}^n{(x_i-\overline x)(y_i-\overline y)}}{n-1} \] 这里的 \(X\) , \(Y\) 表示两个变量空间。用机器学习的话讲,就是样本有 \(x\) 和 \(y\) 两种特征,而 \(X\) 就是包含所有样本的 \(x\) 特征的集合, \(Y\) 就是包含所有样本的 \(y\) 特征的集合。 协方差矩阵 两个变量的协方差矩阵 有了上面的数学定义后,我们可以来讨论协方差矩阵了。当然,协方差本身就能够处理二维问题

PCA降维及SVD

荒凉一梦 提交于 2019-12-23 12:37:36
PCA降维 1.相关背景 我们在实际工作中经常需要分析不同组呈现来的成千上百个指标的数据,这些指标之间经常有一些相关性指标,比如厘米和英尺,这样的指标我们只要保留一个就可以,还有一些隐藏的高度相关的特征,以通过降维方法来进行数据预处理。 2. 数据降维 主成分分析(Principal Component Analysis,简称PCA)是一种常用的降维方法,属于无监督学习。所谓降维就是将数据指标从高维度减到低维度,因为低维度的数据有如下优点: 1) 更容易进行数据分析和数据可视化 2)更容易进行数据存储 3)降低算法的运行成本 3.PCA原理 样本点分布在正交属性空间中,我们如何找到一个超平面(直线的高维推广)对所有样本点最合适的表达? 1.最近重构性:样本点到这个超平面的距离足够近(类似线性回归) 2.最大可分性:样本点到这个超平面的投影尽可能分开(方差最大化) 以上两种方式得到的主成分分析的推导是等价的,下面从”最大可分析“进行推导PCA的过程。 3.1 向量的表示及基变换 3.1.1 向量的內积 a ⃗ ⋅ b ⃗ = ∣ a ⃗ ∣ ∣ b ⃗ ∣ c o s α ( α 为 两 个 向 量 的 夹 角 ) \vec a\cdot\vec b = |\vec a||\vec b|cos\alpha(\alpha为两个向量的夹角) a ⋅ b = ∣ a ∣ ∣ b ∣ c o

PCA

∥☆過路亽.° 提交于 2019-12-23 08:30:17
1.原理:https://blog.csdn.net/program_developer/article/details/80632779 PCA(Principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据降维算法。 PCA的工作就是从原始的空间中顺序地找一组相互正交的坐标轴,新的坐标轴的选择与数据本身是密切相关的。其中, 第一个新坐标轴 选择是原始数据中 方差最大的方向 , 第二个新坐标轴 选取是 与第一个坐标轴正交的平面中使得方差最大 的, 第三个轴是与第1,2个轴正交的平面中方差最大的 。依次类推,可以得到n个这样的坐标轴。通过这种方式获得的新的坐标轴,我们发现, 大部分方差都包含在前面k个坐标轴中,后面的坐标轴所含的方差几乎为0 。于是,我们可以忽略余下的坐标轴, 只保留前面k个含有绝大部分方差的坐标轴 。 这相当于只保留包含绝大部分方差的维度特征,而忽略包含方差几乎为0的特征维度,实现对数据特征的降维处理。 如何得到这些包含最大差异性的主成分方向呢? 通过 计算数据矩阵的协方差矩阵 ,然后得到协方差矩阵的特征值特征向量,选择特征值最大(即方差最大)的k个特征所对应的特征向量组成的矩阵。这样就可以将数据矩阵转换到新的空间当中,实现数据特征的降维。 得到协方差矩阵的特征值特征向量有两种方法:特征值分解协方差矩阵、奇异值分解协方差矩阵

均值方差模型

家住魔仙堡 提交于 2019-12-21 01:35:35
今天,我们来讲一讲“均值方差模型”。 介绍模型之前,先讲一下模型诞生背后的故事。 背后的故事 从前,有一个年轻人,叫 哈里·马科维兹(Harry Markowitz) ,彼时他正在芝加哥大学攻读经济学博士学位,一次偶然的机会他在办公室门外等待见导师、准备讨论博士论文时遇到了一个股票经纪人,和股票经纪人的一番交谈使他的研究方向转向了证券市场。导师鼓励他对这个领域进行研究,并给他推荐了当时著名的经济学家约翰·威廉姆斯(John Williams)最出名的一本书:《投资价值理论》(The Theory of Investment Value) 。 威廉姆斯认为,证券的价格反映了其“内在价值”,而 证券的价值就是其未来股息的折现价格 。但马科维兹很快就发现这个理论缺少了对“风险”的分析:投资者固然要最大化预期折现收益,同时也应该考虑到收益的方差(variance)是一个不好的东西,投资者在决策过程中应该同时考虑这两个方面,并且应该这样构建一个投资组合: 在“预期收益”和“收益的方差”之间做权衡取舍(trade-off) 。 (有点复杂,但这句话很重要...) 于是在1952年,25岁的马科维兹在The Journal of Finance这本顶级金融学期刊上发表了一篇论文,叫 《证券投资组合选择》(Portfolio Selection) 。 这篇论文当时并没有引起很大的轰动

OpenCV中PCA实现人脸降维

北城以北 提交于 2019-12-20 20:38:37
   前言:   PCA 是大家经常用来减少数据集的维数,同时保留数据集中对方差贡献最大的特征来达到简化数据集的目的。本文通过使用 PCA 来提取人脸中的特征脸这个例子,来熟悉下在 oepncv 中怎样使用 PCA 这个类。    开发环境: ubuntu12.04+Qt4.8.2+QtCreator2.5.1+opencv2.4.2    PCA 数学理论:    关于 PCA 的理论,资料很多,公式也一大把,本人功底有限,理论方面这里就不列出了。下面主要从应用的角度大概来讲讲具体怎么实现数据集的降维。 把原始数据中每个样本用一个向量表示,然后把所有样本组合起来构成一个矩阵。当然了,为了避免样本的单位的影响,样本集需要标准化。 求该矩阵的协防差矩阵(关于协方差的介绍可以参考我的博文: 一些知识点的初步理解 _4( 协方差矩阵 ,ing...) )。 求步骤 2 中得到的协方差矩阵的特征值和特征向量。 将求出的特征向量按照特征值的大小进行组合形成一个映射矩阵,并根据指定的 PCA 保留的特征个数取出映射矩阵的前 n 行或者前 n 列作为最终的映射矩阵。 用步骤 4 的映射矩阵对原始数据进行映射,达到数据降维的目的。    实验说明:    在本次实验实现的过程中,需要用到 opencv 的这些函数,下面简单介绍下这些函数。    Mat Mat:: reshape (int cn,

协方差矩阵 定义 推导证明 作用

核能气质少年 提交于 2019-12-20 04:49:28
首先,需要先理解什么是方差,什么是协方差,这里不做说明,需要的可以去找考研复习视频去学习下概率论。 = 1、首先我们来理解 二维 设有函数f(x,y) 其中有n个样本点(n>0),分别为 ,对x和y分别求均值为 将所有坐标减去均值的样本点坐标为 ,这个过程叫 数据中心化 将去中心化的样本点表示成矩阵形式为 ,设为矩阵X,这个矩阵我们称为有两个特征值。 则定义 协方差矩阵 为C = (书上就是这么定义的) 可以看出,C是一个2*2维的矩阵,用样本点表示为 很显然 等于 2、 对于多维 同样,对于 t 维函数 ,有样本点分别为 与二维的方式类似,先进行数据中心化,然后写出t个特征值的矩阵,然后通过C = ,计算出协方差矩阵。 那么对于 t 维的协方差矩阵简化表示为 3、作用 用协方差矩阵可以对原始的维度的数据进行最小损失的降维。通过求取协方差矩阵的特征值(Eigenvalues)和对应特征向量(Eigenvectors),按特征值大小排序,降维就是从特征值小的维度开始剔除。(特征值小,表明对应的那一维特征对整体的影响比较小,比如下面的图中,使用右边的坐标系时,明显y轴的对整体数据的影响比x轴要小,那么可以在右边的坐标系下,对y轴进行降维,是数据从二维变成线性的,降维对于二维可能用处不是太大,但是对于多维的数据,很有必要,可以减少数据的复杂度) 4、降维后数据求取

特征工程之距离相关系数( Distance correlation coefficient )

故事扮演 提交于 2019-12-18 02:23:36
距离相关系数: 线性关系可以通过pearson相关系数来描述,单调关系可以通过spearman或者kendall来描述,非线性如何描述,距离相关系数可以非线性相关性。 我们都知道,皮尔森关联系数只能描述数据键的线性相关性程度,对于非线性相关数据,皮尔森关联系数显然不适合的, 距离相关系数 恰恰能在很大程度上客服皮尔森相关系数的弱点。 比如:Pearson相关系数等于0,这两个变量并不一定就是独立的(有可能是非线性相关);但如果距离相关系数为0的话,那么就可以说这两个变量是独立的了。 距离相关系数的计算依赖于距离协方差和距离方差,首先我们先了解下距离协方差的定义,假设有n维(X,Y)统计样本。 首先计算包含的所有成对距离(即:数组间每行数据之间的范数距离) 为了防止我没有描述清楚,直接上代码: #生成一个3行2列的数组 X = np.random.randint(-100,100,(3,2)) 0.1 out:array([[ 4.8, 7.7], [-2.6, 6.8], [ 5.9, 9. ]]) Y = X**2 #取数据集的行 col = X.shape[0] #做成n n的零矩阵,用于盛放数据 a = np.zeros((col,col)) b = np.zeros((col,col)) A = np.zeros((col,col)) B = np.zeros((col

PCA原理分析和Matlab实现方法(三)

╄→гoц情女王★ 提交于 2019-12-16 05:05:14
PCA主成分分析原理分析和Matlab实现方法(三) 【 尊重 原创,转载请注明出处 】http://blog.csdn.net/guyuealian/article/details/68487833 网上关于PCA(主成分分析)原理和分析的博客很多,本博客并不打算长篇大论推论PCA理论,而是用最精简的语言说明鄙人对PCA的理解,并在最后给出用Matlab计算PCA过程的三种方法,方便大家对PCA的理解。 PS:本博客所有源代码,都可以在附件中找到 下载 : http://download.csdn.net/detail/guyuealian/9799160 关于PCA原理的文章,可参考: [1]http://blog.csdn.net/guyuealian/article/details/68483384 [2]http://blog.csdn.net/guyuealian/article/details/68483213 [3] 张铮的《精通Matlab数字图像处理与识别 》 一、 PCA原理简要说明 PCA算法主要用于降维,就是将样本数据从高维空间投影到低维空间中,并尽可能的在低维空间中表示原始数据。 PCA的几何意义可简单解释为: 0维-PCA:将所有样本信息都投影到一个点,因此无法反应样本之间的差异;要想用一个点来尽可能的表示所有样本数据,则这个点必定是样本的均值。 1维

卡尔曼滤波C代码分析

余生长醉 提交于 2019-12-14 11:55:09
float Angle=0.0; //卡尔曼滤波器的输出值,最优估计的角度 //float Gyro_x=0.0; //卡尔曼滤波器的输出值,最优估计的角速度 float Q_angle=0.001; //陀螺仪噪声的协方差(估计过程的误差协方差) float Q_gyro=0.003; //陀螺仪漂移噪声的协方差(估计过程的误差协方差) float R_angle=0.5; //加速度计测量噪声的协方差 float dt=0.005; //积分时间,dt为滤波器采样时间(秒) char C_0 = 1; //H矩阵的一个数 float Q_bias=0, Angle_err=0; //Q_bias为陀螺仪漂移 float PCt_0=0, PCt_1=0, E=0; //中间变量 float K_0=0, K_1=0, t_0=0, t_1=0; //K是卡尔曼增益,t是中间变量 float Pdot[4] ={0,0,0,0}; //计算P矩阵的中间变量 float PP[2][2] = { { 1, 0 },{ 0, 1 } }; //公式中P矩阵,X的协方差 void Kalman_Filter(float Gyro,float Accel)//Gyro陀螺仪的测量值,Accel加速度计的角度计算值 { Angle += (Gyro - Q_bias)*dt; /