协方差

数据降维方法小结

帅比萌擦擦* 提交于 2020-02-10 08:40:01
原文:http://blog.csdn.net/yujianmin1990/article/details/48223001  数据的形式是多种多样的,维度也是各不相同的,当实际问题中遇到很高的维度时,如何给他降到较低的维度上?前文提到进行属性选择,当然这是一种很好的方法,这里另外提供一种 从高维特征空间向低纬特征空间映射 的思路。 数据降维的目的   数据降维,直观地好处是维度降低了,便于计算和可视化,其 更深层次的意义在于有效信息的提取综合及无用信息的摈弃 。 数据降维的方法   主要的方法是线性映射和非线性映射方法两大类。 线性映射    线性映射方法的代表方法有:PCA(Principal Component Analysis),LDA(Discriminant Analysis) PCA方法简介   主成分分析的 思想 ,就是线性代数里面的K-L变换,就是 在均方误差准则下失真最小的一种变换 。是将原空间变换到特征向量空间内,数学表示为 A x = λ x 。   特征向量和特征值的意义:分别表示不同频率及其幅度。    特征向量和特征值的直白理解: 想在特征空间内找到某个向量 x ,使得其满足 A x = λ x 。这个式子可以这样理解, A 是空间内的运动, x 经过运动 A 后,保持方向不变(仍是 x 的方向),只是大小伸缩了 λ 倍。这样我们找到了 k

马氏距离的深入理解

徘徊边缘 提交于 2020-02-04 11:53:50
转自: http://www.cnblogs.com/kevinGaoblog/archive/2012/06/19/2555448.html 对于马氏距离,本人研究了一下,虽然看上去公式很简单的,但是其中存在很多模糊的东西,例如有很多教科书以及网络上的简要说明,下面以维基百科作为引用: 马氏距离是由印度统计学家马哈拉诺比斯( P. C. Mahalanobis )提出的,表示数据的 协方差 距离。它是一种有效的计算两个未知 样本集 的相似度的方法。与 欧氏距离 不同的是它考虑到各种特性之间的联系(例如:一条关于身高的信息会带来一条关于体重的信息,因为两者是有关联的)并且是尺度无关的(scale-invariant),即独立于测量尺度。 对于一个均值为 , 协方差矩阵 为Σ的多变量矢量 ,其马氏距离为 马氏距离也可以定义为两个服从同一分布并且其协方差矩阵为Σ的随机变量 与 的差异程度: 如果协方差矩阵为单位矩阵,马氏距离就简化为欧式距离;如果协方差矩阵为对角阵,其也可称为正规化的马氏距离。 其中σi是xi的 标准差 。 对于上述的马氏距离,本人研究了一下,虽然看上去公式很简单的,但是其中存在很多模糊的东西,为什么马氏距离是一种考滤到各种特性之间的联系并且是尺度无关的?为什么可以使用协方差矩阵的逆矩阵去掉单位而使之尺度无关。基于此,以下是个人的一些想法。 1

卡尔曼滤波器中的Q,R

心已入冬 提交于 2020-02-01 19:07:07
卓老师,我想问一个关于卡尔曼滤波的问题,希望您能解答一下。之前我用的互补滤波效果也还好,但在用卡尔曼滤波的时候出现了一些问题:就是如何整定卡尔曼滤波的Q、R这两个参数,这两个参数分别是角度数据置信度与角速度数据置信度。我看别人用的这两个参数都非常小,比如别人Q都是零点零零几,而我用的时候发现Q零点几跟随效果很差,我把Q调到1跟随效果才差不多。但是Q和R不都是协方差吗,它们可以取到1及以上的值吗?即Q和R有没有取值范围,以及这两个参数整定方法是什么?还是我理解有问题,希望卓大或者车友可以解答一下。 回复:在智能车竞赛中,Kalman滤波算法常常被用来计算直立车模倾角和转动角速度。算法利用陀螺仪给出的转速度量和加速度传感器给出的倾角观测量完成计算。除了Kalman滤波器算法之外,还可以使用互补滤波器进行帮助计算。 如果不考虑系统状态的时变性和系统噪声的时变性,上述两种方法本质上是相同的。 下图显示了对于被测物体位置使用Kalman滤波算法来估计物体实际位置的示意图。 通常情况下所使用的Kalman滤波器是离散时间系统形式的。我们真正想得到的物理量表示成系统状态中的某些分量。对于系统状态的估计(滤波结果)所使用的信息来源于两个方面,一个是对系统状态演变模型的了解,包括系统转移矩阵和输入控制矩阵,输入孔质量等,另一方面来自于对系统状态的观测量。 但这两方面的信息都会有某种不确定性

K均值聚类的理解和实现

雨燕双飞 提交于 2020-01-31 02:01:43
K均值聚类的理解和实现 1. 距离的测度 1.1 欧式距离 1.2 马氏距离 1.2.1 利用马氏距离对数据进行归一化 1.2.2 利用马氏距离进行分类 2. K均值的基本理论 2.1 K均值的原理和实现 2.2 K均值的缺点 2.3 K均值改进 3. 算法实现 3.1 获取样本 3.2 协方差逆阵方根的计算方法 3.3 聚类实验 3.3.1 一般的K均值聚类 3.3.2 基于马氏距离K-means++聚类 3.3.3 基于肘部法则的K-means++聚类 4.参考资料 1. 距离测度 1.1 欧式距离 在 数学中 , 欧氏距离 或 欧几里德度量 是 欧几里得空间中 两点之间的“普通” 直线距离 。通过这个距离,欧几里德空间成为 度量空间 。相关的 规范 称为 欧几里得范数 。 较早的文献将 度量 指为 毕达哥拉斯度量 。 广义 的欧几里得范数项是 L2范数 或 L2距离 。 通常,对于n维空间来说,欧几里得距离可以表示为: 中的欧式距离如图1.1-1所示: 图1.1-1 中欧几里得距离的表达 标准的欧几里德距离可以是平方的,以便逐渐将更大的重量放置在更远的物体上。在这种情况下,等式变为: 平方欧几里德距离不是一个 度量 ,因为它不满足三角不等式 ; 然而,它经常用于仅需要比较距离的优化问题。 它在 理性三角学 领域也被称为 quadrance 。 1.2 马氏距离

3.1 Linear Basis Function Models(PRML 系列----3.1.5 Multiple outputs)

落花浮王杯 提交于 2020-01-29 00:13:13
multiple, independent regression problems. 共享相同的基函数 对 β 求 导 可 计 算 β 估 计 值 \beta求导可计算\beta估计值 β 求 导 可 计 算 β 估 计 值 多变量解耦:原因在于 W ( M ∗ K ) W(M*K) W ( M ∗ K ) 只定义了高斯噪声的输出,只考虑单变量即可 W W W 中 K 个 变 量 之 间 的 协 方 差 解 偶 证 明 K个变量之间的协方差解偶证明 K 个 变 量 之 间 的 协 方 差 解 偶 证 明 p ( t ∣ x , W , β ) = N ( t ∣ W T ϕ ( x ) , β − 1 I ) p(\mathbf{t} | \mathbf{x}, \mathbf{W}, \beta)=\mathcal{N}\left(\mathbf{t} | \mathbf{W}^{\mathrm{T}} \boldsymbol{\phi}(\mathbf{x}), \beta^{-1} \mathbf{I}\right) p ( t ∣ x , W , β ) = N ( t ∣ W T ϕ ( x ) , β − 1 I ) 对 于 单 个 样 本 来 说 , 上 面 式 子 中 t 表 示 K 个 变 量 , 其 均 值 W T ϕ ( x ) 对于单个样本来说,上面式子中

因子分析

佐手、 提交于 2020-01-25 19:09:50
1 问题 之前我们考虑的训练数据中样例 的个数m都远远大于其特征个数n,这样不管是进行回归、聚类等都没有太大的问题。然而当训练样例个数m太小,甚至m<<n的时候,使用梯度下降法进行回归时,如果初值不同,得到的参数结果会有很大偏差(因为方程数小于参数个数)。另外,如果使用多元高斯分布(Multivariate Gaussian distribution)对数据进行拟合时,也会有问题。让我们来演算一下,看看会有什么问题: 多元高斯分布的参数估计公式如下: 分别是求mean和协方差的公式, 表示样例,共有m个,每个样例n个特征,因此 是n维向量, 是n*n协方差矩阵。 当m<<n时,我们会发现 是奇异阵( ),也就是说 不存在,没办法拟合出多元高斯分布了,确切的说是我们估计不出来 。 如果我们仍然想用多元高斯分布来估计样本,那怎么办呢? 2 限制协方差矩阵 当没有足够的数据去估计 时,那么只能对模型参数进行一定假设,之前我们想估计出完全的 (矩阵中的全部元素),现在我们假设 就是对角阵(各特征间相互独立),那么我们只需要计算每个特征的方差即可,最后的 只有对角线上的元素不为0 回想我们之前讨论过的二维多元高斯分布的几何特性,在平面上的投影是个椭圆,中心点由 决定,椭圆的形状由 决定。 如果变成对角阵,就意味着椭圆的两个轴都和坐标轴平行了。 如果我们想对 进一步限制的话

因子分析

主宰稳场 提交于 2020-01-25 19:09:34
1 问题 之前我们考虑的训练数据中样例 的个数m都远远大于其特征个数n,这样不管是进行回归、聚类等都没有太大的问题。然而当训练样例个数m太小,甚至m<<n的时候,使用梯度下降法进行回归时,如果初值不同,得到的参数结果会有很大偏差(因为方程数小于参数个数)。另外,如果使用多元高斯分布(Multivariate Gaussian distribution)对数据进行拟合时,也会有问题。让我们来演算一下,看看会有什么问题: 多元高斯分布的参数估计公式如下: 分别是求mean和协方差的公式, 表示样例,共有m个,每个样例n个特征,因此 是n维向量, 是n*n协方差矩阵。 当m<<n时,我们会发现 是奇异阵( ),也就是说 不存在,没办法拟合出多元高斯分布了,确切的说是我们估计不出来 。 如果我们仍然想用多元高斯分布来估计样本,那怎么办呢? 2 限制协方差矩阵 当没有足够的数据去估计 时,那么只能对模型参数进行一定假设,之前我们想估计出完全的 (矩阵中的全部元素),现在我们假设 就是对角阵(各特征间相互独立),那么我们只需要计算每个特征的方差即可,最后的 只有对角线上的元素不为0 回想我们之前讨论过的二维多元高斯分布的几何特性,在平面上的投影是个椭圆,中心点由 决定,椭圆的形状由 决定。 如果变成对角阵,就意味着椭圆的两个轴都和坐标轴平行了。 如果我们想对 进一步限制的话

C语言实现协方差矩阵

孤人 提交于 2020-01-25 05:36:48
最近在理解机器学习中的PCA降维算法,其中使用协方差矩阵。什么是些方差矩阵,这里不做多介绍。作为软件工程师,理解算法原理是一回事,没有亲自编码实践总觉得缺了什么。 现将自己C语言实现协方差矩阵代码如下 # include <stdio.h> # include <stdlib.h> # include <string.h> void TransposeMatrix ( int * input , int rows , int cols , int * output ) { for ( int row = 0 ; row < rows ; row ++ ) { for ( int col = 0 ; col < cols ; col ++ ) { int sindex = row * cols + col ; int dindex = col * rows + row ; printf ( "sindex=%d,dindex=%d\n" , sindex , dindex ) ; output [ dindex ] = input [ sindex ] ; } } } void PrintMatrix ( int * array , int rows , int cols ) { int index = 0 ; for ( int row = 0 ; row < rows ; row

自主移动机器人同时定位与地图创建(SLAM)方法概述

孤街醉人 提交于 2020-01-23 16:29:24
1.引言: 机器人的研究越来越多的得到关注和投入,随着计算机技术和人工智能的发展,智能自主移动机器人成为机器人领域的一个重要研究方向和研究热点。移动机器人的定位和地图创建是自主移动机器人领域的热点研究问题。对于已知环境中的机器人自主定位和已知机器人位置的地图创建已经有了一些实用的解决方法。然而在很多环境中机器人不能利用全局定位系统进行定位,而且事先获取机器人工作环境的地图很困难,甚至是不可能的。这时机器人需要在自身位置不确定的条件下,在完全未知环境中创建地图,同时利用地图进行自主定位和导航。这就是移动机器人的同时定位与地图创建(SLAM) 问题,最先是由SmithSelf 和Cheeseman在1988年提出来的,被认为是实现真正全自主移动机器人的关键。 SLAM问题可以描述为:机器人在未知环境中从一个未知位置开始移动,在移动过程中根据位置估计和传感器数据进行自身定位,同时建造增量式地图。 在SLAM中,机器人利用自身携带的传感器识别未知环境中的特征标志,然后根据机器人与特征标志之间的相对位置和里程计的读数估计机器人和特征标志的全局坐标。这种在线的定位与地图创建需要保持机器人与特征标志之间的详细信息。近几年来,SLAM的研究取得了很大的进展,并已应用于各种不同的环境,如:室内环境、水下、室外环境。 2.SLAM的关键性问题 2.1地图的表示方式 目前各国研究者已经提出了多种表示法

python相关矩阵与协方差矩阵

ⅰ亾dé卋堺 提交于 2020-01-21 08:27:35
相关系数矩阵 pandas.DataFrame(数据).corr() import pandas as pd df = pd.DataFrame({ 'a': [11, 22, 33, 44, 55, 66, 77, 88, 99], 'b': [10, 24, 30, 48, 50, 72, 70, 96, 90], 'c': [91, 79, 72, 58, 53, 47, 34, 16, 10], 'd': [99, 10, 98, 10, 17, 10, 77, 89, 10]}) df_corr = df.corr() # 可视化 import matplotlib.pyplot as mp import seaborn seaborn.heatmap(df_corr, center=0, annot=True) mp.show() 协方差矩阵 numpy.cov(数据) import numpy as np matric = [ [11, 22, 33, 44, 55, 66, 77, 88, 99], [10, 24, 30, 48, 50, 72, 70, 96, 90], [91, 79, 72, 58, 53, 47, 34, 16, 10], [55, 20, 98, 19, 17, 10, 77, 89, 14]] covariance_matrix =