本帖最后由 eew_gleddk 于 2025-1-10 02:08 编辑
《深度学习的数学——使用Python语言》统计学.zip
(1.83 MB, 下载次数: 0)
#《深度学习的数学——使用Python语言》统计学
# 概述
本章有六个小节分别是:
- 数据类型
- 描述性统计量
- 分位数和箱型图
- 缺失数据
- 相关性
- 假设检验
本章内容对应在深度学习中是对数据集的一些描述和处理。首先告诉我们数据都有哪些类型,怎么划分这些数据类型,讲解了一些常见的描述性统计量,可以让我们更好的理解数据的整体情况。还介绍了分位数和箱型图实现数据的可视化。
对于缺失值的处理也是十分重要,缺失数据章节告诉我们要怎么处理缺失值,接着讨论样本的相关性,最后介绍了两种假设检验的方法,了解p值的含义。
总的来说,对数据集的理解和预处理对后续的训练有着很重要的作用,所以我们要提前用合适的方法把数据集处理好,然后再进行接下来的训练。
# 数据类型
数据有四种类型:定类数据,定序数据,定距数据,定比数据。
在深度学习中需要对定类数据进行处理,需要把他们转换为定距数据,称为**独热编码**。
本质上就是将定类数据赋予数学含义,便于深度学习提取特征。比如有三个类别,单个定类变量被编码为一个三维向量,其中每一维对应一种颜色。
红色 ->(1 0 0)
绿色 ->(0 1 0)
蓝色 ->( 0 0 1)
# 描述性统计量
对于数据我们首先要根据他的一些统计量去了解它,面对一个新数据集,如果没有先了解他就进行建模计算,就相当于买二手车不检查车况直接成交(书籍中的比喻)。
统计量有很多种,本书主要讲解了均值中位数还有一些衡量变化的统计量。
均值中常用的是算术平均,但是还有几何平均和调和平均,他们都有适合的场景。中位数可以把数据集分为两半,需要和均值互相配合使用。
最常见衡量变化的统计量就是方差,还有其他的描述变化的统计量,比如离差。离差是计算数据值与均值的平均数,离差是反应单个数据和均值的差异,
下面的公式为平均离差的计算公式
当用平方替代绝对值,就是方差的计算公式,如果将前面的n替换为(n-1)则称为无偏方差,在数据量较小时,有偏和无偏方差会有差异,当数据量逐渐增大,他们的差别会越来越小。下面时当数据量逐渐增大后,有偏和无偏方差之间的差异曲线。所以在大数据量的深度学习领域,采用有偏和无偏方差的区别微乎其微。
还有一个需要讨论的用于衡量变化的指标,标准误(Stand Error, SE).根据标准差计算标准误的公式很简单。
使用标准差是为了了解样本围绕均值的情况,而标准误是为了衡量样本均值对总体均值的估计精度。标准误和中心极限定理有关,也与大数定理有关。
在深度学习中,我们用标准差描述训练集的特征。在训练和测试模型时我们可以对模型输出的某些指标求平均(比如准确率),我们除了输出均值还可以输出标准误。
总的来说,标准误是为了衡量样本的均值和总体均值之间差异的统计量。
# 分位数和箱型图
分位数用于将数据划分到固定大小的分组中,箱型图的可以将数据集的多个特征展现。
我们通过一组数据理解分位数和箱型图。我们通过模拟得到一组考试数据,计算分位数并标注在直方图中。
然后用箱型图画出三次的考试数据。
# 缺失数据
缺失值有特殊的标记方法,少量的缺失值不影响,但太多缺失值就需要我们额外处理,可以通过替换描述性统计量解决。
在Numpy中我们可以通过np.isnan来判断是否有缺失值。
如果数据集是带标签的,就应该对每个类别单独计算均值和中位数。
# 相关性
相关性检验数据集是否有关联,本书学习两种相关系数,皮尔森相关性和斯皮尔曼相关性
皮尔森相关系数公式如下,它包含两个特征的均值及其乘积的均值。
我们生成三组数据
~~~
x = np.linspace(0,1,N) + (np.random.random(N)-0.5)
y = np.random.random(N)*x
z = -0.1*np.random.random(N)*x
~~~
第一幅图给出这三个特征的折线图,展示他们之间是如何互相跟踪的,,第二幅图展示了他们之间的两两配对的散点图。
计算他们之间的皮尔森系数
|1. |0.68285166 |-0.85047468|
| ------------| ------------| ------------|
| 0.68285166 | 1. | -0.56536104 |
| -0.85047468 |-0.56536104|1. |
斯皮尔曼相关系数是基于特征取值的次序进行计算的。得到各个元素的次序后,斯皮尔曼相关系数可以定义为
其中d表示两个数据集中对应元素的差值。
两个相关系数的区别:
~~~
a = np.linspace(-20,20,1000)
b = 1.0 / (1.0 + np.exp(-a))
print(pearson(a,b))
print(spearman(a,b))
~~~
结果是
> 0.9053277293366915
1.0
在这个函数中,斯皮尔曼相关性捕捉到了参数之间的非线性关系,而皮尔森只是暗示这种可能性。在传统的机器学习算法中进行特征工程,斯皮尔曼能更好的帮我们判断哪些特征应该丢弃。
# 假设检验
假设检验是用于判断两组数据是否来自相同的分布,在深度学习中常见的有T检验(参数检验)和U检验(非参数检验)。
两组学生通过不同的学习方法学习,现在我们想知道两组学生的考试分数是否有显著的差异,我们需要对某种假设进行检验。下图是数据的箱型图绘制。
我们会有两个假设,一个原假设(两组数据来自同一个分布),一个备择假设(两组数据来自同不同分布)
我们是对均值提出假设,所以原假设表达的是两组数据的总体分布的均值相同。由于不知道真正的总体均值所以用样本均值和标准差代替。
总之我们要记住,我们不是以原假设为真作为结论,而是我们是否有充足的理由拒绝或接受原假设作为结论。
t检验使用t统计量检验,t检验是一种参数检验,我们需要对数据及其分布做一定假设。就t检验来说,我们假设数据是独立同分布且服从正态分布。如果数据不服从正态分布我们就要进行非参检验,非参检验不用对数据内在分布进行假设。U检验是一种非参检验,U检验利用数据的排序信息,他的原假设是从第一组数据随机取样的结果大于第二组随机取样结果的概率等于0.5.
所有实验代码上传附件。