正态分布很好解释 。因为:
1. 分布的均值、众数和中位数是相等的;
2. 我们只要用平均值和标准差就可以解释整个分布 。
为什么这么多变量近似正态分布?
为什么样本一多,那么总会有一堆样本都非常普通?这个想法背后有这样一个定理:你在大量随机变量上多次重复一个实验时,它们的分布总和将非常接近正态性(normality) 。
人的身高是一个基于其他随机变量(比如一个人所消耗的营养量、他们居住的环境以及他们的基因等)的随机变量,这些随机变量的分布总和最终是非常接近正态的 。这就是中心极限定理 。
我们从前文了解到,正态分布是许多随机分布的和 。如果我们对正态分布密度函数作图 , 那所作曲线有如下特性:
这个钟形曲线平均值为 100 , 标准差为 1 。
上图介绍了非常出名的 3σ原则,即:
这样我们就可以轻松地估计出变量的波动性,还可以给出一个置信水平,估计它可能取的值是多少 。例如,在上面的灰色钟型曲线中,变量值出现在 101~99 之间的概率约为 68.2% 。想象一下 , 当你根据这样的信息做决定时,你的信心有多充足 。
概率分布函数
正态分布的概率密度函数是:
概率密度函数本质上是连续随机变量取某些值的概率 。例如想知道变量出现在 0 到 1 之间,它的概率就能通过概率密度函数求出 。
如何用 Python 找出特征分布?
我用过的最简单的方法是在 Pandas 的 DataFrame 中加载所有特征 , 然后直接调用它的方法找出特征的概率分布:
这里的 bins 表示分布的柱状数量 。当然上面并不是一个正态分布,那么当变量满足正态分布时,它意味着什么?
这意味着,如果你把大量分布不同的随机变量加在一起,你的新变量最终也服从正态分布,这就是中心极限定理的魅力 。此外,服从正态分布的变量会一直服从正态分布 。举个例子,如果 A 和 B 是两个服从正态分布的变量,那么:
变量还是乖乖地变成正态分布吧
如果样本满足某个未知的分布 , 那么通过一系列操作,它总是能变成正态分布 。相反 , 标准正态分布的叠加与转换,也一定能变化为任意未知分布 。从标准正态转换到未知分布,就是很多机器学习模型希望做到的,不论是视觉中的 VAE 或 GAN,还是其它领域的模型 。
但对于传统统计学,我们更希望将特征的分布转换成正态分布,因为正态分布简单又好算呀 。下面展示了几种转换为标准正态的方法 , 像相信变换什么的,在高中都有学过 。
1. 线性变换
我们收集到作为变量的样本后,就可以用下面的公式对样本做线性变换 , 从而计算出
用下式根据每一个值 x 计算出 Z
以前 x 可能服从某个未知分布,但是归一化后的 Z 是服从正态分布的 。嗯,这就是做批量归一化或其它归一化的好处吧 。
2.Box-cox 变换
你可以用 Python 的 SciPy 包将数据转换成正态分布:
3.YEO-JOHBSON 变换
此外 , 也可以用强大的 yeo-johnson 变换 。Python 的 sci-kit learn 提供了合适的函数:
最后,非常重要的一点是,在没有做任何分析的情况下假设变量服从正态分布是很不明智的 。
以遵循泊松分布(Poisson distribution)、t 分布(student-t 分布)或二项分布(Binomial distribution)的样本为例,如果错误地假设变量服从正态分布可能会得到错误的结果 。
以上就是关于正态分布的一些讨论 。
如果文章对你有帮助,欢迎转发/点赞/收藏~
- 使用redis实现分布式锁及其优化 redis分布式性能
- redis分布式锁死锁处理方案 redis宕机分布式锁
- redis incr锁 redis加锁方式
- 使用redis做分布式锁 redis设计分布式锁
- mongodb分布式集群搭建 mongodb具备优秀的分布式集群架构
- mysql分布式存储实现 分布式mysql集群部署
- redission源码解析 redis源码分析分布式
- mongdb python pythonmongodb操作
- mysql集群有哪几种模式 mysql集群分布式存储
- redis分布式锁应用 redis分布式锁单机版
