当前位置: 首页 > news >正文

《机器学习数学基础》补充资料:标准差与标准化

1 标准差

我们经常使用平均数来大致了解一组数据,例如平均成绩、平均身高、平均寿命等等。但是如果只看平均数,不一定能充分了解整体情况。比如说你和某首富住同一个社区,你们社区平均每户年收入两千万,那么你家是有钱还是没钱?另外就是看到了平均工资,才知道自己“拖了后腿”——关于平均工资问题,在《机器学习数学基础》中有专门讨论,是否真的拖后腿了?通过统计学知识就能明了。

为了帮助我们更了解整体情况,需要更多统计量来进行描述。

其中一个统计量,就是用于描述数据的离散情况。换句话说,就是描述这组数据的所有数据,是很集中还是很分散。为了描述离散情况,首先想到的是:每一个数据离平均值有多远?如果对于数据 XXX 里的每个数据 xix_ixi ,我们都将它减去平均数 μX\mu_XμX ,然后再全部加起来,得到
∑i=1n(xi−μX)=∑i=1nxi−∑i=1nμX=nμX−nμX=0 \sum_{i=1}^n (x_i - \mu_X) = \sum_{i=1}^n x_i - \sum_{i=1}^n \mu_X = n\mu_X - n\mu_X = 0 i=1n(xiμX)=i=1nxii=1nμX=nμXnμX=0
这就很有意思了,结果为 0。因为有些数据比平均值大,有些比平均值小,正负自然会相互抵消。为了避免这种情况,我们改为先取绝对值再相加
∑i=1n∣xi−μX∣ \sum_{i=1}^n |x_i - \mu_X| i=1nxiμX
这样就没有正负抵消的问题了。这个式子中的每一项,叫做离均差,意思是每个数据离平均值有多远。然而这样计算起来不太方便,大量绝对值相加是很难处理的。所以我们改为先把每个离均差都平方,然后再相加
∑i=1n(xi−μX)2 \sum_{i=1}^n (x_i - \mu_X)^2 i=1n(xiμX)2
可是这个式子,如果数据的项数越多,加起来的结果岂不是越大吗?比如说一个班的考试成绩,如果隔壁班和本班有完全一样的成绩分布,两班合并在一起计算,结果就会变成两倍,但离散情况并没有变化。为了消除数据数量 nnn 的影响,我们再除以 nnn ,变成计算离均差平方的平均
∑i=1n(xi−μX)2n \frac{\sum_{i=1}^n (x_i - \mu_X)^2}{n} ni=1n(xiμX)2
这个式子,适合用来描述离散情况,称为方差(variance)。但因为我们先进行了平方运算,所以这样算出的结果,单位会与原来的数据不一致。如果我们希望单位保持一致,就将方差再开根号:
∑i=1n(xi−μX)2n \sqrt{\frac{\sum\limits_{i=1}^n (x_i - \mu_X)^2}{n}} ni=1n(xiμX)2
离均差平方的平均再开根号,这称为标准差(standard deviation)。为什么刚才说取绝对值相加比较不好算,平方后再相加却反而好算呢?我们可以将标准差定义中平方的部分展开:
∑i=1n(xi−μX)2n=∑i=1n(xi2−2μXxi+μX2)n=∑i=1nxi2−∑i=1n2μXxi+∑i=1nμX2n=∑i=1nxi2−2μX∑i=1nxi+μX2∑i=1n1n与下标 i 无关的可提出=∑i=1nxi2−2μX(nμX)+μX2⋅nn=∑i=1nxi2−2nμX2+nμX2n=∑i=1nxi2−nμX2n=∑i=1nxi2n−μX2 \begin{split} \sqrt{\frac{\sum\limits_{i=1}^n(x_i-\mu_X)^2}{n}}&=\sqrt{\frac{\sum\limits_{i=1}^n (x_i^2 - 2\mu_X x_i + \mu_X^2)}{n}} \\&=\sqrt{\frac{\sum\limits_{i=1}^n x_i^2 - \sum\limits_{i=1}^n 2\mu_X x_i + \sum\limits_{i=1}^n \mu_X^2}{n}} \\&= \sqrt{\frac{\sum\limits_{i=1}^n x_i^2 - 2\mu_X \sum\limits_{i=1}^n x_i + \mu_X^2 \sum\limits_{i=1}^n 1}{n}} \quad \text{与下标 i 无关的可提出} \\&= \sqrt{\frac{\sum\limits_{i=1}^n x_i^2 - 2\mu_X (n\mu_X) + \mu_X^2 \cdot n}{n}} \\&= \sqrt{\frac{\sum\limits_{i=1}^n x_i^2 - 2n\mu_X^2 + n\mu_X^2}{n}} \\&= \sqrt{\frac{\sum\limits_{i=1}^n x_i^2 - n\mu_X^2}{n}} = \sqrt{\frac{\sum\limits_{i=1}^n x_i^2}{n} - \mu_X^2} \end{split} ni=1n(xiμX)2=ni=1n(xi22μXxi+μX2)=ni=1nxi2i=1n2μXxi+i=1nμX2=ni=1nxi22μXi=1nxi+μX2i=1n1与下标 i 无关的可提出=ni=1nxi22μX(nμX)+μX2n=ni=1nxi22nμX2+nμX2=ni=1nxi2nμX2=ni=1nxi2μX2
这样便得到标准差的另一种公式,当我们只知道数据的平方和而不知道每一组数据的详细数值时,就可以使用这个公式。

注意

  1. 方差的符号可以写成 Var\text{Var}Varσ2\sigma^2σ2 ,其公式为:

σ2=∑i=1n(xi−μX)2n=∑i=1nxi2n−μX2 \sigma^2 = \frac{\sum\limits_{i=1}^n (x_i - \mu_X)^2}{n} = \frac{\sum\limits_{i=1}^n x_i^2}{n} - \mu_X^2 σ2=ni=1n(xiμX)2=ni=1nxi2μX2

  1. 标准差的符号可以写成 Var\sqrt{\text{Var}}Varσ\sigmaσ ,其公式为:

σ=∑i=1n(xi−μX)2n=∑i=1nxi2n−μX2 \sigma = \sqrt{\frac{\sum\limits_{i=1}^n (x_i - \mu_X)^2}{n}} = \sqrt{\frac{\sum\limits_{i=1}^n x_i^2}{n} - \mu_X^2} σ=ni=1n(xiμX)2=ni=1nxi2μX2

  1. 方差可以理解为计算正方形面积的平均,如下图所示。数据离平均值越远,算出的正方形面积就越大,会使方差的结果更大。

在这里插入图片描述

图 1:方差的几何意义
  1. 数据的平移不影响标准差,但伸缩会有影响。设 Y=aX+bY = aX + bY=aX+b,则:

σY=∑i=1n(yi−μY)2n=∑i=1n[(axi+b)−(aμX+b)]2n=∑i=1n[a(xi−μX)]2n=a2∑i=1n(xi−μX)2n=a2⋅∑i=1n(xi−μX)2n=∣a∣⋅∑i=1n(xi−μX)2n=∣a∣σX \begin{split} \sigma_Y &= \sqrt{\frac{\sum\limits_{i=1}^n (y_i - \mu_Y)^2}{n}} \\&= \sqrt{\frac{\sum\limits_{i=1}^n \left[(ax_i + b) - (a\mu_X + b)\right]^2}{n}} \\&= \sqrt{\frac{\sum\limits_{i=1}^n \left[a(x_i - \mu_X)\right]^2}{n}} \\&= \sqrt{\frac{a^2 \sum\limits_{i=1}^n (x_i - \mu_X)^2}{n}} \\&= \sqrt{a^2 \cdot \frac{\sum\limits_{i=1}^n (x_i - \mu_X)^2}{n}} \\&= |a| \cdot \sqrt{\frac{\sum_{i=1}^n (x_i - \mu_X)^2}{n}} \\&= |a| \sigma_X \end{split} σY=ni=1n(yiμY)2=ni=1n[(axi+b)(aμX+b)]2=ni=1n[a(xiμX)]2=na2i=1n(xiμX)2=a2ni=1n(xiμX)2=ani=1n(xiμX)2=aσX

  1. 由方差的第二个式子移项,可得:
    σ2+μX2=∑i=1nxi2n∑i=1nxi2=n(σX2+μX2) \begin{split} \sigma^2+\mu^2_X=\frac{\sum\limits_{i=1}^nx_i^2}{n} \\ \sum_{i=1}^n x_i^2 = n\left(\sigma_X^2 + \mu_X^2\right) \end{split} σ2+μX2=ni=1nxi2i=1nxi2=n(σX2+μX2)

这是一个实用的公式。

2 标准化

2 标准化

如果你上次数学考 70 分,这次考 50 分,那你是进步还是退步呢?当然,你的慈母很可能会不太高兴,竟然退步了 20 分!正当要执行家法时,你急忙抗辩:“等一下!上次数学全班平均 60 分,这次考试比较难,班级平均只有 40 分!我这两次都比平均高 10 分,应该不算退步吧!” 你的慈母听了觉得挺有道理,正当你松了口气时,一旁正在阅读《机器学习数学基础》(齐伟,电子工业出版社)的严父看不下去了:“这两次我都看过你班上的成绩单,上次标准差才 5 分,你比平均高两个标准差。这次标准差 10 分,你只比平均高一个标准差而已,所以你还是退步了。” 于是你还是被执行家法,然后好好学数学。你正生气觉得不理解,本来今天高高兴兴的,严父为什么要说这种话,这时刚好翻到《机器学习数学基础》上讲到数据的标准化,好像就和严父那番话有关系。

假设一种场景:小明身高 187 公分,家庭年收入 100 万元。因为小明并不帅,显然不是高富帅,但究竟说他高比较好,还是说他富比较好呢?身高和家庭年收入,显然是两种不同的数据,无法直接比较。但人性嘛,总想去比较,不能比也要比。于是采取相对比较的办法:小明班上平均身高 175 公分,标准差 4 公分,所以小明的身高在班上比平均多出 3 个标准差;班上家庭年收入平均 80 万元,标准差 20 万元,所以小明家的年收入在班上比平均多出 1 个标准差。这样看来,小明的 “富” 在班上似乎不是太突出,倒是身高相对来说在班上比较高。所以我们得出结论:小明(在这个班)是高而不是富!

为了方便计算比平均高几个标准差,我们对数据进行转换。使转换后的新数据具有平均数为 0、标准差为 1 的特性,这样只要一看新数据,就马上知道是比平均高多少个标准差了。那该如何设定数据转换呢?当然是这样:
Z=X−μXσX Z = \frac{X - \mu_X}{\sigma_X} Z=σXXμX
对于线性变换 Y=aX+bY = aX + bY=aX+b ,其平均数为:
μY=aμX+b \mu_Y = a\mu_X + b μY=aμX+b
直接将原平均数代入线性变换式子即可。所以 ZZZ 的平均数为:
μZ=μX−μXσX=0 \mu_Z = \frac{\mu_X - \mu_X}{\sigma_X} = 0 μZ=σXμXμX=0
又因为标准差与平移无关,且伸缩系数取绝对值,
σY=∣a∣σX \sigma_Y=|a|\sigma_X σY=aσX
所以 ZZZ 的标准差为:
σZ=∣1σX∣⋅σX=1 \sigma_Z = \left| \frac{1}{\sigma_X} \right| \cdot \sigma_X = 1 σZ=σX1σX=1

定义:数据的标准化

对数据 XXX 进行线性变换:
Z=X−μXσX Z = \frac{X - \mu_X}{\sigma_X} Z=σXXμX

这称为数据的标准化,数据 ZZZ 称为标准化数据,标准化数据的值称为 zzz 分数。

小明身高 187 厘米,进行标准化计算为:z=187−1754=3z = \frac{187 - 175}{4} = 3z=4187175=3

zzz 分数是 3,表示高出平均值 3 个标准差。小明的同学张三身高 173 厘米,进行标准化计算为:

z=173−1754=−0.5 z = \frac{173 - 175}{4} = -0.5 z=4173175=0.5
zzz 分数是 - 0.5,表示比平均值低 0.5 个标准差。

标准化数据还有一个特性,就是无单位。比如小明班上的身高,标准差是 4 厘米。如果将身高单位改用米,那么每个人的数据都变为原来的百分之一,例如小明的身高是 1.87 米,班上身高的标准差是 0.04 米。而小明身高的 zzz 分数,无论原数据用 187 厘米还是 1.87 米,计算结果都是 3。

再介绍一个与标准化概念类似,但不直接使用 zzz 分数的例子。我们所说的 IQ,并不是智商测试后的原始分数。而是先将原始分数按不同年龄分类,同年龄组的全球平均分数设定为 IQ100,标准差设定为 15。如果你的原始成绩比同年龄全球平均高 2 个标准差,那么你的智商就是 130;如果原始成绩比同年龄全球平均低 1.2 个标准差,那么你的智商就是 82。因此,从你的智商分数中,可以知道自己在同年龄群体中的相对水平。假设你 8 岁时做了一次智商测试,12 岁时再做一次,期间你的智力既没有进步也没有衰退,你的智商应该会下降,因为同年龄群体的整体水平提升了。

有一个国际组织叫门萨(MENSA),是一个高智商俱乐部,其入会门槛为 IQ130。别以为这听起来不高,这已经比平均值高 2 个标准差,符合条件的比例仅约为 2.5%!——对于这个数值,可以通过正态分布得到。

《机器学习数学基础》在各大平台有售,请认准作者和出版社

在这里插入图片描述

http://www.lryc.cn/news/589994.html

相关文章:

  • 《Qt信号与槽机制》详解:从基础到实践
  • Qt中实现文件(文本文件)内容对比
  • 若依框架下前后端分离项目交互流程详解
  • ScratchCard刮刮卡交互元素的实现
  • MR 处于 WIP 状态的WIP是什么
  • Django+Celery 进阶:Celery可视化监控与排错
  • 手撕Spring底层系列之:IOC、AOP
  • hadoop 集群问题处理
  • gem install报错解析
  • mac电脑无法阅读runc源码
  • UE5多人MOBA+GAS 24、创建属性UI(一)
  • 从 “洗澡难” 到 “洗得爽”:便携智能洗浴机如何重塑生活?
  • RK3566-EVB开发板如何新建一个产品分支
  • Jetpack Compose 中 Kotlin 协程的使用
  • 基于Hadoop与LightFM的美妆推荐系统设计与实现
  • Chrome紧急更新,谷歌修复正遭活跃利用的关键零日漏洞
  • iPhone 数据擦除软件评测(最新且全面)
  • 力扣面试150题--建立四叉树
  • 分布式光伏气象站:光伏产业的智慧守护者
  • 秘塔AI搜索的深度研究推出:它的“免费午餐”还能走多远?
  • 分布式弹性故障处理框架——Polly(1)
  • PyCharm(入门篇)
  • Python设计模式深度解析:建造者模式(Builder Pattern)完全指南
  • vivo S30评测:用设计诠释科技,以性能书写情怀
  • Git版本控制完全指南:从入门到精通
  • RoMa: Robust Dense Feature Matching论文精读(逐段解析)
  • 【Call For Paper| EI会议】第五届计算机图形学、人工智能与数据处理国际学术会议 (ICCAID 2025)
  • Weblogic历史漏洞利用
  • 5.Java类与对象
  • SenseGlove力反馈手套:医疗、生产制造、军事模拟与远程机器人控制新革命