2.3 数据分析
数据分析是设计机器学习算法模型的准备性工作。数据分析是一种统计方法,通过多个维度或角度呈现数据的关系或趋势,可以通过一些几何图形方法展示分析的结果,辅助揭示不同数据之间的关系。数据分析的本质依然是理解数据,为决策提供数据依据。
2.3.1 基本理念
在很多年前,在数据分析领域有个有趣的榨菜指数,它通过涪陵榨菜在全国的销量情况,分析出人口迁徙情况。榨菜指数的理论依据有两个:一方面,榨菜属于经济学中的低值易耗品,人均收入的增长与榨菜的消费没有直接关系。假定没有人口流动,则榨菜在各省市的销量是相对稳定的;另一方面,通过统计发现,一个省市的涪陵榨菜的销量与其外来务工人员的数量呈正相关关系。
或许随着消费水平的变化,榨菜指数已经逐渐失效,不再是一种绝对科学规范的分析方法,但其隐藏的是数据之间的潜在关系。类似的指数有啤酒气象指数、汉堡指数、扑克指数、口红指数等,它们都可以用来揭示数据背后之间的关系。
早期的数据分析方法大多是借助简单的工具,结合统计理论、数据挖掘等方式实现对数据的分析,例如Excel中的统计分析。总之,数据分析是将数据整合为信息,再将信息转变为知识,底层依赖数学理论基础、丰富的行业经验及计算机工具。
数据分析的目的是集中分析、理解隐藏在大量看似杂乱无章的数据中的信息,找出研究对象的内在规律。在实践中,数据分析既可以帮助决策者或者系统做出判断,也可以辅助机器学习算法进行特征理解。
2.3.2 体系结构
数据分析是理解数据的重要一步,根据分析的目的,可以把数据分析分为探索性数据分析、定性数据分析和定量数据分析;根据分析的服务类型,可以把数据分析分为在线数据分析和离线数据分析。非专业技术领域和技术领域对于数据分析的定义并不相同,本书暂且将非专业技术人员使用的数据分析称之为传统数据分析,传统数据分析和数据挖掘结合在一起形成了完整的数据分析,如图2-9所示。
图2-9
从图2-9可知,数据分析包含两部分,一部分是以指标统计量为输出的传统数据分析,即对收集来的数据进行处理与分析,提取有价值的信息,发挥数据的作用,得到一个特征统计量结果;另一部分是以模型或规则为输出的数据挖掘,从大量的、不完全的、有噪声的、模糊的、随机的实际数据中,通过应用数据推荐、关联规则、分类模型、聚类模型和决策模型等技术,挖掘数据的潜在价值。
传统数据分析更注重分析,而当前广义的数据分析则囊括了数据挖掘的范畴,传统数据分析更关注的是结果,现在的数据分析更关注的是价值,数据分析和数据挖掘的边界已经逐步趋于融合,尤其是在实际工作中,大多数数据分析工程师的工作职责实则已包含数据挖掘。
2.3.3 传统数据分析方法与示例
1.传统数据分析的基本方法
传统数据分析相对容易理解,大致可以总结为八种常用的分析方法,如表2-14所示。
表2-14
上述是常用的传统数据分析方法,除此之外,在不同的行业或者细分领域还有其他数据分析方法,它们都是为解决某一类问题而产生的。
2.聚类分析方法应用示例
本示例基于最短距离法对数值进行聚类,属于传统数据分析中非常易于理解的示例。假定有一维样本数据:1、2、5、7、9、10,下面用最短距离法对这组样本数据进行聚类,步骤如下。
第一步,把数值相减的绝对值作为距离,通过计算两两之间的距离得到如表2-15所示的距离矩阵。
表2-15
第二步,将距离最短的样本合并为一个新的样本。例如,样本“1”和“2”、样本“9”和“10”的距离均为1,因此可以分别合并为一个新样本。对于新样本,依然选择最短距离进行距离矩阵计算。合并后的样本数据之间的距离矩阵如表2-16所示。
表2-16
第三步,可以发现样本“5”和“7”、“{9,10}”和“7”的距离最小为2,因此将“5”和“7”合并,但是由于样本“{9,10}”和“7”也是距离最小的样本,因此把“5”、“7”、“{9、10}”合并为新样本“{5,7,{9,10}}”,然后继续对新样本进行距离矩阵计算。二次合并后的样本数据之间的距离矩阵如表2-17所示。
表2-17
由于表2-17中仅剩下两个样本{1,2}、{5,7,{9,10}},因此最终将两者合并即可得到最终的样本“{{1,2},{5,7,{9,10}}}”,至此样本聚类过程结束。
在上述过程中,也可以约定当聚类的数量达到一定量之后即可终止,聚类的数量可根据实际情况进行定义。例如,在上例中如果将样本“1、2、5、7、9、10”聚类为两部分,则分别是{1,2}与{5,7,9,10}。
2.3.4 基于数据挖掘的数据分析方法与示例
基于数据挖掘的数据分析方法的基本思路和原理来源于传统数据分析方法,只是技术手段不同。基于数据挖掘的数据分析方法与传统数据分析方法相比,在数据层面已有一些差异,例如,数据挖掘中使用的数据可能是有噪声的、非结构化的、量级更大的。除此之外,传统数据分析方法一般都是先给出一个假设,然后通过数据验证,在一定意义上是假设驱动的;与之相反,基于数据挖掘的数据分析方法在一定意义上是发现驱动的,模式都是通过大量的搜索工作从数据中自动提取出来的。
1.方法介绍
基于数据挖掘的数据分析方法如表2-18所示,它们均是需要通过大量的数据运算或机器总结规律的方式进行的数据分析方法。
表2-18
当然,随着各类技术的不断突破,数据分析的定义范畴已经越来越广泛,数据分析的方法也变得更加丰富,甚至会采用深度学习的方式。
2.基于关联规则挖掘的应用示例
关联规则挖掘是一种基于规则的机器学习算法,它利用一些度量指标来判断数据中存在的隐藏规则。关联规则挖掘可以很好地用于知识发现,属于比较典型的无监督机器学习方法。
Apriori算法是关联规则挖掘中的经典算法,应用非常广泛,例如,超市商品关联分析、消费习惯分析等。它利用频繁项集的先验知识,不断按照层次进行迭代,计算数据集中所有可能的频繁项集,主要包括两个核心部分的分析:根据支持度找出频繁项集,根据置信度产生关联规则。其中,频繁可以理解为数据的频率,所筛选出的项集频率不得低于支持度。如果满足最小支持度的频繁项集中包含k个元素,则被称作频繁k项集。
例如,某公益书店为了鼓励大家阅读,希望从读者的历史借阅记录中发现某些图书之间的关系,然后尽可能使相关图书靠得更近,从而间接提升大家的阅读积极性。现有部分借阅记录如图2-10所示。
图2-10
对图2-10所示的借阅记录进行扫描,并对每一个类别的图书进行频率计数,得到候选项集C1,并计算支持度,如表2-19所示。
表2-19
设定候选项集的最小支持度为0.5,通过对候选项集C1与最小支持度进行比较,可以筛选出低于最小支持度的“居家美食类”,得到频繁项集L1,如表2-20所示。
表2-20
对频繁项集L1的不同图书类别进行相互连接,可形成新的候选项集C2,如表2-21所示。
表2-21
依然对候选项集C2进行最小支持度的过滤,过滤掉“计算机类、医药类”和“计算机类、历史类”,产生如表2-22所示的频繁项集L2。
表2-22
重复上述构建候选项集和频繁项集的过程,并结合最小支持度,得到最终频繁项集L,如表2-23所示。
表2-23
至止,我们就通过关联规则找出了频繁项集,即该公益书店可以将医学类、历史类、文学类的书放到同一区域。
上述过程介绍了Apriori算法的基本思路,如果是其他应用场景,则有可能需要输出强关联规则。针对此例中频繁项集L的非空子集{医药类}、{历史类}、{文学类}、{历史类、文学类}、{医药类、文学类}、{医药类、历史类},强关联规则的计算规则如表2-24所示。
表2-24
若定义75%的置信度,则强关联规则仅输出两项,即“{历史类、文学类}⇒{医药类}”和“{医药类、文学类}⇒{历史类}”,而“{医药类、历史类}⇒{文学类}”不是输出的强规则。
至此,用Apriori算法实现关联规则挖掘的流程全部结束。Apriori算法需要生成大量的候选项集,每次生成频繁项集的同时都要生成候选项集,并且需要一直迭代重复的扫描事物数据来计算支持度,因此效率较低。在应用过程中,通常会基于不同的条件采用Apriori算法的衍生版。
2.3.5 工作流程
数据分析是一种有方法、有目的地收集和分析数据并将其转化为信息的过程,其工作流程可分为两方面。一方面是从业务的角度形成的业务流程;另一方面是从技术实施的角度形成的技术实施流程。数据分析工作流程如图2-11所示。
(1)需求分析:数据分析中的需求分析是整个分析环节的第一步,也是最重要的步骤之一,它决定了后续分析的方向和方法。需求的内容来自业务部门、市场运营部门或其他部门,对他们提出的需求进行需求分析和技术可行性分析等。
图2-11
(2)数据获取:数据是数据分析工作的基础,数据获取是根据需求分析的要求提取、收集数据。部分数据来自业务沉淀的历史记录,部分业务需求可能需要通过爬虫抓取非本地数据等。
(3)数据预处理:数据预处理是指对数据进行数据合并、数据清洗、数据标准化和数据变换,使得整体数据变得干净、整齐。
(4)分析与建模:分析与建模是指通过对比分析、分组分析、交叉分析、回归分析等分析方法,以及聚类模型、分类模型、关联规则、数据推荐等发现数据中有价值的信息,并得出结论的过程。
(5)模型评价与优化:模型评价是指对已经建立的一个或多个模型,根据其模型的类别,使用不同的指标评价其性能优劣的过程。模型不同,类别评价方式也不同。若业务场景不同,则评价指标也不同。
(6)部署:部署是指将数据分析结果与结论应用至实际生产系统的过程,以便长期在业务部门使用。
从技术实施的角度来看,基于数据挖掘的数据技术实施流程较为复杂,大体可以分为建模流程和模型验证流程。
(1)建模流程。首先将获得的原始数据整理划分为训练数据、验证数据和测试数据,然后建立模型、训练模型,最后输出模型文件或模型表达式。
(2)模型验证流程。基于测试数据对模型文件或模型表达式进行评估验证,若验证未通过,则不断重复建立模型、训练模型、验证模型的流程。
数据挖掘的技术实施流程属于机器学习模型,详细的研发流程可参见本书第4章。
2.3.6 数据分析技巧
1.分析的理论方法
前文提到的传统数据分析和数据挖掘都属于技术方法,但是在实际进行数据分析过程中,还涉及如何分析的问题。例如,如何使数据分析的逻辑符合需求方对它的理解等。
理论方法是从宏观出发,从管理和业务的角度提出分析框架,指导具体的数据分析方向。较为经典的分析方法有5W 2H分析法、PEST分析法、SWOT分析法、4P理论等,如表2-25所示。
表2-25
不同的分析方法适用不同的分析场景,当然,这些分析方法已经在一些非数据分析领域得到了广泛应用,对数据分析领域有较好的借鉴作用。一份完整的数据分析报告,应不仅仅是简单的数值呈现,而是包含系统的分析体系和可靠的数据结论支撑,这样才能获得更多的认可。
以5W2H分析法为例,假定某超市连续出现业绩亏损,已知客户的历史购买记录、商品的采购记录等基础数据,现通过5W2H分析法分析业务下滑的原因及改进的有效措施,分析角度如表2-26所示。
表2-26
续表
从数据的角度,可以通过一些数据结论支撑5W2H分析法,例如,通过“超市成本数据分析、收入、成本、亏损额等”说明“为什么要进行效果改进”,从“历年、历月业绩数据对比情况、均值差异等”说明“何时业绩出现下滑”等。当通过完整的数据支撑5W2H分析法之后,会形成完整的、有一定说服力的分析报告。
2.分析的思考角度
前面介绍了宏观的分析方法,但在数据分析过程中,依然需要相当的数据敏感度。敏感度的差异归根结底是思考角度不一致导致的。笔者总结了部分思考角度和场景问题,如表2-27所示。
表2-27
上述仅仅是一些总结,我们需要通过不断地积累和沉淀,才能逐步完善数据分析的思考角度,甚至根据不同的业务场景整理总结出不同的思考角度。
3.存在的误区
在数据分析过程中难免存在一些误区,导致在数据分析过程中产生差异。比如,初学者有时候会认为数据分析需要大量的数据,其实不然,业务场景不同及分析难易程度也会决定数据的依赖,数据分析中常见的思考误区如表2-28所示。
表2-28
上述仅是比较浅显的误区,在实际工作中还会遇到更多的思考误区,我们应尽量避开误区,以业务目标为导向来呈现一份数据分析报告。此外,在数据分析过程中,还存在以下三类比较常见的现象。
(1)过多的重视算法模型设计。正所谓“巧妇难为无米之炊”,算法是“炊”,数据本身和数据特征是“米”,优秀的算法固然重要,但是如果能够通过大量数据解决的,则可以尝试从数据层面解决,而非固执在算法层面。拥有大量的样本数据和有效的数据特征提取是解决问题的方法之一,把过多的精力集中在算法模型本身,效果可能并不明显,且成本非常高。
(2)过于坚信模型是有效的。模型是建立在当前数据基础之上的,仅对当前样本数据有效。模型在线上使用后,线上的环境会逐渐发生变化,因此应该从数据的差异性变化开始,逐步考虑迭代新版本的模型,在模型和数据层面都适当调整,尤其是涉及线上划分地域、时效等相关的业务。
(3)忽视了数据分析的基础平台。数据分析是算法工程师或数据工程师的基础工作之一,做数据分析的基础平台是数据分析师需要关注的,高性能的数据分析平台不仅可以提升效率,效果也更好。技术管理者应当重视数据分析平台,甚至可以尝试推动数据分析平台的建设。
2.3.7 数据可视化
数据可视化可以使数据结论更有效地呈现。可视化的过程通常被认为是一个生成图形图像的过程,实际上是数据的表达过程。数据可视化一方面可以形成对某个数据的感知,另一方面可以用图像强化对认知的理解。
有实验表明,人类视网膜能以大约10Mb/s的速度传达信息,而听觉、触觉等信息传递速度远低于视觉。因此通过可视化的方式,能够使得众多信息在尽可能短的时间内传达给受众,清晰简单的可视化效果会使数据结论更具说服力。
1.可视化图表
可视化图表的类型非常多,除了传统的饼图、柱状图、折线图等,还有气泡图、面积图、省份地图、词云、瀑布图、漏斗图等,甚至还有GIS地图。这些种类繁多的图形可以满足不同的展示和分析需求。
表2-29是柱状图、饼图、折线图、散点图的优点、缺点、适用数据和适用场景的简述,它们是最常用的可视化图表。
表2-29
上述大部分是静态数据的可视化,在一些复杂领域,可能还会涉及动态数据的可视化。例如,呈现数据的形成和变化过程与时间的关系。除此之外,还有网络图的可视化、时空数据可视化、多维数据可视化等。
2.可视化的选择
在一个复杂的数据理解中,选择一个合适的可视化图表非常重要,简单的柱状图、饼图、折线图、散点图不能覆盖完整的场景选择。图2-12展示了在数据可视化过程中图表选择的一般方法。
图2-12