协方差

主成分分析(PCA)原理详解

我的未来我决定 提交于 2019-12-10 10:07:52
个人分类: 机器学习与Python 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zhongkelee/article/details/44064401 转载请声明出处: http://blog.csdn.net/zhongkelee/article/details/44064401 一、PCA简介 1. 相关背景 上完陈恩红老师的《机器学习与知识发现》和季海波老师的《矩阵代数》两门课之后,颇有体会。最近在做主成分分析和奇异值分解方面的项目,所以记录一下心得体会。 在许多领域的研究与应用中,往往需要对反映事物的多个变量进行大量的观测,收集大量数据以便进行分析寻找规律。多变量大样本无疑会为研究和应用提供了丰富的信息,但也在一定程度上增加了数据采集的工作量,更重要的是在多数情况下,许多变量之间可能存在相关性,从而增加了问题分析的复杂性,同时对分析带来不便。如果分别对每个指标进行分析,分析往往是孤立的,而不是综合的。盲目减少指标会损失很多信息,容易产生错误的结论。 因此需要找到一个合理的方法,在减少需要分析的指标同时,尽量减少原指标包含信息的损失,以达到对所收集数据进行全面分析的目的。由于各变量间存在一定的相关关系,因此有可能用较少的综合指标分别综合存在于各变量中的各类信息。主成分分析与因子分析就属于这类降维的方法。 2. 问题描述

卡尔曼滤波(Kalman filter)

戏子无情 提交于 2019-12-10 03:00:08
参考 : https://zh.wikipedia.org/wiki/%E5%8D%A1%E5%B0%94%E6%9B%BC%E6%BB%A4%E6%B3%A2 卡尔曼滤波模型 : 其中噪声服从 假设初始状态以及每一时刻的噪声{ x 0 , w 1 , ..., w k , v 1 ... v k }都互相独立. 卡尔曼滤波器 两个 状态 变量: , 在时刻 k 的状态的估计 , 后验 估计误差协方差矩阵,度量估计值的精确程度 预测 (预测状态) (预测估计协方差矩阵) 更新 三个辅助变量 (测量余量) (测量余量协方差) (最优卡尔曼增益) 更新滤波器变量 x 与 P : (更新的状态估计) (更新的协方差估计) 以上是kalman的流程(from wiki),下面是具体的推导过程 具体推导 这边用的是不一样的记号(MIT的lecture) 然后,我们有 最优卡尔曼增益 上面的就是 最优卡尔曼增益 ,所以有 例子 假设一辆小车,我们值观测到了位置,我们用kalman滤波去估计速度 N = 100 z = np.arange(N) + 0.0 # 观测到的位置,做匀速直线运动, 0, 1, 2, 3,... noise = np.random.randn(N) # 观测的位置加上1的噪声 z += noise X = np.array([5, 5]).reshape(-1, 1)

均值、方差、协方差、协方差矩阵、特征值、特征向量

末鹿安然 提交于 2019-12-05 17:55:02
均值: 描述的是样本集合的中间点。 方差: 描述的是样本集合的各个样本点到均值的距离之平均,一般是用来描述一维数据的。 协方差: 是一种用来度量两个随机变量关系的统计量。 只能处理二维问题。 计算协方差需要计算均值。 如下式: 方差与协方差的关系 方差是用来度量单个变量 “ 自身变异”大小的总体参数,方差越大表明该变量的变异越大 协方差是用来度量两个变量之间 “协同变异”大小的总体参数,即二个变量相互影响大小的参数,协方差的绝对值越大,则二个变量相互影响越大。 协方差矩阵: 协方差矩阵能处理多维问题; 协方差矩阵是一个对称的矩阵,而且对角线是各个维度上的方差。 协方差矩阵计算的是不同维度之间的协方差,而不是不同样本之间的。 样本矩阵中若每行是一个样本,则每列为一个维度,所以计算协方差时要 按列计算均值 。 如果数据是3维,那么协方差矩阵是: 特征值与 特征向量 线性变化: 线性变换 (线性映射)是在作用于 两个向量空间之间的函数 ,它保持 向量加法和标量乘法 的运算,从一个向量空间变化到另一个向量空间。 实际上线性变换表现出来的就是一个矩阵 。 特征值和特征向量 是一体的概念: 对于一个给定的线性变换(矩阵A),它的特征向量 ξ 经过这个线性变换之后,得到的新向量仍然与原来的 ξ 保持在同一條直線上,但其长度也许會改变。一个特征向量的长度在该线性变换下缩放的比例(λ)称为其特征值

PCA

梦想与她 提交于 2019-12-05 16:16:04
对影像进行主成分分析,只有第一主成分被分离出来了,后面的主成分好像都相同 均值: 标准差: 方差: 描述数据之间关系的统计量 标准差和方差一般是用来描述一维数据的,但现实生活我们常常遇到含有多维数据的数据集。 面对这样的数据集,我们当然可以按照每一维独立的计算其方差,但是通常我们还想了解这几科成绩之间的关系,这时,我们就要用协方差,协方差就是一种用来度量两个随机变量关系的统计量 1.正向主成分(PC)旋转 正向PC旋转用一个线性变换使数据方差达到最大。当使用正向PC旋转时,ENVI允许计算新的统计值,或根据已经存在的统计值进行旋转。输出值可以存为字节型、浮点型、整型、长整型或双精度型。也可以基于特征值来提取PC旋转的输出内容,生成只包含所需的PC波段的输出。 计算新的统计值和旋转 使用Compute New Statistics and Rotate选项可以计算数据特征值、协方差或相关系数矩阵以及PC正向旋转。 选择Transforms > Principal Components > Forward PC Rotation > Compute New Statistics and Rotate。 当出现Principal Components Input File对话框时,选择输入文件或用标准ENVI选择程序选取子集。将会出现Forward PC Rotation

pandas的数据统计函数

牧云@^-^@ 提交于 2019-12-04 08:53:22
# 1汇总类统计 # 2唯一去重和按值计数 # 3 相关系数和协方差 import pandas as pd # 0 读取csv数据 df = pd.read_csv("beijing_tianqi_2018.csv") df.head() # 换掉温度后面的后缀 df.loc[:,"bWendu"] = df["bWendu"].str.replace("℃","").astype("int32") df.loc[:,"yWendu"] = df["yWendu"].str.replace("℃","").astype("int32") df.head(3) # 1 汇总类统计 # 一下子提取所有数字列的统计结果 df.describe() # 查看单个Series的数据 df["bWendu"].mean() # 最高温 df["bWendu"].max() # 最低温 df["bWendu"].min() # 2 唯一去重和按值计数 # 2.1 唯一性去重 一般不用于数值列,而是枚举、分类列 df["fengxiang"].unique() df["tianqi"].unique() df["fengli"].unique() # 2.2 按值计数(降序排列) df["fengxiang"].value_counts() df["tianqi"].value_counts()

爬取知乎如何通俗易懂地解释「协方差」与「相关系数」的概念?

和自甴很熟 提交于 2019-12-03 17:16:06
'最喜欢通俗易懂地解释一个事情。', '<b>一、协方差:', '可以通俗的理解为:两个变量在变化过程中是同方向变化?还是反方向变化?同向或反向程度如何?', '你变大,同时我也变大,说明两个变量是同向变化的,这时协方差就是正的。', '你变大,同时我变小,说明两个变量是反向变化的,这时协方差就是负的。', '从数值来看,协方差的数值越大,两个变量同向程度也就越大。反之亦然。', '咱们从公式出发来理解一下:', '', '公式简单翻译一下是:如果有X,Y两个变量,每个时刻的“X值与其均值之差”乘以“Y值与其均值之差”得到一个乘积,再对这每时刻的乘积求和并求出均值(其实是求“期望”,但就不引申太多新概念了,简单认为就是求均值了)。', '下面举个例子来说明吧:', '比如有两个变量X,Y,观察t1-t7(7个时刻)他们的变化情况。', '简单做了个图:分别用红点和绿点表示X、Y,横轴是时间。可以看到X,Y均围绕各自的均值运动,并且很明显是同向变化的。', '这时,我们发现每一时刻的值与的值的“正负号”一定相同(如下图:比如t1时刻,他们同为正,t2时刻他们同为负):', '所以,像上图那样,当他们同向变化时,与的乘积为正。这样,当你把t1-t7时刻与的乘积加在一起,求平均后也就是正数了。', '如果反向运动呢?', '很明显,的值与的值的“正负号”一定相反,于是与的乘积就是负值了

Pandas | 14 统计函数

爱⌒轻易说出口 提交于 2019-12-03 07:32:40
统计方法有助于理解和分析数据的行为。可以将这些统计函数应用到 Pandas 的对象上。 pct_change()函数 系列,DatFrames和Panel都有 pct_change() 函数。此函数将每个元素与其前一个元素进行比较,并计算变化百分比。 import pandas as pd import numpy as np s = pd.Series([1,2,3,4,5]) print(s) print (s.pct_change()) print('\n') df = pd.DataFrame(np.random.randn(5, 2)) print(df) print (df.pct_change()) 输出结果: 0 11 22 33 44 5dtype: int640 NaN1 1.0000002 0.5000003 0.3333334 0.250000dtype: float64 0 10 1.055808 1.3510571 1.458762 0.2293092 0.392842 -0.0432683 0.700352 0.8842584 0.120823 -0.329024 0 10 NaN NaN1 0.381654 -0.8302742 -0.730702 -1.1886863 0.782782 -21.4369894 -0.827482 -1.372090

从主成分分析(PCA)到奇异值分解(SVD)

匿名 (未验证) 提交于 2019-12-03 00:41:02
主成分分析(principal factor analysis),简称PCA,是机器学习中非常常见的压缩降维方法。为什么需要压缩降维?是由于高维的样本本身存在冗余、稀疏的特点,直接把高维样本用于拟合或者模式识别,极其容易出现过拟合。而在处理实际问题时,与学习任务相关的也许仅是高维样本的某个低维分布,因而需要降维。(举个例子,如……) PCA的降维思想是,在高维的样本空间中,寻找一个低维的超平面,把所有高维样本投影于此超平面上,得到低维样本,并且使投影误差最小,或者使投影得到的样本最大可分。 紧接着上述提到的两种性质,在描述PCA的降维思想时,有以下两种定义方式: 最小误差形式 最大方差形式 可以从数学推导上证明,两种定义方式最终导出的结果等价,可以得到一样的算法。(两种方法的数学推导过程有时间再补充……) (算法流程待补充……) 总结来说,主成分分析涉及到计算数据集的均值 x x 和协方差矩阵 S S ,然后寻找协方差矩阵的对应于 M M 个最大特征值的 M M 个特征向量,从而得到投影矩阵。 PCA与SVD的关系主要体现在求解特征向量的过程。在一般介绍PCA算法原理的资料中,均是要先求得样本的协方差矩阵,然后从协方差矩阵中求解得特征值和特征向量。然而,对于归一化的样本,协方差矩阵 S = X X T S = X X T (待补充数学证明),而某些SVD的实现方法可以从样本矩阵 X