在概率论和统计学中,数学期望(mean)(或均值,亦简称期望)是试验中每次可能结果的概率乘以其结果的总和,是最基本的数学特征之一。它反映随机变量平均取值的大小。
需要注意的是,期望值并不一定等同于常识中的“期望”——“期望值”也许与每一个结果都不相等。期望值是该变量输出值的加权平均。期望值并不一定包含于变量的输出值集合里。
大数定律规定,随着重复次数接近无穷大,数值的算术平均值几乎肯定地收敛于期望值。
例如,掷一枚公平的六面骰子,其每次“点数”的期望值是3.5,计算如下:
X | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|
P(x) | 1/6 | 1/6 | 1/6 | 1/6 | 1/6 | 1/6 |
E(X) = 1 * 1/6 + 2 * 1/6 + 3 * 1/6 + 4 * 1/6 + 5 * 1/6 + 6 * 1/6 = 3.5
在概率论和统计学中,方差是衡量随机变量或一组数据离散程度的度量。
概率论中方差用来度量随机变量和其数学期望(即均值)之间的偏离程度。统计中的方差(样本方差)是每个样本值与全体样本值的平均数之差的平方值的平均数。在许多实际问题中,研究方差即偏离程度有着重要意义。
方差是衡量源数据和期望值相差的度量值。
在统计描述中,方差用来计算每一个变量(观察值)与总体均数之间的差异。为避免出现离均差总和为零,离均差平方和受样本含量的影响,统计学采用平均离均差平方和来描述变量的变异程度。
总体方差计算公式:
X为变量,μ为总体均值,N为总体例数。
实际工作中,总体均数难以得到时,应用样本统计量代替总体参数,经校正后,样本方差计算公式:
S2= ∑(X - A)2 / (n-1)
S2为样本方差,X为变量,A为样本均值,n为样本例数。
在概率分布中,离散型随机变量方差计算公式:
D(X) = E{[X-E(X)] ^ 2} = E(X ^ 2) - [ E(X)]^2
D(X)称为变量X的方差,而 σ = D(X)(1/2) 称为标准差(或均方差)。
方差刻画了随机变量的取值对于其数学期望的离散程度。(标准差、方差越大,离散程度越大)
若X的取值比较集中,则方差D(X)较小,若X的取值比较分散,则方差D(X)较大。
因此,D(X)是刻画X取值分散程度的一个量,它是衡量取值分散程度的一个尺度。
如 X 样本为:5、6、9、16,则 X 的方差计算如下为:
先求 X 的平均数为 (5+6+9+16)/ 4 = 9
总体方差 = ((5-9)2+(6-9)2+(9-9)2+(16-9)2)/ 4 = 18.5
样本方差 = ((5-9)2+(6-9)2+(9-9)2+(16-9)2)/ (4-1) = 24.667
协方差(Covariance)在概率论和统计学中用于衡量两个变量的总体误差。而方差是协方差的一种特殊情况,即当两个变量是相同的情况(方差是衡量一个变量之间的离散程度)。
期望值分别为E(X) = u 与 E(Y) = ν 的两个实随机变量 X 与 Y 之间的协方差定义为:
COV(X,Y) = E[(X-E(X))(Y-E(Y))] = E(XY) - 2E(X)E(Y) + E(X)(Y) = E(XY) - uv
也可以用平均值来计算协方差:
Cov(X,Y)=1/(N−1)∑(Xi−Xi_)(Yi−Yi_)
Xi_,Yi_为平均值。这里,之所以除以 N-1 而不是 N 的原因是对总体样本期望的无偏估计。
直观上来看,协方差表示的是两个变量总体误差的方差,这与只表示一个变量误差的方差不同。如果两个变量的变化趋势一致,也就是说如果其中一个大于自身的期望值,另外一个也大于自身的期望值,那么两个变量之间的协方差就是正值。 如果两个变量的变化趋势相反,即其中一个大于自身的期望值,另外一个却小于自身的期望值,那么两个变量之间的协方差就是负值。
如果X与Y是统计独立的,那么二者之间的协方差就是0,反之则不成立
X,Y的变量取值如下:
变量 | |||
---|---|---|---|
X | 1 | 5 | 6 |
Y | 4 | 3 | 9 |
求解X,Y的协方差过程如下:
协方差也只能处理二维问题,那维数多了自然就需要计算多个协方差,比如n维的数据集就需要计算 n! / ((n-2)!*2) 个协方差,那自然而然的我们会想到使用矩阵来组织这些数据。
在统计学与概率论中,协方差矩阵(也称离差矩阵、方差-协方差矩阵)是一个矩阵,其 i, j 位置的元素是第 i 个与第 j 个随机变量之间的协方差。这是从标量随机变量到高维度随机向量的自然推广。
给出协方差矩阵的定义:
假设 X 是以 n 个随机变数组成的列向量,
X = [ X 1 X 2 . . . X n ] X= \left[ \begin{matrix} X1 \\ X2 \\ ... \\ Xn \end{matrix} \right] X=⎣⎢⎢⎡X1X2...Xn⎦⎥⎥⎤
并且并且 μi 是 Xi 的期望值,即 μi = E(Xi)。
协方差矩阵的第 (i,j) 项(第 (i,j) 项是一个协方差)被定义为如下形式:
∑ij = Cov(Xi,Xj) = E[(Xi - μi)(Xj - μj)T]
协方差矩阵完整形式:
这个定义还是很容易理解的,我们可以举一个简单的三维的例子,假设数据集有三个维度,则协方差矩阵为:
可见,协方差矩阵是一个对称的矩阵,而且对角线是各个维度上的方差。
X,Y,Z,K的变量取值如下:
变量 | |||
---|---|---|---|
X | 1 | 5 | 6 |
Y | 4 | 3 | 9 |
Z | 4 | 2 | 9 |
K | 4 | 7 | 2 |
所以协方差矩阵C为:
C = [ c o v ( X , X ) c o v ( X , Y ) c o v ( X , Z ) c o v ( X , K ) c o v ( Y , X ) c o v ( Y , Y ) c o v ( Y , Z ) c o v ( Y , K ) c o v ( Z , X ) c o v ( Z , Y ) c o v ( Z , Z ) c o v ( Z , K ) c o v ( K , X ) c o v ( K , Y ) c o v ( K , Z ) c o v ( K , K ) ] C= \left[ \begin{matrix} cov(X,X) & cov(X,Y) & cov(X,Z) & cov(X,K)\\ cov(Y,X) & cov(Y,Y) & cov(Y,Z) & cov(Y,K)\\ cov(Z,X) & cov(Z,Y) & cov(Z,Z) & cov(Z,K)\\ cov(K,X) & cov(K,Y) & cov(K,Z) & cov(K,K)\\ \end{matrix} \right] C=⎣⎢⎢⎡cov(X,X)cov(Y,X)cov(Z,X)cov(K,X)cov(X,Y)cov(Y,Y)cov(Z,Y)cov(K,Y)cov(X,Z)cov(Y,Z)cov(Z,Z)cov(K,Z)cov(X,K)cov(Y,K)cov(Z,K)cov(K,K)⎦⎥⎥⎤
每一个协方差的求解过程为:
协方差 Cov(X,Y) = 1/(N−1)∑(Xi−Xi_)(Yi−Yi_) = ( (1-4) * (4-16/3) + (5-4) * (3-16/3) + (6-4) * (9-16/3) ) / (3-1) = 4.5
最终的协方差矩阵为:
C = [ 7 4.5 4 − 0.5 4.5 10.33 11.5 − 7.16 4 11.5 13 − 8.5 − 0.5 − 7.16 − 8.5 6.33 ] C= \left[ \begin{matrix} 7 & 4.5 & 4 & -0.5 \\ 4.5 & 10.33 & 11.5 & -7.16 \\ 4 & 11.5 & 13 & -8.5 \\ -0.5 & -7.16 & -8.5 & 6.33 \\ \end{matrix} \right] C=⎣⎢⎢⎡74.54−0.54.510.3311.5−7.16411.513−8.5−0.5−7.16−8.56.33⎦⎥⎥⎤
相关关系是一种非确定性的关系,相关系数是研究变量之间线性相关程度的量。
为了准确得到变量之间的相似程度,我们需要把协方差除以各自变量的标准差。这样就得到了相关系数的表达式:
r(X,Y) = Cov(X,Y) / (σX σY)
可见,相关系数就是在协方差的基础上除以变量 X 和 Y 的标准差。
为什么除以各自变量的标准差就能消除幅值影响呢?
这是因为标准差本身反映了变量的幅值变化程度,除以标准差正好能起到抵消的作用,让协方差标准化。这样,相关系数的范围就被归一化到 [-1,1] 之间了。
相关系数大于零,则表示两个变量正相关,且相关系数越大,正相关性越高;
相关系数小于零,则表示两个变量负相关,且相关系数越小,负相关性越高;
相关系数等于零,则表示两个变量不相关。
回过头来看一下协方差与相关系数的关系,其实,相关系数是协方差的标准化、归一化形式,消除了量纲、幅值变化不一的影响。实际应用中,在比较不同变量之间相关性时,使用相关系数更为科学和准确。协方差在机器学习的很多领域都有应用,而且非常重要!
X,Y的变量取值如下:
变量 | |||
---|---|---|---|
X | 1 | 5 | 6 |
Y | 4 | 3 | 9 |
求解X,Y的协方差过程如下:
import numpy as np
a = [1, 5, 6]
b = [4, 3, 9]
X = np.array([[1, 5, 6], [4, 3, 9], [4, 2, 9], [4, 7, 2]])
# 计算变量的平均数
aver_a = np.mean(a)
print("aver_a:", aver_a)
# 计算总体方差(有偏)
var_a = np.var(a)
print("var_a:", var_a)
# 计算总体标准差
std_a = np.std(a)
print("std_a:", std_a)
# 计算样本方差(无偏)
var_sample_a = np.var(a, ddof=1)
print("var_sample_a:", var_sample_a)
# 计算样本标准差
std_sample_a = np.std(a, ddof=1)
print("std_sample_a:", std_sample_a)
# 计算变量 a,b的协方差,(结果以协方差矩阵的形式呈现)
cov_ab = np.cov(a, b)
print("cov_ab:", cov_ab)
# 变量数组 X 的协方差矩阵
cov_X = np.cov(X)
print("cov_X:", cov_X)
# 计算变量a和b的相关系数
corrcoef_ab = np.corrcoef(a, b)
print("corrcoef_ab:", corrcoef_ab)
# 变量数组 X 的相关系数矩阵
corrcoef_X = np.corrcoef(X)
print("corrcoef_X:", corrcoef_X)
运行结果:
aver_a: 4.0
var_a: 4.666666666666667
std_a: 2.160246899469287
var_sample_a: 7.0
std_sample_a: 2.6457513110645907
cov_ab: [[ 7. 4.5 ]
[ 4.5 10.33333333]]
cov_X: [[ 7. 4.5 4. -0.5 ]
[ 4.5 10.33333333 11.5 -7.16666667]
[ 4. 11.5 13. -8.5 ]
[-0.5 -7.16666667 -8.5 6.33333333]]
corrcoef_ab: [[1. 0.52910672]
[0.52910672 1. ]]
corrcoef_X: [[ 1. 0.52910672 0.41931393 -0.07509393]
[ 0.52910672 1. 0.99221536 -0.88589207]
[ 0.41931393 0.99221536 1. -0.93676591]
[-0.07509393 -0.88589207 -0.93676591 1. ]]
参考资料: