01 什么是数据科学?数据科学是做什么的?
首先从数据科学领域的讨论开始。 让我们从定义数据科学以及数据科学家的角色和责任开始讨论,这两个角色描述了人工智能和机器学习的领域和执行其计划所需要的技能(请注意,很多专业角色越来越普遍,如机器学习工程师)。
尽管数据科学家通常有许多不同的教育背景和工作经验,但大多数人应该在四个基本领域(理想情况下是专家)都很强,我称之为数据科学专业知识的四大支柱。数据科学家应该具备下述这些领域(没有特别的顺序)的专业知识:
- 商业或相关的商业领域
- 数学(包括统计和概率)
- 计算机科学(包括软件编程)
- 书面和口头交流
还非常需要其他的一些技能和专业知识,但在我看来,主要是上述四项。
实际上,人们通常在四个支柱中的一个或两个方面很强大,但很少在四个方面都强大。如果碰巧遇到一个在四个方面都很强大的数据科学家,那么他是真正的专家,您就发现了一个常被称为独角兽的人。在四个支柱中都拥有相当程度专业知识和能力的人很难找到的,严重缺乏。
因此,许多公司已经开始围绕数据科学的特定支柱设置专门的角色,当把这些人集合在一起时,就相当于拥有了数据科学家。
例如组建一个三人团队,其中一个人有MBA背景,一个是统计学家,另一个是机器学习或软件工程师,当然团队还可以包括数据工程师。这个团队就可以同时执行多个任务,每个人在任何给定时间都专注于计划的某个方面。
基于这些支柱,数据科学家应该能够利用现有数据源,根据需要创建新数据源,以提取有意义的信息、产生深入可操作的洞见、支持数据驱动的决策、以及构建人工智能解决方案。
这需要业务领域的专业知识、有效的沟通和结果解读,以及利用所有相关的统计技术、编程语言、软件包、库和数据基础设施。简而言之,这就是数据科学所要做的事情。
02 机器学习的定义及其关键特点
机器学习经常被认为是人工智能的子集。我们先讨论机器学习。
记住我们对人工智能的简单定义,即机器展示的智能。这基本上描述了机器从信息中学习并应用所学知识做事以及继续从经验中学习的能力。
在许多人工智能应用中,机器学习是人工智能应用过程中用于学习的一组技术。一些具体技术可以被视为人工智能和机器学习的子集,通常包括神经网络和深度学习,如图4-1所示:
▲图4-1 人工智能,机器学习,神经网络和深度学习之间的关系
我非常喜欢这个简洁的机器学习定义,这是我在谷歌设计博客文章中读到的:“机器学习是一门根据模式和关系进行预测的科学,这些模式和关系是从数据中自动发现的。”
我对机器学习通常的非技术定义是:机器学习是不需要显性编程,从数据中自动学习的过程,而且具有根据经验扩展知识的能力。
机器学习与基于规则技术的关键区别在于不需要显性编程,特别是在特定领域、行业和业务功能方面。诸如深度学习之类的高级技术可能根本不需要领域的专门知识,而在其他情况下,领域的专门知识是以选择或设计训练模型特征的形式提供的(在非机器学习应用程序中,称为变量、数据字段或数据属性)。
在这两种情况下,不需要显性编程绝对关键,而且实际上是机器学习要理解的最为重要的方面。让我们通过下面的案例来解释。
在机器学习出道之前,假设您是负责创建预测模型的程序员,该模型能够预测某类贷款的申请人是否会拖欠,因此决定是否应该批准该笔贷款。为此您可能编写一个很长的专门针对金融行业的软件程序,输入个人的FICO分数、信用记录和贷款申请类型等信息。
代码包含许多非常明确的编程语句(例如条件语句和循环语句)。伪代码看上去(用普通英语编写的代码)可能像下面这样:
- If the persons FICO score is above 800, then they will likely not default
- and should be approved
- Else if the persons FICO score is between 700 and 800
- If the person has never defaulted on any loan, they will likely not
- default and should be approved
- Else the will likely default and should not be approved
- Else if the persons FICO score is less than 700
- ...
这是一个非常显性的编程(基于规则预测的模型)案例,它包含以代码形式表达的贷款行业特定领域的专业知识。该程序属于硬编码,只能做一件事。它需要领域及行业的专业知识来确定规则(场景)。
该程序非常死板,不一定代表所有可能导致潜在贷款违约的因素。对于贷款行业出现的各种新变化,还必须通过手动输入来更新程序。
看得出来这种方式不是特别有效或最优,也不会产生可能的最佳预测模型。另一方面,机器学习使用正确的数据却可以做到这一点,而且无需任何显性编程,特别是包含贷款行业专业知识的代码。
这里对机器学习做出了有些过于简单的解释,机器学习能够在不知道相关数据或领域的情况下以数据集作为输入,经过同样不知道相关数据或领域的机器学习算法处理生成预测模型,该模型拥有专业知识并了解如何将输入映射到输出,使最准确的预测成为可能。
如果能理解这一点,大概就在高层次上理解了机器学习的目的。
值得一提的是,虽然机器学习算法本身能够在不需要显性编程的情况下学习,但是在构思、构建和测试基于机器学习的人工智能解决方案的整个过程中,仍然非常需要人的参与。
03 机器学习的方式
机器通过各种不同的技术从数据中学习,其中最主要的包括有监督、无监督、半监督、强化和转移学习。用于训练和优化机器学习模型的数据通常被分为有标签和无标签两类,如图4-2所示。
▲图4-2 有标签与无标签数据
有标签数据有目标变量或值,对于给定的特征值组合(也称为变量、属性、字段),可以对目标变量或值进行预测。预测建模(机器学习的应用)在有标签数据集上训练模型,然后预测新特征值组合的目标值。因为数据集中存在目标数据所以称为有标签数据。
另一方面,无标签数据也有特征值,但没有特定的目标数据或标签。这使得无标签数据特别适合于分组(即聚类和分割)及异常检测。
值得注意的是,很不幸,可能很难获得足够数量的有标签数据,而且产生这些数据可能会花费大量的金钱和时间。可以把标签自动添加到数据记录中,也可能需要人工添加(数据记录也称为样本,可以想象为电子表格中的一行)。
有监督学习是指使用有标签数据的机器学习,而无监督学习使用无标签数据。半监督学习使用有标签和无标签的混合数据。
让我们从高层次简要讨论不同的学习类型。有监督学习有许多潜在的应用,如预测、个性化推荐系统和模式识别。
有监督学习又被进一步细分为回归和分类两类应用。这两种方法都被用来做预测。回归主要用于预测单个离散或实数值,而分类则用于将一个或多个类分配给某组输入数据(例如电子邮件中的垃圾或非垃圾邮件)。
无监督学习最常见的应用是聚类和异常检测,一般来说,无监督学习主要聚焦在模式识别。其他应用包括主成份分析(PCA)和奇异值分解(SVD)的降维(减少数据变量的数量,简化模型的复杂性)。
尽管基础数据无标签,但是当标签、特征或配置通过无监督学习过程本身以外的过程应用于集群(分组)发现时,无监督学习技术就可以应用到有用的预测中。
无监督学习的挑战之一是没有特别好的方法来确定无监督学习生成模型的性能。输出全凭您对它的理解,没有正确或错误。这是因为数据中没有标签或目标变量,因此没有可用于比较模型结果的数据。尽管存在这种局限性,无监督学习仍然非常强大,并且有许多实际应用。
当无标签数据很丰富,而有标签数据不多时,半监督学习可以是一种非常有用的方法。
在涉及有标签和无标签数据的机器学习任务中,该过程接受数据输入并将其映射到某种类型的输出。大多数机器学习模型的输出非常简单,要么是一个数字(连续的或离散的,例如3.1415),要么是一个或多个类别(即类;例如“垃圾邮件”,“热狗”),要么是概率(例如35%的可能性)。
在更高级的人工智能案例中,输出可能是结构化的预测(即一组预测值而非单个值),预测的一系列字符和单词(例如短语、句子),或最近芝加哥小熊队比赛的人工生成简要报道(加油小熊!)
04 人工智能的定义和概念
前面给出了人工智能的简单定义,即机器展示的智能,其中包括机器学习和诸如深度学习之类的特定技术子集。在进一步明确人工智能的定义之前,我们先定义普通智能的概念。智能的定义是:
学习、理解和应用所学的知识来实现一个或多个目标。
因此,智能基本上是利用所学知识实现目标和执行任务的过程(对人类来说,例子包括决策、交谈和做事)。现在已经定义了普通智能,很容易看出人工智能只是机器展示的智能。
更具体地说,人工智能描述的是:当一台机器能够从信息(数据)中学习,产生某种程度的理解,然后利用所学知识去做一些事情。
人工智能领域涉及并从一些科学中吸取经验,包括神经科学、心理学、哲学、数学、统计学、计算机科学、计算机程序设计等。因为人工智能的基础及其与认知关系,它有时也被称为机器智能或认知计算;也就是说与形成知识和理解有关的心理过程。
更具体地说,认知和更广泛的认知科学领域是用来描述大脑的过程、功能和其他机制的术语,这些机制使收集、处理、存储和使用信息生成智能和驱动行为成为可能。认知过程包括注意力、知觉、记忆、推理、理解、思考、语言、记忆等等。其他相关的、更深层次的哲学概念包括思想、感觉、感受和意识。
那么是什么力量推动智能呢?对于人工智能应用,答案是以数据形式提供的信息。对于人类和动物来说,通过五官从经验和周围环境中不断收集新信息。然后把这些信息传递给大脑的认知过程和功能。
令人惊讶的是,人类还可以通过运用已有的信息和知识来理解和形成有关其他事物的知识,以及形成人们对新话题的想法和看法,例如,从大脑中学习已有的信息和知识。有多少次思考过一些已经理解了的信息,然后一个“啊哈!”导致对其他事物有了全新理解的时刻?
经验因素也严重影响人工智能。人工智能是通过利用给定任务的相关数据进行训练和优化过程实现的。随着新数据的出现,人工智能应用可以不断地更新和改进,这是人工智能从经验中学习的一面。
能够不断地从新数据中学习很重要,其原因很多。首先,世界及人类在不断地变化。新技术潮来潮往,创新不断出现,旧产业被颠覆。
例如今天网上购物的数据可能与您明天或几年后的完全不同。汽车制造商可能会开始问,什么因素对购买飞行车辆的贡献最大,或许不是目前正在日益普及和广泛使用的电动汽车。
最终,数据和从中训练出来的模型会过时,该现象被称为模型漂移。因此,通过不断学习新数据继续获得经验和知识,更新任何人工智能应用至关重要。
05 数据推动人工智能
人工智能、机器学习、大数据、物联网和任何其他形式的分析驱动的解决方案都有一个共同点:数据。事实上,数据为数字技术的各个方面提供了动力。
1. 大数据
世界从未像今天这样收集或存储过如此之多的数据。此外,数据的多样性、容量和生成速率正在以惊人的速度增长。
大数据领域是关于如何高效地从那些庞大、多样和快速移动的数据集中,有效地获取、集成、准备和分析信息。但是,由于硬件及计算条件的限制,从数据集中处理和提取数值可能不具备可行性或不可实现。
为了应对这些挑战,需要创新硬件工具、软件工具和分析技术。大数据是用来描述数据集、相关技术和订制工具组合的术语。
此外,如果没有某种形式的伴随性分析(除非数据是货币化的),任何类型的数据基本上都没有用途。除了前面给出的描述之外,人们还用大数据来描述在非常大的数据集上进行的分析,这可能包括诸如人工智能和机器学习之类的先进分析技术。
可以把数据从高层次分为结构化、非结构化和半结构化三类,如图4-4所示。
▲图4-4 数据类型
2. 特定的数据源
有许多特定类型的数据源,任何大型公司都有许多数据源在同时使用。某些类型的数据可以用于自动化和优化面向客户的产品和服务,而其他类型的数据更适合于优化内部应用。以下是一份可能的数据源清单,我们将逐一讨论:
- 客户
- 销售和营销运营
- 活动和交易
- 物联网
- 非结构化
- 第三方
- 公共
大多数公司都在使用客户关系管理工具(客户关系管理系统)。这些工具用来管理现有和潜在的客户、供应商和服务提供商之间的互动关系。
此外,许多客户关系管理系统工具可以采用本地部署或集成的方式来管理多种渠道的客户营销、通信、目标定位和个性化。因此,客户关系管理系统工具对于以客户为中心的人工智能应用来说是非常重要的数据源。
尽管许多公司使用客户关系管理系统工具作为其主要的客户数据库,但客户数据平台(CDP)工具(如Agilone),通过整合客户行为、参与度和销售方面的数据源,创建单一、统一的客户数据库。类似于数据仓库,客户数据平台(CDP)工具旨在供非技术人员使用,用于推动高效分析、洞见收集和目标营销。
销售数据即使不是公司最重要的数据,也应该是比较重要的数据。典型的数据源包括那些有实体营业网点的销售点数据、在线购物应用的电子商务数据以及服务销售的应收账款数据。许多实体公司也在网上销售产品,因此能够同时使用这两种数据源。
市场营销部门通过多个渠道向客户传达和提供报价,并生成相应的基于特定渠道的数据。常见的营销数据源包括电子邮件、社交、付费搜索、程序广告、数字媒体参与(如博客、白皮书、网络研讨会、信息图表)和移动应用通知推送。
运营数据以业务功能和流程为中心。示例包括与客户服务、供应链、库存、订购、IT(如网络、日志、服务器)、制造、物流和会计相关的数据。运营数据通常最适合用于深入了解公司的内部运营,改进甚至自动化流程,以实现诸如提高运营效率和降低运营成本等目标。
像软件即服务(SaaS)和移动应用这些主要围绕数字产品的公司,通常会生成和收集大量基于事件和事务的数据。
值得注意的是,尽管单个销售的数据可以被认为属于交易性质,但并非所有销售数据都与交易有关。事件和事务数据可以包括银行转账、提交应用、放弃在线购物车、用户交互和参与数据(如点击数流)以及由谷歌分析等应用收集的数据。
研究表明,随着物联网革命的全面展开,2025年将通过全球超过750亿台连接设备创造高达11万亿美元的经济价值。毋庸讳言,连接的设备和传感器所产生的数据量越来越大。这些数据对人工智能应用非常有价值。
公司还拥有大量非常有价值的非结构化数据,这些数据通常大都未被使用。前面讨论过的非结构化数据可以包括图像、视频、音频和文本。源于产品或服务的客户评论、反馈和调查结果等文本数据对于自然语言处理应用特别有用。
最后,公司通常会使用多个第三方的软件工具,这些工具可能没有在本节中提到。许多软件工具允许数据与其他工具集成,也可以导出以便于分析和转移。在许多情况下,可以购买第三方的数据。
最后,随着互联网的爆炸式增长和开放源码运动的开展,还可以使用大量免费、可用和非常有价值的公开数据。