本节书摘来自华章出版社《机器学习与R语言(原书第2版)》一书中的第1章,第1.4节,美] 布雷特·兰茨(Brett Lantz) 著,李洪成 许金炜 李舰 译更多章节内容可以访问云栖社区“华章计算机”公众号查看。
1.4 实践中的机器学习
到目前为止,我们已经讲述了理论上机器学习是如何工作的。为了把机器学习应用到真实世界的任务中,我们将采用由5个步骤构成的过程。不管你手头是何种任务,任何机器学习算法都能由下面这些步骤来实施:
1)数据收集:数据收集步骤包括收集算法用来生成可行动知识的学习材料。
大多数情况下,数据需要组合成像文本文件、电子表格或者数据库这样的单一数据源。
2)数据探索和准备:任何机器学习项目的质量很大程度上取决于它使用的数据的质量。因此在数据探索实践中了解更多的数据信息及细微之处是很重要的。还需要额外的工作来准备用于学习过程的数据。它包括修复或者清理所谓的“杂乱”数据,删除不必要的数据,重新编码数据从而符合学习者期望的输入类型。
3)模型训练:在已经准备好用于分析的数据时,你很可能已经有了希望从数据中学习到什么的设想。所选定的具体机器学习任务将告知你选择合适的算法,算法将以模型的形式来表现数据。
4)模型评价:由于每个机器学习模型将产生一个学习问题的有偏的解决方法,所以评价算法从经验中学习的优劣是很重要的。根据使用模型的类型,你应该能用一个测试数据集来评价模型的准确性,或者你可能需要针对目标应用设计模型性能的检验标准。
5)模型改进:如果需要更好的性能,就需要利用更加高级的方法来提高模型的性能。有时候,需要更换为完全不同的模型。你可能需要补充其他的数据,或者类似于上面第二个步骤中所做的那样,进行一些额外的数据准备工作。
在完成这些步骤以后,如果模型性能令人满意,就能将它应用到预期的任务中。有些情况下,为了预测(也可能是实时预测),你可能需要模型给出预测分数。例如,预测财务数据、对市场或者研究给出有用的见解,或者使诸如邮件投递或飞机飞行之类的任务实现自动化。部署的模型无论成功或者失败,它们都可能为训练下一代的模型提供进一步的数据。
1.4.1 输入数据的类型
机器学习实践涉及把输入数据的特征与可应用方法的偏差相匹配。所以,在把机器学习应用到真实世界问题之前,理解用以区别输入数据集的术语是很重要的。
术语观测单位(unit of observation)是用来描述学习感兴趣的测量属性的最小单位。一般来说,观测单位是以人、对象、事物、交易、时间点、地理区域或者测量单位的形式呈现的。有时,观测单位组合在一起构成一个单位,如人年,它表示同一个人在多个年份上被记录的情况,每一个人年由一个人在一个年份中的数据构成。
观测单位和分析单位有关,但是二者不是等价的。观测单位是进行推理的最小单位。尽管不是太常见,但观测单位和分析单位并不总是一样的。例如,人们观测到的数据可能用来分析不同国家的趋势。
可以把存储观测单位和它们属性的数据集看作由下面两个部分构成的数据集:
案例:记录了属性值的观测单位的实例。
特征:可能对学习有用的案例的属性或者特性。
通过真实世界的案例可以很容易地理解特征和案例。为了建立学习算法来识别垃圾邮件,观测单位就是邮件消息,案例就是具体消息,特征可能由消息中的字组成。对于一个癌症诊断算法,观测单位可能是病人,案例可能是癌症病人的一个随机样本,特征可能是活检细胞染色体数据以及病人的一些体征,比如体重、身高或者血压等。
尽管案例和特征无须以任何具体格式来收集,但它们通常以矩阵格式来呈现,它意味着每一个案例都有相同的特征。
下面的这个电子表格是一个矩阵格式的数据集。在矩阵数据中,电子表格的每一行表示一个案例,每一列表示一个特征。在这个表格中,行表示汽车的案例,每列记录了汽车的不同特征,例如汽车价格、行驶的英里数、车身的颜色、变速箱类型(手动或者自动)。尽管在后面的章节中,你将看到在特定的情况下偶尔会使用其他形式的数据,但矩阵格式的数据是目前机器学习中最常用的数据形式。
特征也分为很多种形式。如果一个特征所代表的特性是用数值来衡量的,那它毫无疑问称为数值型。另外,如果它所代表的属性是通过一组类别来表示的,这样的特征称为分类变量或者名义变量。分类变量中有一种特殊的类型—有序变量,它指分类变量的类别落在一个有序列表中。有序变量的例子包括衣服的尺码(小号、中号和大号)或者顾客的满意程度(级别从“完全不满意”到“很满意”)。考虑特征的表现形式很重要,因为数据集中特征的类型和数量有助于你找到一个适于你任务的机器学习算法。
1.4.2 机器学习算法的类型
机器学习算法可以按照其目的进行分类。理解学习算法的类型是应用数据来驱动行动最关键的一步。
预测模型,顾名思义,它用于这样的学习任务:利用数据集中的其他数值来预测另一个值。学习算法的目的是发现并且对目标特征(需要预测的特征)和其他特征之间的关系建模。尽管在通常情况下,使用“预测”这个词是用来暗示对未来的预测,但是预测模型不一定是预测未来的事件,它也能用来预测过去的事情,比如通过母亲的荷尔蒙数量来预测怀孕的日期。预测模型也可以用来实时控制高峰时段的交通信号灯。
因为预测模型对于“学什么”和“怎么学”有清晰的指导,所以训练一个预测模型的过程也称为有监督学习。监督并不是指需要人为干预,它是指让目标值担任监督的角色,让它告诉学习者要学习的任务是什么。更形式化地说,给出一组数据,有监督学习算法尝试最优化一个函数(模型)来找出属性值之间的组合方式,最终据此给出目标值。
常见的有监督学习任务是预测案例属于哪个类别,这类机器学习任务称为分类。不难想象分类的潜在用途。例如,你可以预测:
一封电子邮件是否为垃圾邮件。
一个人是否患癌症。
一个足球队是会赢还是会输。
一个申请人会不会贷款违约。
在分类中,被预测的目标特征是一个称为类(class)的分类特征,它可以被分为不同的类别,这些类别称为水平(level)。一个类能有两个或者多个水平,水平不一定是有序的。因为分类在机器学习中广泛运用,所以有很多种类型的分类算法,对不同类型的输入数据它们具有各自的优点和缺点。我们将在这一章和整本书中学习这样的例子。
有监督学习算法也可以用来预测数值数据,比如收入、试验数据、考试成绩或者商品数量。为了预测这类数值数据,能够拟合输入数据的线性回归模型是常见的数值预测模型。尽管回归模型不是唯一的数值模型,但至今为止它是应用最为广泛的模型。回归模型被广泛地应用于预测,因为它用表达式准确地量化了输入数据和目标值之间的关系,其中包括该关系的大小和不确定性。
因为可以容易地把数字转换为类别(例如,年龄在13~19岁之间的孩子归类为青少年)以及把分类数据转化为数字(例如,把男性标示为1,女性标示为0),所以分类模型和数值预测模型之间的界限不是太严格。
描述性模型通过新而有趣的方式总结数据并获得洞察,学习任务从这些洞察中受益。与需要预测目标值的预测模型不同,在描述性模型中,没有哪一个属性比其他属性更重要。事实上,因为没有要学习的目标,所以训练描述性模型的过程称为无监督学习。尽管思考描述性模型的应用更加困难,但是好的地方在于学习者没有特定的学习任务,这种方法在数据挖掘中经常使用。
例如,称为模式发现的描述性模型任务用来识别数据之间联系的紧密性。很多时候模式发现用来对零售商的交易购买数据进行购物篮分析(market basket analysis)。这里,目的是识别那些经常被一起购买的商品,使得学习信息能用来改进商场的销售策略。打个比方,如果一家零售商学习到游泳裤通常会和防晒霜一起购买,那么零售商就可能把这些商品摆放得更近一些,或者做一次促销把相联系的商品捆绑销售给顾客。
模式探索最初仅仅用在零售领域,如今它开始应用在一些新的领域。例如,它能用来发现犯罪行为的模式,甄别基因上的缺陷或者阻止犯罪活动。
描述性模型中把数据集按照类型分组的任务称为聚类。它有时候用于细分分析,即识别具有类似行为或者人口统计信息的人群,使得广告活动能够针对目标受众。尽管机器能识别各个类,但还是需要人工介入来解释各个类。打个比方,假设一家杂货店有5个不同类的顾客,营销团队需要了解各类之间的区别以便设置最适合各类的促销活动。
最后,称为元学习(meta-learner)的机器学习算法不与具体学习任务相关联,而是专注于学习如何更有效地学习。元学习算法应用某些学习的结果来指示其他的学习。这可能对非常有挑战性的问题,或者当预测算法的性能需要尽可能准确时是很有益的。
1.4.3 为输入数据匹配算法
下表给出了本书所讨论的机器学习算法类型。尽管这些算法仅仅覆盖了所有机器学习算法的一部分,但是学习这些算法将为你提供一个充足的基础,这样你在碰到其他算法时就能够理解它们。
为了开始把机器学习应用到真实世界的项目中,你需要确定学习任务属于下面4种类型的哪一种:分类、数值预测、模式识别或者聚类。学习任务将决定算法的选择。例如,如果你要进行模式识别任务,可能会应用关联分析。类似地,聚类问题可能会用k均值算法,而数值预测则会应用回归分析或者回归树。
对于分类来说,需要把精力花费在为学习问题找到合适的分类器。这时,考虑不同算法之间的各种差别是很有帮助的—深入学习每一种分类算法才能找出它们的明显区别。例如,在分类问题中,从决策树得到的模型就容易理解,而从神经网络得到的模型则很难解释。如果你要设计一个信用评分模型,上述区别就是一个很重要的差别,因为法律要求必须告知申请者贷款申请被拒绝的原因。即使神经网络算法能更好地预测贷款违约,但是如果不能解释这些预测,那么再好的预测也是没有用的。
为了有助于算法的选择,接下来的每一章都会给出各种方法的核心优势和劣势。尽管有时候你会发现这些特征在很多情况下使得某些模型被排除在考虑之外,但是模型的选择是带有随机性的。从这个角度来看,你可以自由使用那些自己有信心的算法。另外,当预测准确性是主要考虑因素时,你可能需要测试多个模型,然后选择一个拟合最好的;或者应用元学习算法来组合多个不同的学习算法,从而利用每个算法的优点。