购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

4.8 期望、方差及协方差

在机器学习、深度学习中经常需要分析随机变量的数据特征及随机变量间的关系等,对于这些指标的衡量在概率统计中有相关的内容,如衡量随机变量的取值大小的期望(Expectation)值或平均值、衡量随机变量数据离散程度的方差(Variance)、揭示随机向量间关系的协调方差(Convariance)等。这些衡量指标的定义及公式就是本节的主要内容。

首先我们看随机变量的数学期望的定义。

对离散型随机变量X,设其分布律为:

对于连续型随机变量X,设其概率密度函数为f(x),若积分:

则绝对收敛,积分的值称为随机变量X的数学期望,记为:

如果是随机变量函数,如随机变量X的g(x)的期望,公式与式(4.21)或式(4.22)类似,只要把x换成g(x)即可,即随机变量函数g(x)的期望为:

设Y=g(X),则:

期望有一些重要性质,具体如下所示。

设a、b为一个常数,X和Y是两个随机变量。则有:

1)E(a)=a

2)E(aX)=aE(X)

4)当X和Y相互独立时,则有:

数学期望也常称为均值,即随机变量取值的平均值,当然这个平均是指以概率为权的加权平均。期望值可大致描述数据的大小,但无法描述数据的离散程度,这里我们介绍一种刻画随机变量在其中心位置附近离散程度的数字特征,即方差。那么,如何定义方差?

假设随机向量X有均值E(X)=a。试验中,X取的值当然不一定恰好是a,可能会有所偏离。偏离的量X-a本身也是一个随机变量。如果我们用X-a来刻画随机变量X的离散程度,当然不能取X-a的均值,因E(X-a)=0,说明正负偏离抵消了,当然我们可以取|X-a|这样可以防止正负抵消的情况,但绝对值在实际运算时很不方便。那么可以考虑另一种方法,先对X-a平方以便消去符号,然后再取平均得E(X-a) 2 或E(X-EX) 2 ,用它来衡量随机变量X的取值的离散程度,这个量就叫作X的方差(即差的方),随机变量的方差记为:

方差的平方根被称为标准差。

对于多维随机向量,如二维随机向量(X,Y)如何刻画这些分量间的关系?显然均值、方差都无能为力。这里我们引入协方差的定义,我们知道方差是X-EX乘以X-EX的均值,如果我们把其中一个换成Y-EY,就得到E(X-EX)(Y-EY),其形式接近方差,又有X、Y两者的参与,由此得出协方差的定义,随机变量X、Y的协方差,记为Cov(X,Y):

协方差的另一种表达方式:

方差可以用来衡量随机变量与均值的偏离程度或随机变量取值的离散程度,而协方差则可衡量随机变量间的相关性强度,如果X与Y独立,那么它们的协方差为0。反之,并不一定成立,独立性比协方差为0的条件更强。不过如果随机变量X、Y都是正态分布,此时独立和协方差为0是同一个概念。

当协方差为正时,表示随机变量X、Y为正相关;如果协方差为负,表示随机变量X、Y为负相关。

为了更好地衡量随机变量间的相关性,我们一般使用相关系数来衡量,相关系数将每个变量的贡献进行归一化,使其只衡量变量的相关性而不受各变量尺寸大小的影响,相关系统的计算公式如下:

由式(4.30)可知,相关系统是在协方差的基础上进行正则化,从而把相关系数的值限制在[-1,1]之间。如果ρ xy =1,说明随机变量X、Y是线性相关的,即可表示为Y=kX+b,其中k、b为任意实数,且k>0;如果ρ xy =-1,说明随机变量X、Y是负线性相关的,即可表示为Y=-kX+b,其中k>0。

上面我们主要以两个随机变量为例,实际上协方差可以推广到n个随机变量的情况或n维的随机向量。对n维随机向量,我们可以一个n×n的协方差矩阵,而且满足:

1)协方差矩阵为对称矩阵,即Cov(X i ,X j )=Cov(X j ,X i )。

2)协方差矩阵的对角元素为方差:即Cov(X i ,X i )=Var(X i )。

求随机变量的方差、协方差、相关系统等,使用Python的NumPy相关的函数,如用numpy.var求方差,numpy.cov求协方差,使用numpy.corrcoef求相关系数,比较简单,这里就不展开来说了。

在机器学习中多维随机向量通常以矩阵的方式出现,所以求随机变量间的线性相关性,就转换为求矩阵中列或行的线性相关性。这里我们举一个简单实例,来说明如果分析向量间的线性相关性并可视化结果。这个例子中使用的随机向量(或特征值)共有三个,一个是气温(temp),一个体感温度(atemp),一个是标签(label,说明共享单车每日出租量),表4-2是这三个特征的部分数据。

表4-2 共享单车示例数据

这里使用Python中数据分析库pandas及画图库matplotlib、sns等。


###探索特征间分布、相关性等
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
%matplotlib inline

data_pd=data1.toPandas()
sns.set(style='whitegrid',context='notebook')
cols=['temp','atemp','label']
sns.pairplot(data_pd[cols],size=2.5)
plt.show()

从图4-4可以看出,特征temp与atemp是线性相关的,其分布接近正态分布。

图4-4 特征分布及相关性 vKnRLBi4fh7tw89LwUt7XSlZ3JmrGFTixtXkfso3GuhdK/0h67EBlJtWMLCLYs92

点击中间区域
呼出菜单
上一章
目录
下一章
×