1.3 数据分析方法简介
1.1节讲到了数据分析的概念,在数据分析的三个方面中,最重要的一个方面就是方法,即数据分析方法。在某些特殊的时刻,选择不同的数据分析方法,会使数据分析得出意想不到的结果。数据分析方法根据使用的工具和理论的难度分成四个层次:单纯的数据加工方法;数理统计分析方法;数据挖掘方法和大数据分析方法。
1.3.1 单纯的数据加工方法
这种数据分析方法侧重于数据的加工和预处理,使用的工具一般是SQL和Excel,这是现在市场上大部分企业所使用的数据分析工具,有的公司干脆就仅使用Excel。该种方法一般是从企业的管理信息数据库系统或数据仓库中,对相关数据进行提取、加工、衍生处理和生成各种业务报表。在我们的经济生活中,经常看到关于同比发展速度、环比发展速度、今年比去年净增加了多少等新闻报道,这些统计数据计算起来比较简单,理论难度很低。这种方法最典型的代表就是描述性统计分析和相关分析。
1.描述性统计分析
描述性统计分析是通过图表或数学方法,对数据资料进行整理、分析,并对数据的分布状态、数字特征和随机变量之间的关系进行估计和描述的方法。通俗地讲,描述性统计就是当数据分析师需要分析一万个数时,他仅需要用八个数就把这一万个数说清楚了,这样进行决策管理时才不用再看一万个数,而只看这八个数就能解决问题。描述性数据分析的关键就是要看明白这八个数,能解释清楚其背后的含义。描述性统计分析分为集中趋势分析、离中趋势分析和数据分布分析三大部分。
集中趋势分析主要靠平均数、中数、众数等统计指标来表示数据的集中趋势,例如测试班级的平均成绩是多少。离中趋势分析主要靠全距、四分位距、方差、标准差等统计指标来研究数据的离中趋势。例如,当我们想知道两个教学班的语文成绩哪个班级的成绩分布更分散时,就可以用两个班级的方差来比较。数据分布分析是指和正态分布相比,所得数据的直方图从形态上看是左偏的还是右偏的,从峰度上看是尖峰的还是扁平的,这些内容会在第2章详细介绍。
2.相关分析
相关分析是研究现象之间是否存在某种依存关系,并对具体有依存关系的现象进行相关方向及相关程度的研究。这种关系既包括两个数据之间的单一相关关系一一例如年龄与个人领域空间之间的关系,也包括多个数据之间的多重相关关系一一例如年龄、抑郁症发生率和个人领域空间之间的关系;既可以是A大B就大(小),A小B就小(大)的直线相关关系,也可以是复杂相关关系;既可以是A、B变量同时增大的正相关关系,也可以是A变量增大时B变量减小的负相关关系,还包括两变量共同变化的紧密程度一一相关系数。
1.3.2 基于数理统计的数据分析方法
数理统计的理论基础比较复杂,也就是概率论和高等数学中的微积分。当然这里的微积分只是简单的一元函数积分,即根据概率论和微积分引出数据的分布,从数据的分布出发,进行数据的抽样推断和假设检验,由此引出方差分析、回归分析、因子分析等基于数理统计的数据分析方法。此种分析方法一般使用SPSS Statistics、SAS EG等分析工具就可以实现。
1.方差分析
方差分析(Analysis of Variance,ANOVA)又称“变异数分析”、“F检验”,它是R.A.Fisher发明的分析方法,用于两个及两个以上样本均数差别的显著性检验。由于受各种因素的影响,方差分析研究所得的数据呈现波动状。造成波动的因素可分成两类,一类是不可控的随机因素,另一类是研究中施加的对结果形成影响的可控因素。方差分析是从观测变量的方差入手,研究诸多控制变量中哪些变量是对观测变量有显著影响的变量。
2.回归分析
回归分析(Regression)是确定两个或两个以上变量之间相互依赖的定量关系的一种统计分析方法,它主要研究一个随机变量Y对另一个变量(X)或一组(X1,X2,…,Xk)变量的相依关系,回归分析按照涉及的自变量的数量,可分为一元回归分析和多元回归分析。按照自变量和因变量之间的关系类型,可分为线性回归分析和非线性回归分析。此处所讲的回归分析是指一元线性回归,区别于数据挖掘方法里的多元线性回归和逻辑斯蒂回归。
3.因子分析
因子分析(FactorAnalysis)是指研究从变量群中提取共性因子的统计技术。因子分析就是从大量的数据中寻找内在的联系,减轻决策困难的分析方法。因子分析的方法有十多种,例如重心法、影像分析法、最大似然解法、最小平方法、阿尔法抽因法、拉奥典型抽因法等。这些方法在本质上大都属于近似方法,是以相关系数矩阵为基础的,所不同的是相关系数矩阵对角线上的值,采用不同的共同性估值。在社会经济统计研究中,因子分析常以主成分分析为基础。
1.3.3 基于数据挖掘的数据分析方法
数据挖掘的理论渊源比较简单,一般认为来源于机器学习和人工智能,也没有统一、复杂的数学公式。各种不同的数据挖掘算法的数学模型都不一样,复杂程度也不太一样,但分析的基本思路一致。具体思路是根据历史数据得出某种规则,根据规则进行判断,例如分类。分类在日常生活中经常会遇到,例如某个商品该不该买,买和不买就是两类结果,这个时候需要由你的大脑做出判断。判断的前提条件是根据你的某种经验、商品的外观、别人的评价。你会根据这些历史数据,判断是否买这个商品,这就是一个典型的分类过程。得出规则的过程,就是所谓的数据挖掘算法。有些数据挖掘算法不需要数学公式,例如关联规则;而有些数据挖掘算法则需要比较复杂的公式,例如决策树中的C4.5算法。在学习这些数据挖掘算法时,将算法原理学明白就可以了,至于公式的计算过程,都是由常用的数据分析工具完成的。基于数据挖掘的数据分析工具有SPSS Modeler、SAS EM和R软件。
1.聚类分析
聚类分析(Cluster Analysis)指将物理或抽象对象的集合分组成为由类似的对象组成的多个类的分析过程。聚类是将数据分到不同的类或者簇的过程,所以同一个簇中的对象有很大的相似性,而不同簇之间的对象有很大的相异性。聚类分析是一种探索性的分析,在分类的过程中,人们不必事先给出一个分类的标准,聚类分析能够从样本数据出发,自动进行分类。由于聚类分析所使用的方法不同,常常会得到不同的结论。因此,不同的研究者对于同一组数据进行聚类分析,所得到的聚类数据未必一致。
2.分类分析
(1)决策树
决策树(Decision Tree)方法起源于概念学习系统CLS,然后发展到ID3方法而进入了研究的高潮,最后又演化为能处理连续属性的C4.5。有名的决策树算法还有CART和CHAID,这些算法的不同之处都是在生成决策树过程中,树干分支成多个枝叶时分枝规则的生成函数。决策树是应用最广的归纳推理算法之一,是一种逼近离散值目标函数的方法,对噪声数据有很好的健壮性且能学习析取表达式。决策树通过把实例从根节点排列到某个叶子节点来分类实例,叶子节点即为实例所属的分类。树上的每一个节点都说明了对实例的某个属性的测试,并且该节点的每一个后继分支对应于该属性的一个可能值。
决策树的优点:可以生成可理解的规则;计算量相对来说不是很大;可以处理连续和离散变量;决策树可以清晰地显示出哪些变量比较重要。
决策树的缺点:对连续性的变量比较难预测;当类别太多时,错误可能会增加得比较快;一般的算法在分类时,仅根据一个属性来进行分类;不是全局最优。
(2)人工神经网络
人工神经网络(ArtificialNeuralNetworks,ANNs)是一种应用类似于大脑神经突触连接的结构进行信息处理的数学模型,它是数据挖掘中机器学习的典型代表。人工神经网络是由人工建立的以有向图为拓扑结构的动态系统,它通过对连续或断续的输入做状态响应而进行信息处理。
简单地讲,“神经网络”就是通过输入多个非线性模型及不同模型之间的加权互联(加权的过程在隐蔽层完成),最终得到一个输出模型。其中,隐蔽层所包含的就是非线性函数。
目前最主流的“神经网络”算法是反馈传播(Backpropagation),该算法在多层前向型(Multilayer Feed-Forward)神经网络上进行学习,而多层前向型神经网络又是由一个输入层、一个或多个隐蔽层及一个输出层组成的,“神经网络”的典型结构如图1.2所示。
图1.2 “神经网络”典型结构
人工神经网络的特点:可以充分逼近任意复杂的非线性关系;所有定量或定性的信息都等势分布贮存于网络内的各神经元中,故有很强的鲁棒性和容错性;采用并行分布处理方法,使得快速进行大量运算成为可能;可学习和自适应不知道或不确定的系统;能够同时处理定量、定性知识。
(3)贝叶斯分类方法
贝叶斯分类(Bayesian Classification)方法是非常成熟的统计学分类方法,它主要用来预测类成员之间关系的可能性。例如通过一个给定观察值的相关属性来判断其属于一个特定类别的概率。贝叶斯分类方法是基于贝叶斯定理的,已经有研究表明,朴素贝叶斯分类方法作为一种简单的贝叶斯分类算法甚至可以跟决策树和神经网络算法相媲美。
(4)支持向量机
支持向量机(Support Vector Machine)是由Vapnik等人于1995年率先提出的,是机器学习研究的一个重大成果。与传统的神经网络技术相比,支持向量机不仅结构简单,而且各项技术的性能也明显提升了,因此它成为机器学习领域的热点之一。
作为一种新的分类方法,支持向量机以结构风险最小为原则。在线性的情况下,它在原空间寻找两类样本的最优分类超平面。在非线性的情况下,它使用一种非线性的映射,将原训练集数据映射到较高的维上。在新的维上,它搜索线性最佳分离超平面,使用一个适当的方法对足够高维的非线性映射,两类数据总可以被超平面分开。
(5)随机森林
随机森林(Random Forest,RF)是一种组合分类器,它利用Bootstrap重抽样方法从原始样本中抽取多个样本,对每个Bootstrap样本进行决策树建模,然后将这些决策树组合在一起,通过投票得出最终分类或预测的结果,如图1.3所示。
图1.3 “随机森林”算法示意图
大量的理论和实证研究都证明了随机森林算法具有较高的预测准确率,对异常值和噪声具有很好的容忍度,且不容易出现过拟合。
3.关联规则
关联规则(Association Rule)是在数据库和数据挖掘领域中被发明并被广泛研究的一种重要模型,关联规则数据挖掘的主要目的是找出数据集中的频繁模式(Frequent Pattern,即多次重复出现的模式)和并发关系(Cooccurrence Relationships,即同时出现的关系),频繁和并发关系也被称作关联(Association)。
应用关联规则最经典的案例就是购物篮分析(Basket Analysis),通过分析顾客购物篮中商品之间的关联,可以挖掘顾客的购物习惯,从而帮助零售商更好地制定有针对性的营销策略。
关联规则算法不但在数值型数据集的分析中有很大用途,而且在纯文本文档和网页文件中也有着重要的用途。例如发现单词之间的并发关系及Web的使用模式等,这些都是Web数据挖掘、搜索及推荐的基础。
4.回归分析
回归(Regression)分析包括线性回归(Linear Regression),这里主要是指多元线性回归和逻辑斯蒂回归(Logistic Regression)。其中,在数据化运营中更多使用的是逻辑斯蒂回归,它包括响应预测、分类划分等内容。
多元线性回归主要描述一个因变量如何随着一批自变量的变化而变化,其回归公式(回归方程)就是因变量与自变量关系的数据反映。因变量的变化包括两部分:系统性变化与随机变化,其中,系统性变化是由自变量引起的(自变量可以解释的),随机变化是不能由自变量解释的,通常也被称作残值。
在用来估算多元线性回归方程中自变量系数的方法中,最常用的是最小二乘法,即找出一组对应自变量的相应参数,以使因变量的实际观测值与回归方程的预测值之间的总方差减到最小。
1.3.4 基于大数据的数据分析方法
基于大数据的数据分析方法的理论基础是数据挖掘和分布式计算原理。大数据具有海量、快速、多样化和有价值四个方面的重要特征,其海量特性使得分析数据时不可能用单台机器完成,而是需要多台机器同时运算,也就是所谓的分布式计算。在大数据时代,以前一台机器可以存储的数据,现在一百台机器都存储不下,大数据技术要解决两个重要的现实问题:一是要解决海量数据在多台计算机上的存储;二是要解决如何对多台机器上存储的数据进行分析。大数据技术的基本原理还是聚类、分类、主题推荐等数据挖掘的内容,在基于大数据的数据分析方法中,有很多方法都是对原有数据挖掘算法的改造,将原来的单机计算改成多台机器同时计算。
简单地说,基于大数据的数据分析方法就是分析工具不一样的数据挖掘分析方法,有的也加入了数理统计的思想,它不能使用SPSS、SAS等单机数据分析工具来完成,其分析工具一般都需要具备分布式计算的能力。Hadoop是一个分布式的计算系统,由Yahoo的工程师Doug Cutting和Mike Cafarella在2005年合作开发。后来,Hadoop被贡献给了Apache基金会,成了Apache基金会的开源项目。Doug Cutting也成了Apache基金会的主席,主持Hadoop的开发工作。Hadoop采用MapReduce分布式计算框架,并开发了HDFS分布式文件系统和HBase数据存储系统。HDFS完成了将多台机器组成一个巨大的开放式硬盘,安全地存放海量的数据,而MapReduce完成了让多台机器同时计算,由此Hadoop完成了大数据的存储和分析。并且由于Hadoop具有开源特性从而成为分布式计算系统事实上的国际标准。Yahoo、Facebook、Amazon以及国内的百度、阿里巴巴等众多互联网公司都以Hadoop为基础搭建自己的分布式计算系统。常用的大数据分析工具有基于分布式系统的Mahout、Spark和Storm,一般的分布式系统都是基于Hadoop架构的。
1.Mahout,大数据分析的利器
Mahout是Apache SoftwareFoundation(ASF)旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便、快捷地创建智能应用程序。它通过和HDFS配合,实现在主题推荐、聚类和分类等领域中的大数据分析。此外,通过使用Apache Hadoop库,Mahout可以有效地扩展到云中。
2.Spark,大数据分析的“瑞士军刀”
Spark也是Apache基金会的开源项目,它由加州大学伯克利分校的实验室开发,是另外一种重要的分布式计算系统。它在Hadoop的基础上进行了一些架构上的改良。Spark与Hadoop最大的不同点在于,Hadoop使用硬盘来存储数据,而Spark使用内存来存储数据,因此Spark可以提供超过Hadoop100倍的运算速度。但是,由于内存断电后数据会丢失,Spark不能用于处理需要长期保存的数据。目前Spark完成了大部分的数据挖掘算法由单机到分布式的改造,并提供了较方便的数据分析可视化界面。
3.Storm,实时大数据处理工具
Storm是Twitter主推的分布式计算系统,它由BackType团队开发,是Apache基金会的孵化项目。它在Hadoop的基础上提供了实时运算的特性,可以实时地处理大数据流。不同于Hadoop和Spark,Storm不进行数据的收集和存储工作,它直接通过网络实时地接收数据并且实时地处理数据,然后直接通过网络实时地传回结果。
数据分析师应对上述每种不同的数据分析方法都要了解,因为不同的数据分析方法适用的场景是不一样的,能解决的数据分析目标也是不一样的,例如生物行业用数理统计最多,电商行业用数据挖掘较多,当电商行业的数据量很大时,就要用基于大数据的数据挖掘算法了。在学习具体的数据分析方法时,主要要了解其使用的场景,当你在做具体的数据分析时就知道选择哪一种分析方法了。另外,在选择数据分析方法时,不要热衷于高深的方法,“不管白猫黑猫,抓住老鼠就是好猫”,要用最简单方法把问题解决,有的时候用最简单的描述性统计方法能解决问题,就不要用数据挖掘算法了。
对于是否使用大数据分析方法,这个需要看企业的性质和将来的发展方向,一般不是所有的企业都具有进行大数据分析的可能,企业管理者不应迷失在大数据面前,而应根据自己的实际业务确立商业目标,有选择地获取数据,然后进行分析。面对大数据时代的到来,国内的数据分析师们最需要做的是和企业的管理部一起,探讨如何给企业的现在和未来做一个好的规划,看自己是否具有大数据分析的可能,如果有,则如何实现从现有的小数据分析向大数据分析转型,从人才到数据的准备,这些都需要有一个充分的思考过程才能确定。
1.3.5 数理统计与数据挖掘的区别和联系
1.数理统计与数据挖掘的联系
从两者的理论来源来看,它们都来源于统计基础理论,因此它们的很多方法在很多情况下都是同根同源的。例如,概率论和随机事件是统计学的核心理论之一,统计分析中的抽样估计需要应用该理论,而数据挖掘技术的朴素贝叶斯分类就是这些统计理论的发展和延伸。
有的时候两者的一些方法还会出现混淆的情况,例如,主成分分析和回归分析。从严格意义上讲,这两种分析方法都属于数理统计分析方法,但在数据挖掘实战应用中也常常会用到这种方式,从这个角度讲,主成分分析和回归分析也是数据挖掘商业实战中常用的一种分析技术和数据处理技术。
2.数理统计与数据挖掘的区别
更普遍的观点认为,数据挖掘是数理统计的延伸和发展,如果一定要加以区分,它们又有哪些区别呢?数据挖掘在如下几个方面与数理统计存在比较明显的差异。
数理统计的基础之一就是概率论,在对数据进行数理统计分析时,分析人员常常需要对数据分布和变量间的关系作假设,确定用什么概率函数来描述变量间的关系,以及如何检验参数的统计显著性。但是,在数据挖掘的应用中,分析人员不需要对数据分布做任何假设,数据挖掘中的算法会自动寻找变量间的关系。因此,相对于海量、杂乱的数据,数据挖掘技术有明显的应用优势。
数理统计在预测中的应用常表现为一个或一组函数关系式,而数据挖掘在预测应用中的重点在于预测的结果,很多时候并不会从结果中产生明确的函数关系式,有时候甚至不知道到底是哪些变量在起作用,又是如何起作用的。最典型的例子就是“神经网络”挖掘技术,它里面的隐蔽层就是一个“黑箱”,没有人能在所有的情况下读懂里面的非线性函数是如何对自变量进行组合的。在实践应用中,这种情况常会让习惯数理统计公式的分析师或者业务人员感到困惑,这也确实影响了模型在实践应用中的可理解性和可接受度。
在实践应用中,数理统计常需要分析人员先作假设或判断,然后利用数据分析技术来验证该假设是否成立。但是,在数据挖掘中,分析人员并不需要对数据的内在关系做任何假设或判断,而是会让挖掘工具中的算法自动去寻找数据中隐藏的关系或规律。两者的思维方式并不相同,这给数据挖掘带来了更灵活、更宽广的思路和舞台。
虽然上面详细阐述了数理统计与数据挖掘的区别,但是在企业的实践应用中,我们不应该硬性地把两者割裂开来,其实它们也无法割裂,没有哪个分析师会说:“我只用数据挖掘技术来分析”或者“我只用数理统计技术来分析”。正确的思路和方法应该是:针对具体的业务分析需求,先确定分析思路,然后根据这个分析思路去挑选和匹配合适的分析算法、分析技术,而且一个具体的分析需求一般都会有两种以上不同的思路和算法可以去探索,最后可以根据验证的效果和资源匹配等一系列因素进行综合权衡,从而决定最终的思路、算法和解决方案。