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

本文始发于个人公众号: 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 – \bar{X})^2}{N-1} \]

这里的N表示的是样本数量, \(\bar{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 \]

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

\[\begin{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是一个常量,我们可以忽略,只用来看分子即可。我们把式子展开:

\[\begin{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(X\bar{X}+X\bar{Y}+\bar{X}Y+Y\bar{Y})+ \bar{X}^2 + 2\bar{X}\bar{Y} + \bar{Y}^2) \\ &= \frac{1}{N}((X-\bar{X})^2 + (Y-\bar{Y})^2+2(XY + \bar{X}\bar{Y} – X\bar{Y} – \bar{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-\bar{X})(Y-\bar{Y}))}{\sqrt{D(X)}\sqrt{D(Y)}}= \frac{E((X-\bar{X})(Y-\bar{Y}))}{\sqrt{\sum (X-\bar{X})^2}\sqrt{\sum (Y-\bar{Y})^2}} \]

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

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

结尾

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

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

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