



本节首先介绍了如何定义一个数据项目,然后介绍了如何构建数据项目团队,最后介绍了一个完整的数据项目的分析流程。
数据项目的核心在于数据。要解决好问题,相关人员必然要先了解有哪些常见的方法与技术可以应用在数据分析上。下面我们先来快速了解一下数据分析模型。
根据要解决的目标,数据分析模型可分成3种类型:监督式学习、非监督学习与半监督学习(Semi-Supervised Learning)。监督式学习指的是数据有一个明确的栏位,用来做预测或分类的目标变量。例如,人们可以利用过去的天气数据,包含“有没有下雨”这个栏位,来预测明天“会不会下雨”。此时,就可以称“下雨与否”为目标变量或统计学上的反应变量。简单来说,就是从过去数据中的其他栏位,找出与“有没有下雨”这个栏位之间的关系,并将其关系套用到一组未知数据“会不会下雨”的其他栏位中,得出“会不会下雨”的预测值。以上这个例子也是监督式学习的典型案例。监督式学习可以想象成根据目标找关系,有一个明确学习的栏位,因此被称为监督式学习。
数据驱动(Data Driven)的方法论是数据分析的一个概念。对于初学者而言,可以先聚焦在特定的问题上讨论,再在一个最小可解上进行优化;当熟悉各种方法论之后,再试着进行更泛化的数据驱动。
数据分析是一个跨领域的方法论,涉及计算机科学、数学、神经学、心理学、经济学、统计学等领域。换句话说,数据分析并不是单一领域的学科。要完成一个好的数据项目,一个合作无间的数据项目团队必不可少,并且数据项目团队的人员必须同时掌握不同领域的知识,也需要有跨领域合作的思维。数据思维是一种跨领域宏观视野下的思维模式。
另外,跨领域的整合也是一个重要的数据应用关键。无论数据多寡,数据项目都建立在信息、统计、可视化等不同的领域专业上。不过从现实层面上来说,很难有人可以同时具备那么多能力,因此数据项目更需要团队合作。
一个完整的数据项目团队,除了要有特定领域的专家之外,还需要以下3种角色:数据科学家(Data Scientist)、数据分析师(Data Analyst)及数据工程师(Data Engineer)。
数据科学家是一个数据项目团队的核心,需要具备综合统筹的能力,包括观察数据、发现问题、组织整个数据团队,可以视为数据项目团队的组长,拥有相关领域的各种技能,哪里需要就往哪里去,能独立实现从分析数据、处理数据到实践应用直到最终产生价值的过程。简单来说,数据科学家就是“用数据解决真实问题的人”。也正因为如此,数据科学家须具有多元化的能力包括与其他角色沟通的能力,从处理数据的工程到分析数据的建模都需要涉猎,还要拥有洞察力。听起来好像数据科学家什么都要会,不过实际上很难有人可以样样精通,所以团队才显得更为重要。一个好的数据科学家,必须能够驾驭一个数据项目团队。
数据科学家的主要工作是观察数据,从中发现有趣的和需要解决的问题(通常这个过程被称为数据驱动);然后和工程师商量如何从数据库中建立分析架构;最终,与统计学家用统计模型/数据挖掘/机器学习的技术进一步分析数据,同时产生一份数据报告。数据科学家可以视为数据分析师的“进阶版”,解决数据分析师难以解决的复杂问题,终极目标是找出藏在数据背后的信息,并根据这些信息预测未来趋势。
数据科学家需要涉猎不同的领域,如基本的数学理论、大数据、程序设计、统计、机器学习与数据可视化等。简单来说,数据科学家需具备一定的综合能力。
数据分析师通常是指对数据进行解释的工作者。其工作步骤是“搜集数据—整理数据—分析数据—产生结果”,最常见的技能是利用常见的商业统计软件(如SQL、R、SAS、Excel)得出统计报告,并对统计报告进行解释。数据分析师所做的一切都是为了回答问题[通常这个过程被称为问题驱动(Problem Driven)]。
数据分析师在数据工程师提供的数据基础之上对数据进行探索性分析,目的是找到问题的正确答案,主要工作通常是例行性任务,定期出一个报告来分析季度数据,供管理层决策参考。数据分析师需要具有操作统计软件的基本技能,往往对数字及数据有一定的敏感性。
数据工程师的主要任务是进行数据的架构设计,专注于环境与平台的架设。其所做的一切都是为了让数据可以容易地被使用,负责建立和维持公司数据储存的技术基准,策划硬体和软件的结构,确保数据储存系统可以支持未来的数据量和分析需求,最终目标是把数据整理好,达到降低储存成本、提高查询效率的目的。
随着巨量数据的需求,现在的数据通常存在很多的噪声及干扰,相关人员需要花更多的精力在数据清理上。数据项目团队的主要工作包括收集数据、管理数据,设计一个好的架构以便存取数据,针对用户需求设计产出的数据集,需要具备数据爬虫、数据库架构、数据预处理(数据清理、转换)、数据建模、分散式系统等相关专业知识和技能。
数据项目的分析流程是:从数据开始,通过一连串的过程发现隐藏在数据中的规则,利用这些规则完成一些有趣的应用,大致概括为取得数据—数据预处理—数据转换—数据分析—数据解释—发现知识。
图1.4所示为乌萨马·菲亚德在 The KDD Process for Extracting Useful Knowledge from Volumes of Data 中提到的数据项目的分析流程。这个看似单一的流程,其实需要相关人员不断重复地尝试,一层一层探索,最终才能找到真正具有价值的数据。
图1.4 数据项目的分析流程
取得数据是指从原始数据到决定存放数据库的过程,一般来说会涉及数据获取、数据爬虫、数据管理、数据仓储等内容。
数据预处理是指根据规则(API、SQL)从数据库中取出数据集,进行数据清理,处理数据中的噪声或错误信息,或进行多个数据集的整合。
数据转换是指在取得数据集之后,我们经常需要针对分析的具体用法进行调整,将原始数据转换成适合分析模型的格式,如筛选栏位、长宽表转置等。
数据分析可以分为两个阶段,即探索性数据分析(Exploratory Data Analysis)与数据挖掘/机器学习。我们可以把探索性数据分析视为一种前期的观察,再经由数据挖掘进行进一步挖掘。
数据解释指人们通常会通过数据可视化的方式及图表方式呈现前述的结果,运用一些可能的原因对数据进行解释,然后把这一整套数据联系起来。
人们一般在数据分析的范畴中把数据清理和特征工程放在数据预处理环节一起讨论,但是在kaggle竞赛中,通常会把数据清理视为“处理遗失值”这个动作,也把特征工程视为一个独立过程。常见的特征工程包括特征编码(Categorical Encoding)、特征选取(Feature Selection)、特征降维(Dimensionality Reduction)、正规化(Normalization)/标准化(Standardization),如图1.5所示。
图1.5 特征工程