机器学习——方差、协方差与皮尔逊值

本文始发于个人公众号:TechFlow,原创不易,求个关注


今天是概率统计专题的第六篇,我们来看看方差相关的概念。


方差的定义


方差在我们的日常生活当中非常常见,它主要是为了提供样本离群程度的描述。举个简单的例子,我们去买一包薯片,一般来说一袋薯片当中的数量是固定的。我们假设平均每袋当中都有50片薯片好了,即使是机器灌装,也不可能做到每一袋都刚好是50片,或多或少都会有些误差。而均值则无法衡量这种误差。

如果现在有两个薯片品牌,它们的口味都差不多,平均每袋也都是50片。但是其中A品牌的薯片有一半是80片,还有一半是20片。B品牌呢,99%都在45-55之间。你说你会买哪一个牌子呢?(在不考虑通过称重的情况下)。

在现代社会,凡是工厂出厂的产品,基本上都离不开方差这个概念。方差越低,说明工厂的生产能力越强,能够做到每一个产品都很精细,相反如果方差越大,则说明瑕疵很多,不够精细。也就是说,方差衡量的是样本距离均值的期望。

它本来应该写成:(E|X-E(X)|)

但是由于式子当中存在绝对值,我们通常会对它平方,从而将绝对值消掉。写成:

[Var(X) = E{[X-E(X)]^2} ]

这里的E表示期望,这是统计学当中的写法,如果看不明白,我们也可以把式子展开写成:

[Var(X) = frac{sum_{i=1}^N (X_i - ar{X})^2}{N-1} ]

这里的N表示的是样本数量,(ar{X})是样本的均值。Var是英文variance的缩写,我们也可以写成D(X)。

由于方差是通过平方计算得到的,我们也可以将它进行开方,得到标准差(sqrt{D(X)}),也可以写成(sigma(X))


方差的性质


关于方差有几个著名的性质,如果X是变量,而C是常数。那么:

[D(CX)=C^2D(X) ]

也就是对于每一个变量都乘上一个常数,那么整体的方差扩大C的平方倍。这个很好理解,因为样本值扩大了C倍,由于我们在计算方差的时候用到了平方,那么自然就是扩大了C的平方倍。我们利用上面展开的公式代入可以很容易得到证明。

下一个性质是:

[D(X+C) = D(X) ]

也就是全体样本加上一个常数,整体的方差不变。如果我们的样本不是一个值,而是一个向量的话,那么这个公式可以拓展成样本加上一个常数向量,样本的方差保持不变。这个也很好理解,样本加上一个常数向量,相当于整体朝着向量的方向移动了一个距离,对于整体的分布并不会影响

如果某个样本X的方差为0,那么说明样本内只有一个值。

下面一个性质稍微复杂一点:

[D(X) = E(X^2) - [E(X)]^2 ]

也就是说方差等于样本平方的期望减去样本期望的平方,我们光从定义上很难得出这个结论,需要通过严谨的推导:

[egin{aligned} D(X) &= E{[X-E(X)]^2} \ &= E{X^2 -2XE(X) + [E(X)]^2}\ &= E(X^2) - 2E(X)E(X) + [E(X)]^2 \ &= E(X^2) - [E(X)]^2 end{aligned} ]

在有些时候,我们直接求解样本的方差不太方便,而求解平方的期望很容易,这个时候我们可以考虑使用这个公式进行代换。


方差与协方差


方差我们一般不直接在机器学习当中进行使用,更多的时候是用在特征分析当中,查看特征的方差来感知它的离散情况,决定要不要对特征进行一些处理。因为对于一些模型来说,如果特征的方差过大,那么模型可能很难收敛,或者是收敛的效果可能会受到影响。这个时候往往需要考虑使用一些方法对特征值进行标准化处理。

除了方差之外,还有一个类似的概念也经常被用到,就是用来衡量两个变量之间相关性的协方差。

协方差的公式其实和方差也有脱不开的关系,我们先来简单推导一下。

首先,我们来看一下D(X+Y),这里X和Y是两个变量,D(X+Y)就表示X+Y的方差,我们来看下D(X+Y)和D(X)和D(Y)之间的关系。

我们可以来推导一下,根据方差的定义:

[D(X+Y) = frac{[(X+Y) - E(X+Y)]^2}{N} ]

这里的N是一个常量,我们可以忽略,只用来看分子即可。我们把式子展开:

[egin{aligned} D(X+Y) &= frac{1}{N}(X^2+2XY+Y^2-2(X+Y)E(X+Y)) \ &= frac{1}{N}(X^2+2XY+Y^2-2(X+Y)overline{(X+Y)} + overline{(X+Y)}^2) \ &= frac{1}{N}(X^2 + 2XY + Y^2 - 2(Xar{X}+Xar{Y}+ar{X}Y+Yar{Y})+ ar{X}^2 + 2ar{X}ar{Y} + ar{Y}^2) \ &= frac{1}{N}((X-ar{X})^2 + (Y-ar{Y})^2+2(XY + ar{X}ar{Y} - Xar{Y} - ar{X}Y)) \ &= frac{1}{N}((X-E(X))^2 + (Y - E(Y))^2 + 2(X-E(X))(Y-E(Y))) \ &= D(X) + D(Y) + 2E((X - E(X))(Y-E(Y))) end{aligned} ]

我们看下上面化简之后的结果:

[D(X+Y) = D(X) + D(Y) + 2E((X - E(X))(Y-E(Y))) ]

在这个式子当中(D(X))(D(Y))都是固定的,并不会随XY是否相关而发生变化。但是后面一项不是,它和XY的相关性有关。

我们可以用这一项来反应X和Y之间的相关性,这就是协方差的公式:

[Cov(X, Y) = E((X - E(X))(Y-E(Y))) ]

所以协方差反应的不是变量的离散和分布情况,而是两个变量之间的相关性。到这里,我们可能还不太看得清楚,没有关系,我们再对它做一个简单的变形,将它除以两者的标准差:

[p = frac{E((X-ar{X})(Y-ar{Y}))}{sqrt{D(X)}sqrt{D(Y)}}= frac{E((X-ar{X})(Y-ar{Y}))}{sqrt{sum (X-ar{X})^2}sqrt{sum (Y-ar{Y})^2}} ]

这个形式已经非常像是两个向量夹角的余弦值,它就是大名鼎鼎的皮尔逊值。皮尔逊值和余弦值类似,可以反映两个分布之间的相关性,如果p值大于0,说明两组变量成正相关,否则则成负相关。我们可以通过计算证明p值是一个位于-1到1之间的数。

如果p值等于0,说明X和Y完全独立,没有任何相关性。如果p值等于1,说明可以找到相应的系数W和b使得Y = WX+b。


结尾


在机器学习领域当中,计算两组变量之间的相关性非常重要。因为本质上来机器学习的模型做的就是通过挖掘特征和预测值之间的相关性来完成预测,如果某一组特征和预测值之间是完全独立的,那么它对于模型来说就是无用的,无论我们选择什么样的模型都是如此。

所以,我们经常会通过分析特征和label之间的皮尔逊值来衡量特征的重要程度,从而对特征进行取舍和再加工。如果单纯只看皮尔逊值和它的公式,很难完全理解和记住,而我们从方差入手,将整个链路梳理了一遍,则要容易得多,即使以后忘记了,也可以根据它们之间的关系重新推导。

今天的文章就到这里,原创不易,扫码关注我,获取更多精彩文章。

原文地址:https://www.cnblogs.com/techflow/p/12898951.html