一名数据科学家的日常
前言
作为一名数据科学家,我时常被问到“你的工作究竟是做什么的?”。
这是因为数据科学家有的时候会被人们误解为手里拿着水晶球(其实是MacBook Pro),嘴里嚷嚷着令人难以理解的晦涩词汇(机器学习,随机森林,深度神经网络,贝叶斯后验等),并对未来做出精准的预测的那么一群巫师。虽然我也希望自己真的拥有未卜先知的超能力,但真实的情况是,数据科学并不是魔法。数据科学的威力来自于数据科学家对统计和算法的深入理解,对编程技能的熟练掌握,以及优秀的沟通和业务认知能力。更重要的是,数据科学其实是一门如何把上述三方面的技能有条不紊地应用于业务中并解决实际问题的学问。
数据科学的基本流程
让我们以一个具体的场景来解释数据科学的基本流程:假设你刚被一家创业公司聘请为数据科学家。经过十年寒窗苦读,你早就想要一展身手,攻克复杂的数据问题,让新公司的同事对你刮目相看。但问题是,你该从何开始呢?
巧合的是,在公司吃午餐的间隙,你碰到了销售部门的总监,你向总监热情地介绍了自己并向她提问:“有什么数据方面的难题我可以帮助你们解决吗?”
总监想了想,答道:”你能帮我们优化我们的销售漏斗并且提高转化率吗?“
你听了之后第一反应:什么?这是一个数据问题吗?我压根都没有听到“数据”这个词。我应该具体去分析什么呢?她的问题到底是什么意思?
你在学校的导师早就警告过你:客户对想要解决的数据问题缺乏清晰的定义是数据科学家经常会遇到的状况。解决这个问题的办法就是运用数据科学的基本流程。
数据科学的基本流程:概要
当一个非技术背景出身的领导要求你解决一个数据问题时,他/她对数据问题的描述通常是非常模糊的。这时候就需要发挥你作为数据科学家的作用,把一个模糊的问题描述转化成一个具体的数据问题,并且运用数据科学的方法去解决问题,最后把结论呈现给你的上级领导。
我们通常把这整个流程称为“数据科学流程”。具体来说,包括这样几个重要的步骤:
-
问题定义:谁是你的客户?你的客户到底想要你解决什么问题?你应该如何把一个模糊的需求转化为一个具体的,界定清晰的数据问题?
-
数据收集:是否有现成的数据?如果是的话,哪一部分的数据对解决问题有帮助?如果不是的话,需要哪些额外的数据?收集这些额外的数据需要动用哪些资源(时间,金钱,技术)?
-
数据处理:在现实场景中的原始数据一般很少能够被直接使用,数据科学家在面对原始数据时通常要面临数据错误,数据损坏,数据丢失等一系列问题。数据科学家首先要做的便是将原始数据进行清洗,并将其转化成适合进一步分析的数据格式。
-
数据挖掘:一旦完成了数据清洗,下一步需要做的就是数据挖掘。数据挖掘指的是对数据内部隐含的规律,模式以及相关性进行探索,从中提取有价值的信息。
-
数据建模:数据建模通常是整个数据科学流程中最引人瞩目的一个环节,在这个步骤里,数据科学家会根据要解决的问题和现有的数据选择适用的机器学习,深度学习或是统计的相关模型,然后从模型输出的结果里提炼出能够为决策服务的内容。
-
成果沟通:这是最后一个也是最重要的环节,所有你之前完成的分析和建模工作将会变得一文不值,如果你不能够把你的成果有效地与你的领导进行沟通。这个环节通常是最容易被数据科学家忽略或轻视的,但事实上,沟通能力以及如何让非技术背景的受众能够非常直白地理解一个技术话题是至关重要的。
那么回到我们之前的例子,现在你要如何着手开始帮助你们公司销售部门的总监呢?在接下来几个章节,我们会依次深入讲解每一个数据科学的环节在现实中是如何运作的!
数据科学的基本流程之一:问题定义
你所在的创业公司销售部门的总监希望你能帮助她优化销售漏斗并提高转化率,那么作为一名数据科学家,你应该从何开始呢?
你应该从提出正确的问题开始:
- 谁是这家创业公司的目标客户群?你应该如何甄别潜在的客户?
- 目前这家创业公司的销售流程是怎么样的?
- 这家创业公司已经收集了有关目标客户群的什么样的信息?
- 针对目标客户的细分类别,这家创业公司是否有不同等级的配套服务?
你的首要目标是从你的客户(在这个例子里指的是销售部门总监)的角度去理解她为什么提出这个问题,和业务有什么联系,以及她在这个问题中最关心的是哪个部分。正确理解客户的动机对于数据科学家后续开展分析和建模的工作具有非常大的帮助。
一旦你对于数据问题所从属的业务领域有了初步的了解,你应该向你的客户提出更有针对性的问题来明确具体需求。在销售总监的这个例子中,你可以向她提问:“那么您理想中优化后的销售漏斗是什么样子的?当前销售漏斗的哪个部分您认为还有提升空间?”
销售总监回答道:“我认为我们的销售团队花了太多时间在尝试说服那些不打算购买我们产品的潜在客户,我更愿意把这些时间投入在那些具有更高意愿购买我们产品的客户身上。我同时希望了解哪些细分的客户群体具有比较低的转化率与造成低转化率的原因。”
通过与销售总监的进一步沟通,你终于了解到你需要解决的是个什么样的数据问题。你可以进一步把你的思路写成几个跟进的问题:
- 现在对公司来说最重要的细分客户群体是哪些?
- 这些细分客户群体之间的转化率有什么区别?某些细分客户群体是否存在显著的高或低转化率?
- 我们应该如何预测一名潜在客户是否有可能下单购买我们的产品?
- 我们是否有办法甄别那些举棋不定的潜在客户?
- 不同细分客户群体的投资回报率(ROI)是怎么样的?
有了这些问题,你可以与销售总监再进行一次需求的确认。在这个例子里,销售总监对于你准备的具体问题感到很满意,并补充道:“我对于每个潜在客户具有多大的可能转化为购买我们产品的客户特别感兴趣,其他的问题也非常重要!” 在听了销售总监的意见后,你在心里把第3个和第4个问题打了着重标记。
下面,我们来谈谈你如何利用现有的数据来解决问题。
数据科学的基本流程之二:数据收集
在这个步骤,你已经明确了你的第一个数据科学项目要解决的主要问题:预测每个潜在客户将会购买公司产品的概率。
清楚了要解决的问题之后,接下来你应该考虑用什么数据来解决这个问题,以及哪些数据是现成的?
你了解到这家创业公司大多数的客户数据存储在公司销售部门的CRM系统里,由销售运营团队管理。CRM系统的后端是一个SQL数据库,该数据库支持API形式的访问,并且能够把数据以JSON格式的形式返回。
你面临的问题有:CRM数据库里哪些是你需要的数据?你应该如何提取数据?你应该用什么格式来存储数据以便进行深入的分析?
你开始卷起袖子探索SQL数据库,发现里面不仅存储了客户在销售流程中的相关数据,而且包括了客户的身份信息,联系方式和家庭信息等。同时,由于数据量不是很大,你决定使用CSV的格式来存储提取的原始数据。
作为一名具有道德感的数据科学家,你应该考虑到数据的安全性和隐私性,在你提取数据的过程中,应该剔除一切个人可识别信息。所有最终在CSV文件中保存的原始数据必须是匿名的,并且无法追溯到任何一个具体客户。
在大多数情况下,你会使用公司现成的数据。但有的时候,你也需要主导并参与数据收集的工作,那会涉及到更多软件工程方面的知识,通常整个项目的周期会更长。
现在你已经有了解决问题所需要的相关数据,你准备开始对数据进行一番挖掘来找出有价值的信息。但是且慢,你手头的数据仍然是“原始数据”,有很大的可能存在数据丢失,损坏,错误等问题。在你从数据中找出规律之前,你必须得对数据进行处理。
数据科学的基本流程之三:数据处理
作为公司的数据科学家,你正在埋头帮助公司销售部门总监预测哪些潜在客户更有可能购买公司的产品。并且你已经从CRM数据库收集了原始数据存储在CSV文件里。
但是,在完成了这些前期工作之后,你还不能够直接使用这些数据开展分析工作。因为,你要确保你的数据是“干净”的!数据清洗与整理通常是数据科学家在日常工作中花费最多时间的一个环节,这也是一个需要耐心和专注度的步骤。
首先,你必须检视你提取的数据,并且确保你理解每个数据列的含义。举个例子,如果有个数据列叫“FIRST_CONTACT_TS”,代表的是用户第一次被公司联系的日期与时间。你应该自然地联想到以下几个问题:
- 是否存在丢失的数据?比如有些客户没有第一次被公司联系的日期时间信息?如果数据都齐全的话,是好现象还是坏现象?
- 这些日期时间数据代表的时区是什么?所有的记录都是同一时区的吗?
- 这些日期时间数据的区间是什么?区间是合理的吗?如果这家创业公司是2011年成立的,那么是否有2011年之前的记录?那些记录是单纯的错误还是有其他特殊的含义?这些问题需要数据科学家与销售部门负责业务的同事进行沟通确认。
一旦你发现了原始数据中存在的问题,你应该怎么做呢?你可以选择把那些含有丢失或者损坏数据的记录完全舍弃,你也可以选择用一些合理的默认值来代替(默认值通常要基于负责业务同事的意见)。一般而言,在数据处理过程中,你有很多选择,作为数据科学家,你的工作是要决定哪个选择对于解决当前的具体问题更有帮助。
接下来你必须要对CSV文件里的每一个数据列都重复同样的处理步骤:在这个过程中你将会理解为什么数据处理会花费那么多时间。这是数据科学项目中不可或缺的时间投入,你的最终目的是尽可能地确保经过处理后你的数据是“干净”的。
同时你也需要确保数据中包含了你需要的所有关键信息。对于预测一个潜在客户未来的购买行为而言,你需要知道的是哪些潜在客户在过去已经成功转化为购买产品的客户。巧合的是,你找到了一列叫做“CONVERTED”的数据,里面包含了“YES/NO”的值。
最后,在一系列的数据清洗与整理之后,你终于拥有一份“干净”的数据。你已经做好准备从数据中挖掘更多信息了!
数据科学的基本流程之四:数据挖掘
你已经收集了原始数据并花了很多时间清洗数据。
现在你终于要开始分析数据了!你迫不及待地想要了解数据里总共包含了哪些信息,其中哪几块数据能为你解决问题提供帮助。这个步骤通常被称为“探索性数据分析”。
首先你要明确你想探索的是哪些方面的数据?你可以花上几天甚至几个礼拜的时间漫无目的地把各个方面的数据做成可视化图表。但现实的问题是,你没有那么多时间,你的客户——销售部门的总监,希望在下周的董事会会议上汇报你的成果。
你回到一开始的问题定义:预测哪些潜在客户有可能转化为购买产品的客户。你想到你可以把所有客户数据按照购买与否分成两个类别,然后观察两个子类别之间的差异。
很快你就注意到了一些有趣的现象。当你尝试绘制两个子类别的直方图时,你发现很多年纪在30岁出头的客户更愿意去购买公司的产品,而20多岁的客户则并没有很强的购买意愿。这个发现让你感到惊讶,因为公司的产品定位是面向20多岁的目标客户群的。
在另外一方面,你发现很多成功购买产品的客户更多是被公司的邮件营销活动所针对而不是社交媒体营销活动。社交媒体营销活动总体上对于客户的购买行为并没有很大的影响。而20多岁年龄段的客户则大多是被社交媒营销活动针对。
你通过绘制直方图直观上确认了这些结论,并运用了你的推论统计知识进一步验证。
第二天,你来到销售总监的办公桌前,和她分享了你的初步分析结果。她认为这些发现很有价值,并希望尽快看到你的完整成果!
数据科学的基本流程之五:数据建模
在之前的数据挖掘步骤中,我们已经从数据里发现了一些与客户购买行为相关的特征,这些特征能够帮助我们解决预测客户购买行为的问题。在这一环节里,我们将来介绍如何用这些数据来构建一个数据模型并生成预测。
在分类预测问题上效果比较好的通常是机器学习模型。一个机器学习模型需要大量的数据来训练,这些数据被称为“特征向量”。
那么我们应该如何创建这些“特征向量”呢?在我们的数据挖掘环节,我们已经发现了一些对于预测客户购买行为具有帮助的特征,尤其是客户年龄与营销渠道(邮件营销 vs. 社交媒体营销)。这里我们需要注意这两个特征的区别:客户年龄是一个数值而营销渠道是一个数值型变量,而营销渠道是一个分类型变量。作为一个称职的数据科学家,你必须懂得如何区别对待这些变量并且正确地把这些变量转化为特征。
除了这些特征以外,你还需要标签。标签会告诉机器学习模型哪些数据对应的是哪些类别。在这个例子中,我们可以用“CONVERTED”这个数据列作为布尔值标签(购买 vs. 没有购买)。1表示的是潜在客户购买了产品,0表示的是潜在客户没有购买产品。
现在有了特征和标签数据,你决定用一种基本的被称为逻辑回归的机器学习分类器模型来训练并生成预测结果。分类器模型是属于机器学习中“监督学习”类别下的一种算法,这种算法构建的模型能从特征和标签数据中学习对应的映射关系。与“监督学习”相反的是,“非监督学习”可以直接从特征数据里学习,而不需要与之对应的标签数据。
你选择逻辑回归算法的原因是这是一种相对简单的模型,所需训练时间也比较短,模型不但能够生成预测的结果而且会输出每个潜在客户转化的概率。你应用了这个模型,并调整了模型的参数,经过几次迭代,你最终得到了令人满意的预测结果。
销售部门总监正好经过,看到你兴奋的神情,问:“有什么进展吗?”你激动地回应:“我刚刚训练完成的逻辑回归模型实现了95%的真阳性率和0.5%的伪阳性率!”
销售总监看着你说着这些好像看着一个外星人一般。
你这才意识到你还没有完成你的工作。你需要完成最后一个重要的沟通步骤,也就是把你的成果通过一种清晰有效的方式传达给你的客户。
数据科学的基本流程之六:成果沟通
你现在训练完成了一个能够准确预测潜在客户购买行为的机器学习模型。但是你应该如何把这个成果以销售总监能够理解的方式告知她呢?
沟通能力是数据学家所有需要的技能中最被低估的一项。当你的某些同事(比如从事软件开发的同事)能够尽量避免沟通而专心开发程序,数据科学家却必须要具备能够把自己的成果用其他部门同事同时能够理解的语言解释清楚的能力,并且一定要让受众真正理解一个数据科学项目产生的巨大影响。这些沟通技能通常被称作“数据演讲”的能力。
那么在这个例子中, 你应该怎么样去用数据去讲一个故事呢?你的故事应该包括你从数据挖掘和数据建模过程中得到的重要结论。最重要的一点是,你应该在你的演讲中回答那些你的客户最关心的问题!
首先你应该做的是从公司的CRM数据库里提取现有潜在客户的特征数据,然后用你的模型对这些客户的购买概率进行预测,把你的预测结果按照概率从高到低排序并保存在一张工作表里,最后把存有结果的工作表分享给公司的销售总监。
接下来,你应该强调从数据挖掘过程中得出的几个重要的结论:
-
客户年龄:从数据的角度来看,我们公司的产品更多地是卖给了在30岁出头这个年纪的客户群体,而不是20多岁的客户群体。这与我们的销售策略不符,因为我们产品的定位实际上是面向20多岁的客户群的。
-
营销方式:我们使用社交媒体营销来针对20多岁的客户,用邮件营销来针对30岁出头的客户。这一营销方式的差异造成了两个细分客户群体的购买转换率的显著差异。
在之后的一周,你和销售总监又进行了一次会议,帮助她理解你得出的重要结论。她听了后,问道:“现在从数据中我们知道了这些,那么销售部门应该如何采取行动呢?”
作为一名数据科学家,你的主要工作职责是分析数据。但由于你职责的一部分是解读你所分析的数据,你会经常被其他同事要求对如何利用数据提出有效的建议。
你沉思片刻,回答道:“首先,我会建议用包含有模型预测结果的工作表来为销售部门接下来一到两周销售工作的导向,指引销售人员把更多精力花在具有高概率会购买我们产品的潜在客户身上,并衡量这一策略的业绩表现。这会让你的销售团队变得更有效率,并且你们在执行新的销售策略后也可以从业务的角度对我的模型进行反馈。”
“其次,我建议我们应该重新审视一下我们的营销策略,并决定是否用邮件营销活动来针对20多岁的客户群体,或是提高我们社交媒体营销活动的效率。”
销售部门的总监非常认可你的建议,她马上帮你安排了与营销部门总监的会议让你能够在他面前提出你的建议。同时,她也要求你准备一份关于数据挖掘和数据建模的演示文稿,让她可以在董事会会议上对销售漏斗优化的问题与提高转化率的问题进行汇报。
尾声
你终于顺利完成了你在公司的第一个数据科学项目并且通过实践经验理解了你在学校的导师所说的:数据科学的关键并不在于统计,数学或是算法,也不在于编程和实施,数据科学的关键在于这是一个交叉学科,需要从业者具备跨越技术和业务两个领域的能力。这也是为什么数据科学这份职业是如此有挑战性,如此有价值。
参考文献: