数据科学中的语法可能会混淆和重叠。根据定义,深度学习是机器学习的组成部分,但我们所说的深度学习是指那些使用更复杂的神经网络的模型。深度学习需要更多的计算力、更多的时间和更多的数据才能成功。通常情况下,更简单的机器学习模型的表现同样出色,有时甚至更好。在光鲜亮丽的神经网络面前,不要忽视那些简单的机器学习模型。
大部分数据科学家把大部分时间都花在寻找、清洗和整理海量数据上。据估计,数据科学家们将80%的时间都花在这些没有回报的任务上。对于研究SAP数据的数据科学家来说,我们有一个好消息。SAP是一个ERP系统。数百万行的业务数据已经录入关系型数据库中。尽管这并不意味着不需要清洗和重组等工作,但它确实减轻了这方面的工作。我们将展示如何查找和提取这些数据,但通常只需要很少的清洗或整理工作。
机器学习大致可分为以下四类类型:
·有监督机器学习
·无监督机器学习
·半监督机器学习
·增强学习
深度学习是机器学习的一个分支,同样也包括机器学习的这些类别。本书主要讨论的是机器学习,而不是深度学习这一分支。后面我们还将单独讨论深度学习。关于机器学习的学术术语会有不少重叠和混淆。如果关注机器学习的相关新闻,你会发现世界上没有两个人以同样的方式使用相同的术语,所以不要为术语的混淆而难过。
有监督机器学习是在标记数据完成的。有监督机器学习擅长分类工作,能对一组数据的类别进行分类或预测。例如,在市场营销中,它可能确定顾客将要购买哪种商品。有监督机器学习在预测方面也很有效。预测是从一组数据中确定具体数值的方法。使用同样的例子,在市场营销中预测方法可以用来判断顾客的花费是多少。例如,著名的鸢尾花(Iris)数据集包含150组花瓣长度、花瓣宽度、萼片长度和萼片宽度等信息,通过这些数据可以识别鸢尾花的品种。如果根据这些数据训练一个分类模型,给定新的鸢尾花萼片和花瓣数据,就可以准确地预测其品种了。我们来详细看一下一些不同类型的有监督机器学习模型。
线性回归
线性回归是对一个相关变量与一个或多个解释变量之间的关系进行建模的方法。房子的价格和面积之间的关系就是一个很好的例子(见图2-1)。假如你有一些房价和对应面积(平方英尺)的数据,如果知道房子的面积,就可以推测未知房子的价格了。当然,房子的价格不单单与面积有关,可是你应该明白它们间的关系了。
图2-1:房价与面积的线性回归
逻辑回归
与线性回归一样,逻辑回归也使用相同的基本公式。只不过逻辑回归得到的是分类类别,而线性回归得到的是连续数值。同样使用房屋价格的例子,线性回归能够用来确定房屋价格,而逻辑回归可以用来判断是否该出售房屋。
决策树
决策树是一种简单地提出问题并做出决策的建模方法。决策树的节点提出一些问题,这些问题可能引向其他节点,也可能指向分类或预测的最终节点(叶节点),如图2-2所示。
图2-2:吃饼干的决策树
随机森林
随机森林由一组决策树组成,它们有助于解决决策树的最大难题:过拟合(见图2-3)。过拟合的模型非常善于解决它已经知道的问题,但当引入新数据时,它就会失败。你可以把它想象成这样一个场景:把自己训练成世界级的一级方程式赛车手,但是从来不学怎么停车
。
你可能已经猜到了,无监督机器学习没有标记数据。也就是说,你有一堆数据,但是并不知道输出标签。例如,你有一组包含年龄、性别、收入、职业和其他特征的投票记录,但不知道这些特征信息之间的关系。让我们来看几种不同类型的无监督机器学习方法。
图2-3:随机森林
k-means聚类
如图2-4所示,k-means聚类接收数据,并将这些数据点分成一定的组。例如,可以根据购买频率将一群顾客进行分组。分组的一种方法是使用最接近的平均值。如果使用像Levenshtein距离这样的非欧氏距离
,它也适用于词语分组。我们将在第7章对此进行更深入的讨论。
图2-4:k-means聚类示意图
朴素贝叶斯
朴素贝叶斯不是单一的算法,而是基于贝叶斯定理家族分类算法的集合(见图2-5)。通常的概念是,数据的每一项特征与其他特征都是相互独立的。例如,汽车有引擎盖、后备厢、轮子和座椅。朴素贝叶斯认为所有这些特征都是物体是汽车的概率的独立贡献者。朴素贝叶斯速度非常快,通常是机器学习任务第一个要尝试的分类器。
图2-5:贝叶斯定理
贝叶斯定理的术语简单说明如下:
P(c|x)
给定数据x,假设c为真的概率。
P(x|c)
如果假设c为真,则数据x出现的概率。
P(c)
不管数据怎样,假设c为真的概率。
P(x)
数据x出现的概率。
这是关于贝叶斯的一个常见解释,它随处可见。但还是有点难以理解,所以还是简化一下吧。
我们使用乳腺癌的例子对贝叶斯做一个非常通俗直观的解释。想象一下这样的场景:一个病人去医生那里做检查,发现乳腺X光检查结果不正常。病人患癌症的概率有多大?你可能凭直觉认为一定是癌症,因为检查结果显示就是癌症。但是将Bayes理论应用到这个场景,则会显示出不同的情况。让我们来看一看。
考虑以下统计数据
·参加常规检查的40岁女性中,有1%的人患有乳腺癌,99%的人没有患这种病。
·如果一个妇女患乳腺癌,X光检查结果为阳性的概率为80%,有20%的概率检测不出来。
·9.5%的X光检查结果呈假阳性,即没有患癌症时,也被检测出癌症。也就是说,没有患乳腺癌的人有89.5%的概率没检测出癌症(真阴性)。
·事件发生的概率等于事件本身除以所有可能发生的事件。
P(c|x)=0.1*0.8/[(0.99*0.095)+(0.01*0.8)]=0.0776
直觉上来说,你会听到乳腺癌X光检查有80%的准确率,所以结果呈阳性意味着有80%的机会患乳腺癌。但事实上,即使结果是阳性,也只有7.8%的概率得癌症。
层次聚类
层次聚类是一种将结果分组成树状图的聚类方法(见图2-6)。如果从多个簇开始,然后移动到一个簇,就称为聚集。如果它从一个簇开始,移动到多个簇,则称为分裂。分裂法通过计算样本特征之间的最大差异(或距离)来划分给定的簇。而聚集法则恰恰相反,它计算所有簇之间的差异,并将两个特征距离最短的簇合并起来。它们将一直执行,直到没有数据或树状图分裂到预定义的次数。我们将在第7章进行更详细的讨论。
图2-6:层次聚类的聚集和分裂
半监督机器学习是有监督学习和非监督学习的结合。在这个场景中,你有很多数据,但并不是所有的数据都有标签。考虑一下欺诈检测的场景,信用卡公司和银行有大量的交易数据,其中一些交易数据被正确地标记为欺诈行为。然而,他们并不知道所有的欺诈交易。理想情况下,他们会手工正确地标记所有的欺诈交易。然而,这个过程并不现实,而且会花费太多的时间和精力。现在有一小部分标记数据和一大部分未标记的数据。在半监督学习中,一种常用的技术叫作伪标记(pseudo-labeling)。在此过程中,使用传统的有监督学习方法对标记数据进行建模。一旦模型被构建和调优,未标记的数据输入模型并获得标签。最后,使用标记过的数据和新的伪标记数据再次训练模型,如图2-7所示。
图2-7:半监督学习的伪标记
强化机器学习是指训练模型时,在不断试错的基础上做决策。模型通过从过去的成功和失败中学习,与环境进行交互,然后决定下一次尝试或迭代的行动路线。它的工作原理是以奖励最大化为前。最常见的例子就是训练机器玩游戏。让我们来详细了解一下不同类型的强化学习。
隐马尔可夫模型
隐马尔可夫模型(HMM)是一系列观测结果,传入的模型通过给定的状态来产生这些结果。这有点令人困惑,所以让我们澄清一下。在HMM中,你不能直接观察状态,但是可以观察这些状态的结果。你在一间没有窗户的办公室里工作,无法看到外面的天气。当人们出现在办公室时,你可以看到他们的穿着。假如有75%的人都带着雨伞,你可以肯定外面在下雨。HMM是识别序列和时间序列的常用方法。它们不看真实的状态,相反,它们关注的是真实状态的结果。最简单的模型假设每个观测值都是独立的。然而,HMM假定观测值之间存在某种关系。作为另一个例子,我们观察到一系列的天气数据。这些数据包括气压、温度和日期等特征。相应的结果数据有两种状态:“非多云”或“多云”。连续观测多日,该模型不仅根据今天的观测特征,还根据前几天的特征来预测天气状态。HMM试图找出最可能的潜在未知序列来解释所观察到的序列。
这个概念有点复杂,我们再举一个例子。假设你想要使用HMM来确定公司的小部件采购订单数量是增加还是减少。SAP有一个带有时间戳的采购订单数据历史记录。它也有其他可能会影响何时进行小部件下单的状态。这些状态包括销售订单、一年中的时间(季节性)、仓库库存水平、生产订单。每一个状态都可以被HMM使用。可以这样想:“过去的行为预示着未来的行为”。
Q-learning
Q-learning是一种基于价值的强化学习算法,它是以动作的质量为基础的。Q-learning通过几个步骤来优化它的结果(见图2-8)。在某种程度上,它建立了一个秘密的作弊表,指导它该如何表现。在玩游戏的例子中,它采取一个动作,评估这个动作,根据动作是否正确更新它的作弊表,然后再次尝试。它迭代的速度快得惊人。
图2-8:Q-learning的学习步骤
一个常见的例子是关于狗的游戏,狗的任务是寻找一堆骨头。狗每走一步都要消耗一根骨头。如果碰到那只讨厌的猫,就会失去10根骨头并死亡(见图2-9)。我们的目标是最大化获得的骨头数量。
图2-9:狗寻找最多骨头的Q-learning
对我们来说,这似乎是一个简单的游戏,但计算机却不知道如何开始。于是,它首先向下移动,得到两块骨头。嘿!伙计,这一步很不错。它记录这个动作,向右移动一步。哦,该死的猫…游戏结束。它用这些信息更新作弊表。下一次,它先向右移动一步,然后再向右移动,然后就只剩向下的选择了。是的,居然是一大堆骨头!!注意,每一步都有骨头数-1的代价。结果是-1+2-1-1+1-1-1+10=8。它记录结果并再次尝试。这次它首先选择向右移动,因为它知道这里有+1的奖励。它再次采取向右的动作,然后向下移动,找到最大的一堆骨头。结果是-1+1-1-1+10=8。这两种路径结果相同,如果对步数有奖励或限制的话,则第2种方法将胜出。
你可能会想:“太酷了,但是除了游戏,这会适用于其他的事情吗?”以斗牛犬寻找骨头的路线为例。现在想象一个简单的仓库,可以大大扩展它(见图2-10)。强化学习可以缩短拣货、包装和入库的中转时间,同时优化对空间的利用。这个任务比较复杂,但从根本上说,与狗寻找骨头的游戏是一样的。
图2-10:仓库比狗找骨头要复杂得多,但通过强化学习进行寻路也是可行的