常用数据科学方法
【未经允许,不得转载】
——沂水寒城
一、数据缺失值处理
对于数据挖掘和分析人员来说,数据准备(Data Preparation,包括数据的抽取、清洗、转换和集成)常常占据了70%左右的工作量。而在数据准备的过程中,数据质量差又是最常见而且令人头痛的问题,诸如数据缺失值、特殊值等问题,都需要专门的处理方法才行,本文档整理了常用的序列数据的处理方法,为数据挖掘、机器学习等工作提供数据处理基础。
我们所说的缺失值,不仅包括数据库中的NULL值,也包括用于表示数值缺失的特殊数值(比如,在系统中用-999来表示数值不存在)。如果我们仅有数据库的数据模型,而缺乏相关说明,常常需要花费更多的精力来发现这些数值的特殊含义。而如果我们漠视这些数值的特殊性,直接拿来进行挖掘,那么很可能会得到错误的结论。
还有一种数值缺失的情况,是因为我们要求统计的时间窗口并非对所有数据都适合。例如,我们希望计算出“客户在以前六个月内的最大存款余额”,对于那些建立账户尚不满六个月的客户来说,统计出来的数值与我们想要得到的就可能存在差距。
一般来说,对缺失值的填充方法有多种,用某个常数来填充常常不是一个好方法。最好建立一些模型,根据数据的分布来填充一个更恰当的数值。(例如根据其它变量对记录进行数据分箱,然后选择该记录所在分箱的相应变量的均值或中位数,来填充缺失值,效果会更好一些)
数据缺失的原因
在各种使用的数据库中,属性值缺失的情况经常发全甚至是不可避免的。因此,在大多数情况下,信息系统是不完备的,或者说存在某种程度的不完备。
缺失值的产生的原因多种多样,主要分为机械原因和人为原因。机械原因是由于机械原因导致的数据收集或保存的失败造成的数据缺失,比如数据存储的失败,存储器损坏,机械故障导致某段时间数据未能收集(对于定时数据采集而言)。人为原因是由于人的主观失误、历史局限或有意隐瞒造成的数据缺失,比如,在市场调查中被访人拒绝透露相关问题的答案,或者回答的问题是无效的,数据录入人员失误漏录了数据
造成数据缺失的原因是多方面的,主要可能有以下几种:
1)有些信息暂时无法获取。例如在医疗数据库中,并非所有病人的所有临床检验结果都能在给定的时间内得到,就致使一部分属性值空缺出来。又如在申请表数据中,对某些问题的反映依赖于对其他问题的回答。
2)有些信息是被遗漏的。可能是因为输入时认为不重要、忘记填写了或对数据理解错误而遗漏,也可能是由于数据采集设备的故障、存储介质的故障、传输媒体的故障、一些人为因素等原因而丢失了。
3)有些对象的某个或某些属性是不可用的。也就是说,对于这个对象来说,该属性值是不存在的,如一个未婚者的配偶姓名、一个儿童的固定收入状况等。
4)有些信息(被认为)是不重要的。如一个属性的取值与给定语境是无关的,或训练数据库的设计者并不在乎某个属性的取值(称为dont-care value)。
5)获取这些信息的代价太大。
6)系统实时性能要求较高,即要求得到这些信息前迅速做出判断或决策。
数据缺失机制
在对缺失数据进行处理前,了解数据缺失的机制和形式是十分必要的。将数据集中不含缺失值的变量(属性)称为完全变量,数据集中含有缺失值的变量称为不完全变量,Little 和 Rubin定义了以下三种不同的数据缺失机制:
1)完全随机缺失(Missing Completely at Random,MCAR)。数据的缺失与不完全变量以及完全变量都是无关的。
2)随机缺失(Missing at Random,MAR)。数据的缺失仅仅依赖于完全变量。
3)非随机、不可忽略缺失(Not Missing at Random,NMAR,or nonignorable)。不完全变量中数据的缺失依赖于不完全变量本身,这种缺失是不可忽略的。
从缺失值的所属属性上讲,如果所有的缺失值都是同一属性,那么这种缺失成为单值缺失,如果缺失值属于不同的属性,称为任意缺失。另外对于时间序列类的数据,可能存在随着时间的缺失,这种缺失称为单调缺失。
空值语义
对于某个对象的属性值未知的情况,我们称它在该属性的取值为空值(null value)。空值的来源有许多种,因此现实世界中的空值语义也比较复杂。总的说来,可以把空值分成以下三类:
1)不存在型空值。即无法填入的值,或称对象在该属性上无法取值,如一个未婚者的配偶姓名等。
2)存在型空值。即对象在该属性上取值是存在的,但暂时无法知道。一旦对象在该属性上的实际值被确知以后,人们就可以用相应的实际值来取代原来的空值,使信息趋于完全。存在型空值是不确定性的一种表征,该类空值的实际值在当前是未知的。但它有确定性的一面,诸如它的实际值确实存在,总是落在一个人们可以确定的区间内。一般情况下,空值是指存在型空值。
3)占位型空值。即无法确定是不存在型空值还是存在型空值,这要随着时间的推移才能够清楚,是最不确定的一类。这种空值除填充空位外,并不代表任何其他信息。
空值处理的重要性和复杂性
数据缺失在许多研究领域都是一个复杂的问题。对数据挖掘来说,空值的存在,造成了以下影响:
第一,系统丢失了大量的有用信息;
第二,系统中所表现出的不确定性更加显著,系统中蕴涵的确定性成分更难把握;
第三,包含空值的数据会使挖掘过程陷入混乱,导致不可靠的输出。
数据挖掘算法本身更致力于避免数据过分适合所建的模型,这一特性使得它难以通过自身的算法去很好地处理不完整数据。因此,空缺的数据需要通过专门的方法进行推导、填充等,以减少数据挖掘算法与实际应用之间的差距。
常用缺失值处理方法的分析比较
处理不完备数据集的方法主要有以下三大类:
(一)删除元组
也就是将存在遗漏信息属性值的对象(元组,记录)删除,从而得到一个完备的信息表。这种方法简单易行,在对象有多个属性缺失值、被删除的含缺失值的对象与信息表中的数据量相比非常小的情况下是非常有效的,类标号(假设是分类任务)缺少时通常使用。然而,这种方法却有很大的局限性。它是以减少历史数据来换取信息的完备,会造成资源的大量浪费,丢弃了大量隐藏在这些对象中的信息。在信息表中本来包含的对象很少的情况下,删除少量对象就足以严重影响到信息表信息的客观性和结果的正确性;当每个属性空值的百分比变化很大时,它的性能非常差。因此,当遗漏数据所占比例较大,特别当遗漏数据非随机分布时,这种方法可能导致数据发生偏离,从而引出错误的结论。
(二)数据补齐
这类方法是用一定的值去填充空值,从而使信息表完备化。通常基于统计学原理,根据决策表中其余对象取值的分布情况来对一个空值进行填充,譬如用其余属性的平均值来进行补充等。
数据挖掘中常用的有以下几种补齐方法:
(1)人工填写(filling manually)
由于最了解数据的还是用户自己,因此这个方法产生数据偏离最小,可能是填充效果最好的一种。然而一般来说,该方法很费时,当数据规模很大、空值很多的时候,该方法是不可行的。
(2)特殊值填充(Treating Missing Attribute values as Special values)
将空值作为一种特殊的属性值来处理,它不同于其他的任何属性值。如所有的空值都用“unknown”填充。这样将形成另一个有趣的概念,可能导致严重的数据偏离,一般不推荐使用。
(3)平均值填充(Mean/Mode Completer)
将信息表中的属性分为数值属性和非数值属性来分别进行处理。如果空值是数值型的,就根据该属性在其他所有对象的取值的平均值来填充该缺失的属性值;如果空值是非数值型的,就根据统计学中的众数原理,用该属性在其他所有对象的取值次数最多的值(即出现频率最高的值)来补齐该缺失的属性值。另外有一种与其相似的方法叫条件平均值填充法(Conditional Mean Completer)。在该方法中,缺失属性值的补齐同样是靠该属性在其他对象中的取值求平均得到,但不同的是用于求平均的值并不是从信息表所有对象中取,而是从与该对象具有相同决策属性值的对象中取得。这两种数据的补齐方法,其基本的出发点都是一样的,以最大概率可能的取值来补充缺失的属性值,只是在具体方法上有一点不同。与其他方法相比,它是用现存数据的多数信息来推测缺失值。
(4)热卡填充(Hot deck imputation,或就近补齐)
对于一个包含空值的对象,热卡填充法在完整数据中找到一个与它最相似的对象,然后用这个相似对象的值来进行填充。不同的问题可能会选用不同的标准来对相似进行判定。该方法概念上很简单,且利用了数据间的关系来进行空值估计。这个方法的缺点在于难以定义相似标准,主观因素较多。
(5)K最近距离邻法(K-means clustering)
先根据欧式距离或相关分析来确定距离具有缺失数据样本最近的K个样本,将这K个值加权平均来估计该样本的缺失数据。同均值插补的方法都属于单值插补,不同的是,它用层次聚类模型预测缺失变量的类型,再以该类型的均值插补。假设X=(X1,X2…Xp)为信息完全的变量,Y为存在缺失值的变量,那么首先对X或其子集行聚类,然后按缺失个案所属类来插补不同类的均值。如果在以后统计分析中还需以引入的解释变量和Y做分析,那么这种插补方法将在模型中引入自相关,给分析造成障碍。
(6)使用所有可能的值填充(Assigning All Possible values of the Attribute)
这种方法是用空缺属性值的所有可能的属性取值来填充,能够得到较好的补齐效果。但是,当数据量很大或者遗漏的属性值较多时,其计算的代价很大,可能的测试方案很多。另有一种方法,填补遗漏属性值的原则是一样的,不同的只是从决策相同的对象中尝试所有的属性值的可能情况,而不是根据信息表中所有对象进行尝试,这样能够在一定程度上减小原方法的代价。
(7)组合完整化方法(Combinatorial Completer)
这种方法是用空缺属性值的所有可能的属性取值来试,并从最终属性的约简结果中选择最好的一个作为填补的属性值。这是以约简为目的的数据补齐方法,能够得到好的约简结果;但是,当数据量很大或者遗漏的属性值较多时,其计算的代价很大。另一种称为条件组合完整化方法(Conditional Combinatorial Complete),填补遗漏属性值的原则是一样的,不同的只是从决策相同的对象中尝试所有的属性值的可能情况,而不是根据信息表中所有对象进行尝试。条件组合完整化方法能够在一定程度上减小组合完整化方法的代价。在信息表包含不完整数据较多的情况下,可能的测试方案将巨增。
(8)回归(Regression)
基于完整的数据集,建立回归方程(模型)。对于包含空值的对象,将已知属性值代入方程来估计未知属性值,以此估计值来进行填充。当变量不是线性相关或预测变量高度相关时会导致有偏差的估计。
(9)期望值最大化方法(Expectation maximization,EM)
在缺失类型为随机缺失的条件下,假设模型对于完整的样本是正确的,那么通过观测数据的边际分布可以对未知参数进行极大似然估计(Little and Rubin)。这种方法也被称为忽略缺失值的极大似然估计,对于极大似然的参数估计实际中常采用的计算方法是期望值最大化(Expectation Maximization,EM)。该方法比删除个案和单值插补更有吸引力,它一个重要前提:适用于大样本。有效样本的数量足够以保证ML估计值是渐近无偏的并服从正态分布。但是这种方法可能会陷入局部极值,收敛速度也不是很快,并且计算很复杂。
EM算法是一种在不完全数据情况下计算极大似然估计或者后验分布的迭代算法。在每一迭代循环过程中交替执行两个步骤:E步(Excepctaion step,期望步),在给定完全数据和前一次迭代所得到的参数估计的情况下计算完全数据对应的对数似然函数的条件期望;M步(Maximzation step,极大化步),用极大化对数似然函数以确定参数的值,并用于下步的迭代。算法在E步和M步之间不断迭代直至收敛,即两次迭代之间的参数变化小于一个预先给定的阈值时结束。该方法可能会陷入局部极值,收敛速度也不是很快,并且计算很复杂。
(10)多重填补(Multiple Imputation,MI)
多值插补的思想来源于贝叶斯估计,认为待插补的值是随机的,它的值来自于已观测到的值。具体实践上通常是估计出待插补的值,然后再加上不同的噪声,形成多组可选插补值。根据某种选择依据,选取最合适的插补值。
多重填补方法分为三个步骤:;为每个空值产生一套可能的填补值,这些值反映了无响应模型的不确定性;每个值都被用来填补数据集中的缺失值,产生若干个完整数据集合。;每个填补数据集合都用针对完整数据集的统计方法进行统计分析。;对来自各个填补数据集的结果进行综合,产生最终的统计推断,这一推断考虑到了由于数据填补而产生的不确定性。该方法将空缺值视为随机样本,这样计算出来的统计推断可能受到空缺值的不确定性的影响。该方法的计算也很复杂。
多重插补方法分为三个步骤:①为每个空值产生一套可能的插补值,这些值反映了无响应模型的不确定性;每个值都可以被用来插补数据集中的缺失值,产生若干个完整数据集合。②每个插补数据集合都用针对完整数据集的统计方法进行统计分析。③对来自各个插补数据集的结果,根据评分函数进行选择,产生最终的插补值。
假设一组数据,包括三个变量Y1,Y2,Y3,它们的联合分布为正态分布,将这组数据处理成三组,A组保持原始数据,B组仅缺失Y3,C组缺失Y1和Y2。在多值插补时,对A组将不进行任何处理,对B组产生Y3的一组估计值(作Y3关于Y1,Y2的回归),对C组作产生Y1和Y2的一组成对估计值(作Y1,Y2关于Y3的回归)。
当用多值插补时,对A组将不进行处理,对B、C组将完整的样本随机抽取形成为m组(m为可选择的m组插补值),每组个案数只要能够有效估计参数就可以了。对存在缺失值的属性的分布作出估计,然后基于这m组观测值,对于这m组样本分别产生关于参数的m组估计值,给出相应的预测即,这时采用的估计方法为极大似然法,在计算机中具体的实现算法为期望最大化法(EM)。对B组估计出一组Y3的值,对C将利用 Y1,Y2,Y3它们的联合分布为正态分布这一前提,估计出一组(Y1,Y2)。
上例中假定了Y1,Y2,Y3的联合分布为正态分布。这个假设是人为的,但是已经通过验证(Graham和Schafer于1999),非正态联合分布的变量,在这个假定下仍然可以估计到很接近真实值的结果。
多重插补和贝叶斯估计的思想是一致的,但是多重插补弥补了贝叶斯估计的几个不足:
(1)贝叶斯估计以极大似然的方法估计,极大似然的方法要求模型的形式必须准确,如果参数形式不正确,将得到错误得结论,即先验分布将影响后验分布的准确性。而多重插补所依据的是大样本渐近完整的数据的理论,在数据挖掘中的数据量都很大,先验分布将极小的影响结果,所以先验分布的对结果的影响不大。
(2)贝叶斯估计仅要求知道未知参数的先验分布,没有利用与参数的关系。而多重插补对参数的联合分布作出了估计,利用了参数间的相互关系。
(11) C4.5方法
通过寻找属性间的关系来对遗失值填充。它寻找之间具有最大相关性的两个属性,其中没有遗失值的一个称为代理属性,另一个称为原始属性,用代理属性决定原始属性中的遗失值。这种基于规则归纳的方法只能处理基数较小的名词型属性。
(三)不处理
补齐处理只是将未知值补以我们的主观估计值,不一定完全符合客观事实,在对不完备信息进行补齐处理的同时,我们或多或少地改变了原始的信息系统。而且,对空值不正确的填充往往将新的噪声引入数据中,使挖掘任务产生错误的结果。因此,在许多情况下,我们还是希望在保持原始信息不发生变化的前提下对信息系统进行处理。这就是第三种方法:
直接在包含空值的数据上进行数据挖掘。这类方法包括贝叶斯网络和人工神经网络等。
贝叶斯网络是用来表示变量间连接概率的图形模式,它提供了一种自然的表示因果信息的方法,用来发现数据间的潜在关系。在这个网络中,用节点表示变量,有向边表示变量间的依赖关系。贝叶斯网络仅适合于对领域知识具有一定了解的情况,至少对变量间的依赖关系较清楚的情况。否则直接从数据中学习贝叶斯网的结构不但复杂性较高(随着变量的增加,指数级增加),网络维护代价昂贵,而且它的估计参数较多,为系统带来了高方差,影响了它的预测精度。当在任何一个对象中的缺失值数量很大时,存在指数爆炸的危险。
人工神经网络可以有效的对付空值,但人工神经网络在这方面的研究还有待进一步深入展开。人工神经网络方法在数据挖掘应用中的局限性
缺失值填充方法总结分析:
就几种基于统计的方法而言,删除元组法和平均值法差于hot deck、EM和MI;回归是比较好的一种方法,但仍比不上hot deck和EM;EM缺少MI包含的不确定成分。值得注意的是,这些方法直接处理的是模型参数的估计而不是空缺值预测本身。它们合适于处理无监督学习的问题,而对有监督学习来说,情况就不尽相同了。譬如,你可以删除包含空值的对象用完整的数据集来进行训练,但预测时你却不能忽略包含空值的对象。另外,C4.5和使用所有可能的值填充方法也有较好的补齐效果,人工填写和特殊值填充则是一般不推荐使用的。
大多数数据挖掘系统都是在数据挖掘之前的数据预处理阶段采用第一、第二类方法来对空缺数据进行处理。并不存在一种处理空值的方法可以适合于任何问题。无论哪种方式填充,都无法避免主观因素对原系统的影响,并且在空值过多的情形下将系统完备化是不可行的。从理论上来说,贝叶斯考虑了一切,但是只有当数据集较小或满足某些条件(如多元正态分布)时完全贝叶斯分析才是可行的。而现阶段人工神经网络方法在数据挖掘中的应用仍很有限。值得一提的是,采用不精确信息处理数据的不完备性已得到了广泛的研究。不完备数据的表达方法所依据的理论主要有可信度理论、概率论、模糊集合论、可能性理论,D-S的证据理论等。
二:数据平滑处理
在实际应用中,由于数据质量参差不齐对于数据挖掘工作的影响不能够忽略不计,往往70%-80%左右的时间都需要花在数据准备的阶段里面,上面的部分简单介绍和总结了一下常用的缺失值处理方法,这部分介绍一下常用的数据平滑处理方法。
数据平滑最根本的目的就是:降低高概率,提高低概率。
常用的数据平滑处理方法包括:拉普拉斯数据平滑(Laplace Smoothing)、古德-图灵(Good-Turing)平滑和简单移动平均平滑。
(一)拉普拉斯数据平滑
拉普拉斯平滑(Laplace Smoothing)又被称为加 1 平滑,是比较常用的平滑方法。平滑方法的存在时为了解决零概率问题。所谓零概率问题,就是在计算新实例的概率时,如果某个分量在训练集中从没出现过,会导致整个实例的概率计算结果为0,。针对文本分类问题就是当一个词语在训练集中没有出现过,那么该词语的概率就为0,使用连乘法计算文本出现的概率时,整个文本出现的概率也为0,这显然是不合理的,因为不能因为一个事件没有观测到就判断该事件的概率为0.
拉普拉斯计算方法总结:分子加1,分母加K,K代表类别数目
(二)古德-图灵(Good-Turing)平滑
在统计语言模型章节中,我们谈到了N元语法模型不可避免的一个问题,就是数据稀疏,其原因是大规模语料统计与有限语料的矛盾。根据齐普夫(Zipf)法则,我们能够推测知零概率问题不可避免。数据稀疏问题的解决办法就是进行平滑处理。平滑处理的算法有很多,本文将介绍众多算法中的佼佼者:古德-图灵(Good-Turing)平滑算法。
古德-图灵(Good-Turing)估计法是很多平滑技术的核心,于1953年有古德(I.J.Good)引用图灵(Turing)的方法而提出来的。其基本思想是:利用频率的类别信息来平滑频率。对于任何发生r次数的n元语法,都假设它发生了r*次。
其中,nr是训练语料中正好发生r次的N元组的个数。也就是说,发生r次的N元组的调整由发生r次的N元组与发生r+1次的N元组两个类别共同决定。统计数为r*次的N元组,其概率为:
我们注意到: 也就是说,N等于这个分布中最初的统计。那样,样本中所有事件的概率之和为
因此,可以这样说我们把你n1/N的概率剩量分配给未见事件。为了更好地理解古德-图灵(Good-Turing)估计法,以一个例子来讲解。
训练集合:T={<s>what is it what is small?}|T|=8
验证集合:V={what is it small ? <s> flying birds are a bird.}, |V|=12
在训练集合上,我们得到:p(<s>)=p(it)=p(small)=p(?)=0.125, p(what)=p(is)=0.25,其他为0
如果不经过平滑处理,则验证集上两句子的概率分别为:p(what is it?)=(0.25*2)*(0.125*2)≈0.001 p(it is flying.)=0.125*0.25*(0*2)=0
现在用古德-图灵算法进行平滑处理,如下:
首先计算,各发生r次N元组类别的数目,依次为 N(0)=6,N(1)=4,N(2)=2,N(i)=0 ,i>2:
其次,重新估计各概率值。
对于发生0次的事件概率:Pr(.)=p(flying)=p(birds)=p(are)=p(bird)=p(a)= (0+1)*N(0+1)/(8*N(0))=1*4/(8*6)≈0.083
对于发生1次的时间概率:Pr(it)=p(<s>)=p(small)=p(?)=(1+1)*N(1+1)/(8*N(1))=2*2 /(8*4)=0.125
对于发生两次的时间概率:Pr(what)=Pr(is)=(2+1)*N(2+1)/(8*N(2))=3*0/(8*2)=0: 保持原值0.25
归一化处理,6*P0+4*P1+2*P2=1.5。.
所以,归一化处理后,p’(it)=p’(<s>)=p’ (small)=p’(?)= 0.125/1.5 ≈0.08, p’(what)=p’(is)= 0.25/1.5 ≈0.17,
p’(.)=p’(birds)=p’(are)=p’(bird)=p’(a) = 0.083/1.5 ≈0.06
因此:p’(what is it?)=(0175*2)*(0.08*2)≈0.0002 p’(it is flying.) ≈ 0.08*0.17*(0.06*2)≈0.00004
(三)简单移动平均平滑
简单移动平均平滑是计算与等权重的指示函数的卷积,也可以不等权重.
数据平滑示意图如下图所示:
其中,蓝线是原始的数据曲线,绿线是经过数据平滑处理后的曲线。
1.用ones函数创建一个元素均为1的数组,然后对整个数组除以N,得到等权重.
2.使用权值,调用convolve函数.
3.从convolve函数分安徽的数组中取出中间的长度为N的部分(即两者作卷积运算时完全重叠的区域.)
4.使用matplotlib绘图
二:常见概率分布
概率基础是机器学习、深度学习等众多智能领域的核心基础,了解常用的一些概率分布对于了解模型内在的工作机理是很有帮助的。
(一)长尾效应
长尾分布,或者说长尾理论是一个与互联网发展分不开的概念。说到这里就不得不先提一下传统商业中的帕累托法则(Pareto principle),又称为二八定律。比如80%的财富集中在20%的人手里,图书馆里20%的书可以满足80%的顾客。于是大家往往只关注在PDF图中最左面的20%的顾客,以期满足80%,如下图绿色的部分,来实现效益的最大化。
根据维基百科,长尾(The Long Tail)这一概念是由“连线”杂志主编克里斯·安德森(Chris Anderson)在2004年十月的“长尾” 一文中最早提出,用来描述诸如亚马逊和Netflix之类网站的商业和经济模式。“长尾”实际上是统计学中幂律(Power Laws)和帕累托分布(Pareto)特征的一个口语化表达。简单的长尾分布如下图所示:
举例说明:卖一辆大众汽车利润只有几万元,卖一辆兰博基尼利润则达到几十万,翻了几十倍!然而买大众汽车的人却比买兰博基尼的人多百倍、千倍!这样一来,大众的成功便不难解释了。
Google和阿里巴巴的成功,也在于他们找到了一条长尾,把许许多多的小市场拼合在一起,成就了一个大市场。阿里巴巴从那些不被其他商家关注的中小企业、小微企业入手,把网下的贸易搬到了网上,以较低的门槛吸引他们在网上展开贸易,而这些处于长尾的小微企业,也通过阿里巴巴找到了更多的机会和财富,这些长长的尾巴聚集起来,也就铸造了阿里巴巴的成功,铺就了马云的财富金路。
产品的“二八”市场呈现“长尾”分布,二者对比如下:
长尾理论是蓝海战略的延续,长尾理论的基本原理是聚沙成塔,创造市场规模。 长尾价值重构目的是满足个性需求,通过创意和网络,提供一些更具价值内容,更个性化的东西,二者对比如下:
(二)肥尾分布(Fat-tailed distribution)
从建模的角度来看,肥尾分布就是针对那些罕见事件虽然发生的概率低,但也必须要考虑到的情况。比如一个保险公司考虑灾害的发生和保险的定价,那么像自然灾害这种情况,如果不考虑的话就可能面临真的发生时要赔很多的情况。因为正如肥尾分布的名字所体现的,即使在远离峰值的远端,那些罕见事件还是有相当的概率会发生的。虽然我们常常用正态分布对很多时间进行建模,但当一个事件的本质是肥尾分布而我们误用了正态分布或指数分布时,就存在着对“小概率事件真的发生”这种危险的低估。据说美国股市历史上的黑色星期五,千禧年的互联网泡沫破灭,以及2008年前后的金融危机都是这种错误的真实案例(来源:Wikipedia, Fat-tailed distribution)。
肥尾分布的数学定义为:
limx→∞Pr[X>x]∼x−α,α>0
也就是说,在 x较大的地方,肥尾分布趋于0的速度是明显慢于指数分布和正态分布的。柯西分布(Cauchy distribution)就是一类有名的肥尾分布。关于柯西分布,有几个有趣的性质,首先它是稳定的(stable),也有着显式的PDF和CDF,但是它的均值和方差确是无法定义的(undefined)。于是中心极限定理在这里就不适用了。如果试着做一下仿真,我们也可以发现,随着实验次数的增大,样本的均值并不会逐渐收敛到某个值上,而出现这种情况的原因就是时不时出现的“异常大值”会明显改变样本的均值。
(三)重尾分布(Heavy-tailed distribution)
指数分布在 x→∞的时候是以指数的速度趋近于0,那么以指数分布为分界线,我们把 x→∞时下降速度更快的称为 Thin-tailed distribution,比如正态分布。也就是说,在远离峰值的尾部区域,时间发生的概率更低一些。所以正态分布用来对那些主流事件发生较多,非主流事件发生较少的情况进行建模更为合适。与此相对的,把 x→∞时下降速度慢于指数分布的成为重尾分布(Heavy-tailed distribution)。其数学定义为:
limx→∞eλxF¯(x)=∞,for all λ>0
其中,F¯(x)≡Pr(X>x)F¯(x)≡Pr(X>x) 是所谓的尾分布函数。
重尾分布更适用于对那些离峰值较远的稀有事件也会有相当的概率发生的情况。重尾分布作为一个大的类别,还包含三个重要的子类别,分别是肥尾分布(Fat-tailed distribution),长尾分布(Long-tailed distribution)和次指数分布(Subexponential distribution)。
(四)随机游走(Random walk)
所谓随机游走,是统计学中一个很广泛的概念,包含了很多内容。我没能找到一个统一的数学模型来描述随机游走,但大意就是在任意维度的空间里,一个点随机地向任意方向前进随机长度的距离,然后重复这一步骤的过程。有一个有名的醉汉回家问题就是一个典型的一维随机游走的问题。
Lévy flight 是随即游走的一种,它的每一步方向完全随机而各向同性,但步长的分布是重尾分布(heavy-tailed)。Brownian motion(好像)也算是随即游走的一种,它的步长的分布取正态分布。下面两张图来自Wikipedia,分别描述了1000次的基于柯西分布的 Lévy flight (左)和基于正态分布的Brownian motion(右)。
从这张图上也可以比较明显地看出 Lévy flight 出现大跨步的频率确实要比 Brownian motion 要多一些。已经有相当多的研究表明很多动物的移动模式可以用 Lévy flight 来描述。而近些年通过对人类的移动数据(通话记录、出租车等)的挖掘,我们惊奇地发现人类的移动模式也和 Lévy flight 高度吻合。也就是说,虽然我们每个人急功近利地去追求自己的目标,但在宏观的尺度上,我们和山里的猴子没什么区别。
(五)连续型随机分布
统计学中连续型随机分布主要包括:正态分布、均匀分布、指数分布、对数正态分布、柯西分布、Gamma分布、瑞利分布和韦伯分布。
1)正态分布(Normal Distribution)
正态分布应该是实际使用中,接触最多,也是假设或者使用最多的一种连续型数据分布形态了,通常又称为高斯分布。
2)均匀分布(Uniform Distribution)
均匀分布应该是最简单的一种概率分布函数了,概率分布函数f(x)曲线如下图所示:
X落在(a,b)中任意等长度的子区间内的概率都是相同的,即它落在子区间的概率只依赖于子区间的长度,而与子区间的位置无关。
常见应用情形:
1、在数值计算中,由于四舍五入,小数点后某一位小数引入的误差;
2、公交线路上两辆公共汽车前后通过某汽车停车站的时间,即:乘客的候车时间。(等等)
3)指数分布(Exponential Distribution)
指数分布的使用也是很广泛的,在实际的应用中,往往采用指数分来来对时间特性进行描述。
常见应用情形:
主要用于描述独立事件发生的时间间隔。自然界中有很多“寿命”都可以用指数分布来进行描述。如:电子元件的寿命、动物的寿命、电话的童话时间、服务系统地服务时间等。
4)对数分布(Log Distribution)
如果一个随机变量的对数服从正态分布,那么就称该随机变量服从于对数正态分布。
常见应用情形:
金融保险业、投资收益计算等。
5)柯西分布(Cauchy Distribution)
柯西分布被称为是正态分布的孪生兄弟,它和正态分布的曲线是极为相似的也是很容易混淆的。
常见应用情形:
主要应用于物理学中,是描述受迫共振的微分方程的解。在光谱学中,它用来描述被共振或者其他机制加宽的谱线的形状。
6)Gamma分布
Gamma分布又称为伽马分布,多用于描述随机事件的发生时间间隔。
常见应用情形:
用于描述随机变量X等到第K件事发生所需等待的时间。
7)瑞利分布(Rayleigh Distribution)
当一个随二维向量的两个分量呈独立的、有着相同的方差的正态分布时,这个向量的模呈瑞利分布。
常见应用情形:
常用与描述平坦衰落信号接收包络或独立多径分量接受包络统计时变特性。如两个正交高斯噪声信号之和的包络服从瑞利分布。
8)韦伯分布(Weibull Distribution)
韦氏分布或者威布尔分布,是可靠性分析和寿命检验的理论基础。
常见应用情形:
可靠性和失效分析、极值理论。
(六)离散型随机分布
统计学中的常用离散型随机分布主要包括:二项分布、几何分布、超几何分布、泊松分布。
1)二项分布(Bernoulli Distribution)
2)负二项分布(Negative Bernoulli Distribution)
2)几何分布(Geometric Distribution)
3)超几何分布(Geometric Distribution)
4)泊松分布(Poisson Distribution)
(七)三大抽样分布
统计学中包含的三大抽样分布分别为:卡方分布、F分布和t分布。
1)卡方分布
2)F分布
2)t分布
分布之间的关系: