进行数据分析、数据挖掘/机器学习都需要掌握统计学基本知识,这是为什么呢?
首先一个主要的原因就是因为统计学就是关于数据分析的科学,涉及数据分析的操作,都会以统计为基础。今天我们就来细说一下哪些统计操作在数据分析、机器学习中最常用。
首先先来说一下概率分布。
概率分布是统计学中描述性统计分析的基本工具。分布反应了总体中每个个体取值的频繁程度,简单一点来说就是哪些值出现得多,哪些值出现得少。反映到业务上,就是哪些业务更容易发生,哪些业务不容易发生。
现在我们来看泰坦尼克号数据集中票价的分布情况
从图上可以看出,票价主要分布在50元以下的区域,而50元以上的乘客少之又少。
那么分布和机器学习/数据挖掘又有何联系呢?
机器学习/数据挖掘是基于样本数据的建模操作,所建立的模型反应了蕴含在数据集合中的规律或模式。这种模型实质上是一种复杂的数学模型,机器学习/数据挖掘的任务就是通过某种算法,利用样本数据建立这个模型。
如果我们把这种模型表示为y=f(X), X和y是我们的样本数据。那么这个f就是机器学习/数据挖掘所得到的模型。
建立X到y的高质量映射模型f的过程是很复杂的,我们需要用到不同的算法,比如回归、分类、神经网等等,无论使用哪种算法,为了降低模型的数据y’与真实的y之间的误差,我们需要保证X自变量数据集合和y因变量集合尽可能符合正态分布,也就是偏离值尽量少出现,而正常值出现的情况比较均匀,用这样的数据集拟合函数时各种情况会考虑到,函数的泛化能力就比较高。这如同我们日常备考做练习题。训练模型就如同训练学生,要想考出好成绩,就要多做考试大纲以内的题,少做偏题、难题和分值特别低的题(相当于样本中的偏离值),这样学生遇到大多数题差不多都能解决,而万一出现偏题、难题和分值特别低的题,也有一定能力应对。
是的,你没有看错!机器学习要想得到高质量模型,就要使样本数据保持正态分布。而现实往往不如人意,绝大多数情况往往不符合正态分布,而是偏态分布。如下图
左图为负偏态(样本数据取大值得较多 ),右图为正偏态(样本取小值的较多)
如果样本的偏度比较大,就会造成模型偏差或方差过大,影响模型的精确水平和泛化能力,降低模型质量。(样本偏度的检验有很多方法,参见基础课程的相关章节)
如果我们通过数据分布发现样本数据存在较为明显的偏态分布,就需要对数据进行处理,使之正态化。
偏态数据的正态化常用方法有两种,对于因变量y而言,可以采用对数化方法,即y=log(y)
如果偏度很大,则对数函数的底数就大一些,过大容易调整过头,产生相反的偏态,一般来说取自然对数即可(Numpy.log1p())函数;对于自变量集合X分布偏态的属性/字段,则使用box-cox()函数进行正态化(scipy.special.boxcox1p函数)。我们对泰坦尼克号票价数据进行对数正态化,结果如下
经过处理后,票价数据就接近正态分布了。使用boxcox方法,效果也相似
当然对于分布比较复杂的情况,需要其他的一些 方法,如倒数法、平方根法、指数函数法和三角函数法。