掌握一点儿统计学

对于数据分析师而言,统计学必定是一门绕不开的学科。我今生做数据科学家已经无望了,但就工程角度来讲,致力于大数据行业,了解一些必备的统计学知识仍有必要。Data Science from Scratch的第5章讲解了统计学初级知识,对于我这样的门外汉而言,可谓恰到好处。尤喜书中还给出Python的代码示例,对于程序员而言,这是了解概念知识的利器。

统计学会描述一组数据,并通过一些常用的统计运算甄别出数据的规律,从而帮助分析师能够更好地理解数据。统计学中最常见的运算自然就是计数(count)、最大值(max)、最小值(min)和平均数(mean)。

Central Tendencies

mean其实属于Central Tendencies中的一种运算。根据网站QuickMBA对Central Tendency的解释,该术语指的是对一组数据的中值计算,包括mean、median和mode。mean即求平均值,是最常见的数学运算,而median称为“中位数”,指的是最靠近中间位置的数。如果一组数据的个数为奇数,则median只有一个,否则为最靠近中间的两个值的平均数。因此,在计算median时,需要对数据进行排序。阅读代码就一目了然了:

def median(v):
    n = len(v)
    sorted_v = sorted(v)
    midpoint = n // 2

    if n % 2 == 1:
        # n is odd
        return sorted_v[midpoint]
    else:
        # n is even
        lo = midpoint - 1
        hi = midpoint
        return (sorted_v[lo] + sorted_v[hi]) / 2

mode称为“众数”,指的是在一组数据中出现次数最多的数。例如在[1,1,2,3,4,5,3]这组数据中,1和3就是mode获得的值。在Python中,提供了Counter来获得各个元素出现的次数,因此mode函数的实现非常简单:

def mode(x):
    counts = Counter(x)
    max_count = max(counts.values())
    return [x_i for x_i, count in counts.iteritems() if count == max_count]

mean和median比较而言,前者更容易受到异常数据的影响,而后者取决于位置,无论数值如何分布,基本上都不会影响到它的值。

事实上,median仅仅是quantile(分位数)的一个特化而已,它相当于第二个分位数,取值为0.5。对于quantile而言,究竟取值哪个范围,要看传入的百分比。若记该比例为q,可以称之为q-quantile。median可以记为2-quantile。以下是维基百科对各种百分比值对应术语的说明:

The only 2-quantile is called the median The 3-quantiles are called tertiles or terciles → T The 4-quantiles are called quartiles → Q The 5-quantiles are called quintiles → QU The 6-quantiles are called sextiles → S The 10-quantiles are called deciles → D The 12-quantiles are called duo-deciles → Dd The 20-quantiles are called vigintiles → V The 100-quantiles are called percentiles → P The 1000-quantiles are called permilles → Pr

在统计学中,为了更好地分析和观测数据,通常会将数据分为多个等分,四等分为最常见的情况,处于三个分割点位置的数值就是quantile。划分后的数据有利于对各个区间段的数据进行比较。正如《Head First Data Analysis》一书所说:“进行有效地比较是数据分析的核心”,很多时候,数字需要和数字进行比较,才能产生价值。

标准差(standard deviation)

如果调用Spark中DataFrame的describe(),会显示针对DataFrame各列数据进行的summary统计,统计结果就包括前面提到的count、mean、max和min。除此之外,还包括stddev。stddev即为standard deviation(标准差)。要计算标准差,需要先计算variance(方差)。因为标准差就是针对方差求平方根:

def standard_deviation(x):
    math.sqrt(variance(x))

所谓variance,是各个数与mean差值的平方和,然后再除以这组数据的个数(或个数减一,即变异数):

def de_mean(x):
    """获得各个数与mean的差值"""
    x_mean = mean(x)
    return [x_i - x_mean for x_i in x]def variance(x):
    n = len(x)
    deviations = de_mean(x)
    return sum_of_squares(deviations) / (n - 1)

之所以要除以n-1,而非n,是因为我们在采集样本时,求得的平均值仅仅是一个估算值,而非理想的平均值,存在一定的偏差(为了保证测量的准确性,我们希望采集的数据样本越大越好)。因此在对x_i - x_mean求平方时,会比实际的平方差要小,通过对n减一,就可以对这种偏差做校正。这一偏差在统计学中称之为Unbiased estimation of standard deviation。

标准差通常用作对统计分布程度的测量,反映了一组数据的离散(dispersion)程度。为什么要使用标准差呢?原因在于一个事实,那就是我们采集的数据样本与真实值总是存在一定的偏差。现实情况下,我们甚至根本不知道这个真实值,就像现实世界根本就不存在几何学中各种标准的图形那样。所以,要测量这组数据的离散程度,最好的测量方法是让这些数据更加紧密地分散到真实值周围。否则距离越大,准确性就越差。这就是所谓的Dispersion(离散度)

最常见的离散度量化方式就是range(极差),即计算最大值与最小值的差值。然而对于一组数据而言,仅仅依靠两个值来评判数据的离散度,显然是极不准确的。我们可以想象这些数据其实是在二维平面上的各个点。那么平均数就是介于这些点之间的其中一个点,它与大多数点之间的连线距离相对均匀。因此,一个直观的测量方法是计算各个数据与平均值之间的差。将这些差值累加起来(称之为“deviation from mean,离均差”),就可以反映一个较为准确的离散程度。该值越大,说明离散度越大,分布的区间也越大。然而,这些数据可能大于平均值,也可能小于平均值,导致差值有正有负。对于一些分布极为离散的数据,在特殊情况下,甚至可能得到的离均差为0,或者接近于0,导致非常糟糕的误差。

要避免这种正负相加的问题,可以对差值求平方(另一种办法是求绝对值)。这就是variance的基本思路。但是平方值实际上扩大了数据与平均值的差值,为保证测量的准确性,就需要对variance求一次平方根来压缩这种差值,于是就获得了standard deviation(标准差)。在统计分析中,如果需要计算两组或多组数据之间的相关度(correlation),就会使用到标准差。

即使是统计学最初阶的知识都实在是瀚如烟海,还有一些基础概念不得不知,暂且记下,留待之后再讲。若还想知道一些概率知识,可以顺道访问:贝叶斯定理证明:直觉未必正确,了解一下什么是贝叶斯定理。

原文发布于微信公众号 - 逸言(YiYan_OneWord)

原文发表时间:2015-09-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏AI科技大本营的专栏

全球股市巨震,如何用深度学习预测股价?

这两天全球股市都可谓血雨腥风! 这个时候,营长照例会点燃一根烟,看着满屏高高低低的K线,心中又出现了那个历史之问:这时候是该卖出手中持仓?还是用剩余资金抄底?...

3985
来自专栏机器学习算法与Python学习

深度学习(deep learning)发展史

源 | 小象 本文节选自人民邮电出版社最新出版的 AI 圣经《深度学习DEEP LEARNING[1]》。《深度学习DEEP LEARNING[2]》英文版由美...

3688
来自专栏AI2ML人工智能to机器学习

易图秒懂の机器学习诞生 发展篇

首先, 需要默哀下下, 模糊逻辑的大佬, 著名数学家、伯克利教授扎德Lotfi Aliasker Zadeh在两天前去世了, 默哀! 这位来自阿塞拜疆的大牛, ...

1012
来自专栏云时之间

NLP入门之语言模型以及n元文法

各位小伙伴们大家好,在接下来的文章中我们将讲述一下什么是语言模型,以及语言模型上的应用,在完善之后我们将会简单的讲解一下语言模型的性能评估,这三点将是这一篇文章...

3369
来自专栏程序员的碎碎念

浅谈神经机器翻译

由于人类语言的流动性, 自动翻译或者机器翻译可能是最具挑战性的人工智能任务之一.20世纪90年代, 统计方法被用于完成这项任务, 取代了此前传统上的基于语法规则...

8275
来自专栏SIGAI学习与实践平台

理解计算:从√2到AlphaGo ——第1季 从√2谈起

计算的概念看似简单却又十分宽泛,它实际上是计算机学科永远不变的核心内容,就算现在所谓的人工智能,在我看来也不过是一种计算或计算结果的应用。本文将从简单的例子出发...

1003
来自专栏机器之心

EMNLP 2018 | 用强化学习做神经机器翻译:中山大学&MSRA填补多项空白

作者:Lijun Wu、Fei Tian、Tao Qin、Jianhuang Lai、Tie-Yan Liu

1451
来自专栏量子位

训练AI太辛苦?OpenAI新方法:不如让AI之间互教吧

训练一个AI,往往需要喂大量的正确的合适的样例。 用什么样例合适?判断样例正确的标准是啥?又要多少人力来标注训练的数据? 这些问题想想都头大@_@ 所以呢,Op...

3335
来自专栏机器人网

学习人工智能需要哪些必备的数学基础?

当下,人工智能成了新时代的必修课,其重要性已无需赘述,但作为一个跨学科产物,它包含的内容浩如烟海,各种复杂的模型和算法更是让人望而生畏。对于大多数的新手来说,如...

3589
来自专栏数据科学与人工智能

【知识】人工智能数学基础知识

数学是打开科学大门的钥匙。——培根 数学基础知识蕴含着处理智能问题的基本思想与方法,也是理解复杂算法的必备要素。今天的种种人工智能技术归根到底都建立在数学模型之...

2657

扫码关注云+社区