随着计算机和互联网越来越深入到生活中的方方面面,人们搜集到的数据也呈指数级的增长。在这种情况下,大数据( big data )应运而生。大数据通常体量特别大,而且数据比较复杂,使得无法直接使用传统的数据库工具对其进行存储和管理。大数据带来了很多挑战,如数据的搜集、整理、存储、共享、分析和可视化等。广义的大数据处理涵盖了上述所有领域;狭义的大数据更多是指如何使用机器学习来分析大数据,从海量的数据中分析出有用的信息。
大数据分析的核心是机器学习算法。很多时候,我们有足够的数据,但是对如何利用这些数据缺乏理解。同时,实际问题往往比较复杂,并不能直接套用机器学习算法,我们需要对实际问题进行一些转化,使得机器学习算法可以应用。虽然实际问题表现形式各异,但是在将它们转化为机器学习能够处理的问题时一般转化为如下4类问题: (1)回归问题; (2)分类问题; (3)推荐问题; (4)排序问题。这4类问题是实际应用中最主要的类型,覆盖了大部分实际问题。在1.3节,我们将详细介绍每类问题的具体例子。
1.1什么是机器学习
机器学习( machine learning )是计算机科学的一个分支,也可以认为是模式识别( pattern
recognition )、人工智能( artificial intelligence )、统计学( statistics )、数据挖掘( data mining )等多个学科的交叉学科。机器学习与数值优化( numerical optimization )也有很高的重合度。
机器学习研究如何从数据中学习出有效的模型,进而能对未来作出预测。例如,如果商店能够预测某件商品在未来一段时间的销售量,就可以提前预订相应数量的商品,这样既可以避免缺货,又可以避免进太多货而造成积压。与传统的决策算法不同的是,机器学习算法依赖于数据。在前面的例子中,我们要从历史数据中学习出相应的模型以对未来进行预测。这样做有两个好处:第一,由于算法依赖于数据,可以使用新的数据来不停地更新模型,使得模型能够自适应地处理新的数据;第二,对人的介入要求少。在使用机器学习的过程中,虽然也会尽量利用人的经验,但更多地强调如何利用人的经验知识从数据中训练得到更好的模型。
目前,机器学习已成为研究和应用的热点之一。一些能够使用机器学习解决的实际问题包括:
根据信用卡交易的历史数据,判定哪些交易是欺诈交易;
从字母、数字或者汉字图像中有效地识别出相应的字符;
根据用户以往的购物历史来给用户推荐新的商品;
根据用户当前的查询和以往的消费历史向其推荐适合的网页、商品等根据汽车的发动机排量、年份、类型、重量等信息估计汽车的耗油星。
虽然这些问题的具体形式不同,但是均可转化成机器学习可以解答的问题形式。
从概念上讲,在机器学习中,我们的目标是从给定的数据集中学习出一个模型,使得它能够有效地从输数据中预测我们感兴趣的量。根据问题的不同,我们感兴趣的量(或者叫目标值)可以有不同的形式。例如,在分类问题中,目标值就是若干类别之一;在排序问题中,目标值就是关于文档的一个序列。
在机器学习中,通常我们解决问题的流程如下:
(1)搜集足够多的数据;
(2)通过分析问题本身或者分析数据,我们认为模型堤可以从数据中学习出来的;
(3)选择合适的模型和算法,从数据中学习出模型f;
(4)评价模型f,并将其利用在实际中处理新的数据。
在实际中,还需要根据应用的实际情况及时更新模型例如,若数据发生了显著变化,则需要更新模型t。因此,在实际部署机器学习模型时,上面的第3步和第4步是一个循环反复的过程。
一个经常与机器学习同时提起的相关领域是数据挖掘( data mining )。数据挖掘和机器学习在很多时候都被(不严格地)混用,因为这两者有很多重叠的地方。传统意义上,机器学习更加注重于算法和理论方面,而数据挖掘更加注重实践方面。数据挖掘中的很多算法都来自于机器学习或者相关领域,少数来自于数据挖掘领域,如关联规则( association rule )。
另一个与机器学习关联很深的领域是统计学。在统计学中,我们学习了很多传统的处理数据的方法,包括数据统计量的计算、模型的参数估计、假设检验等。但在实际问题中,很多情况下我们并不能直接使用统计学中的方法来解决问题。一方面,随着数据规模的扩大,统计学中很多传统的数据分析方法需要通过大量的计算才能得到结果,时效性不高;另一方面,传统的统计学方法更多地考虑了算法在数学上的性质,而忽略了如何在实际中更好地应用这些算法。
1.2实际应用
在本节中,我们将会介绍一些可用机器学习解决的实际问题,包括病人住院时间预测、信用分数估计、Nettix上的影片推荐和酒店推荐。每个例子都对应一类不同的机器学习问题。通过这些不同类型的机器学习问题,读者对机器学习可以有更多直观的感受。
1.2.1 病人住院时间预测
机器学习在医疗行业有着广泛的应用。我们以Heritage Health Prize竞赛作为例子以说明如何使用机器学习来预测病人未来的住院时间。
在美国每年都有超过7000万人次住院。根据相关统计, 2006年在护理病人住院上所花的无关费用就已经超过了300亿美元。如果我们能够根据病人的病历提前预测病人将来的住院时间,那么就可以根据病人的具体情况提前做好相关准备从而减少那些无谓的开销。同时,医院可以提前向病人发出预警,这样就能在降低医疗成本的同时提高服务质量。在从2011年开始的Heritage Health Prize竞赛( HHP )中,竞争者成功地使用机器学习的方法,由病人的历史记录预测了病人在未来一年的住院时间。图1-1显示了竞赛中使用的病历数据的一部分样本。
图1-1 病历数据示例
1.2.2信用分数估计
在现实生活中,向银行申请贷款是比较常见的,如房屋贷款、汽车贷款等。银行在办理个人贷款业务时,会根据申请人的经济情况来估计申请人的还款能力,并根据不同还款能力确定安全的借款金额和相应的条款(如不同的利率)。在美国,每个成年人都有相应的信用分数( credit score ) ,用来衡量和评估借款者的还款能力和风险。
在估计申请者的还款能力时,需要搜集用户的多个方面的信息,包括:
收入情况;
年龄、性别;
职业;
家庭情况,如子女数量等;还款历史,包括未按时还款的记录、还款金额等;现有的各种贷款和欠款情况等。
如何将这些因素综合考虑从而决定借贷者的信用分数呢?直观地讲,可以使用一些简单的规则来确定信用分数。例如,某申请者的当前借款金额很高但收入一定,则进一步借款的风险很高,信用分数将会较低;又如,某申请者的某张信用卡在过去经常没有按时还款,则其信用分数也会较低。虽然使用简单的规则能够大致解决信用分数估计的问题,但是这个办法最大的问题是不能自适应地处理大量数据。随着时间的变化,申请者不还款的风险模型可能会发生变化,因此,相应的规则也需要修改。
银行通常可以得到海量的申请者数据和对应的历史数据。利用机器学习的方法,我们希望可以从这些申请者过去的还款记录中自适应地学习出相应的模型,从而能够“智能”地计算申请者的信用分数以了解贷款的风险。具体地讲,在机器学习模型中,将申请者的信息作为输入,我们可以计算申请者在未来能够按时还款的概率。作为一个典型的例子, FICO分数就是美国FICO公司利用机器学习模型开发出来的一个信用分数模型。
1.2.3 Nettix上的影片推荐
Netflix是美国的一家网络视频点播公司,成立于1997年,到2015年该公司已经有了近7000万的订阅者并且在世界上超过40个国家或地区提供服务。Netflix上的一项很重要的功能是根据用户的历史观看信息和喜好推荐相应的影片,如图1-2所示。2006年10月至2009年9月, Netflix公司举办了Netflix Prize比赛,要求参赛者根据用户对于一些电影评价(1星~5星) ,推测用户对另外一些没有看过电影的评价。如果能够准确地预测用户对于那些没有看过的电影的评价,就可以相应地向这些用户推荐他们感兴趣的电影,从而显著提高推荐系统的性能和Netflix公司的盈利水平。
图1-2 Netflix上的电影推荐
在Netflix Prize赛中,获胜的标准是将Netflix现有推荐系统的性能提高10%。在2009年, Bellkor's Pragmatic Chaos队赢得了比赛。其主要方法是基于矩阵分解的推荐算法,并使用集成学习的方法综合了多种模型。Netflix Prize比赛显著地推动了推荐算法的研究,特别是基于矩阵分解的推荐算法的研究。在本书中,我们也将详细介绍这些推荐算法。
1.2.4 酒店推荐
Expedia是目前世界上最大的在线旅行代理( online travel agency , OTA )之一。它的一项很重要的业务是向用户提供酒店预订,作为用户和大量酒店之间的桥梁。对于用户的每个查询, Expedia需要根据用户的喜好,提供最优的排序结果,这样用户能够方便地从中选出最合适的酒店。
Expedia于2013年年底与国际数据挖掘大会( International Conference on Data Mining , ICDM )联合举办了酒店推荐比赛。在该项比赛中, Expedia提供了实际数据,包括用户的查询以及其对所推荐结果点击或者购买的记录。在进行酒店推荐时, Expedia考虑了如下因素:
用户的位置和酒店的位置;
酒店的特征,如酒店的价格、星级、位置吸引程度等;
用户过去预订酒店的历史,包括价格、酒店类型、酒店星级;·其他竞争对手的信息。
根据用户的查询及用户的背景信息, Expedia返回推荐的酒店序列。在Expedia.com上,典型的酒店搜索界面如图1-3所示。根据返回的推荐结果,用户有3种选择: (1)付款预定推荐的酒店; (2)点击推荐的酒店但没有预订; (3)既没有点击也没有预订。显然,根据用户的反应,我们希望在理想的酒店推荐结果中,对应于第一种选择的酒店能够排在最前面,并且对应于第二种选择的酒店排在对应于第三种选择的酒店前面。
图1-3 在Expedia.com上搜索酒店
1.2.5讨论
上文中的4个例子分别对应于机器学习中的4类典型问题:
回归( regression ) ;
分类(classification ) ;
推荐(recommendation ) ;
排序(ranking)。
在第一类问题中,首先需要为每个病人构建一个特征向量x,然后构建一个函数,使得可以用(x)来预测病人的住院时间y。注意,这里要预测的星(病人的住院时间y)的范围是0-365 (或者366) ,我们可以将其转化为回归问题。在回归问题中,目标变量是一个连续值。
在第二类问题中,需要为每个申请者构建一个特征向量x,而输出y是0或者1,代表批准贷款或者不批准贷款。事实上,输出y也可以是批准的概率。这是机器学习中典型的分类问题。在分类问题中,目标变量y是一个离散变量。与回归问题类似,我们的目标是构建一个函数f,使得fx)可以预测真实的v。在典型的两类分类( binary classification )问题中,目标变量的取值为0或者1 (有时是-1或者1 )。在多类分类( multi-classclassification )问题中,我们有多个类,而目标变量的取值是其中之一。
在第三类问题中,需要根据用户过去的历史为每个用户推荐相应的商品,这是一个典型的推荐问题。与回归和分类问题相比,我们需要为每个用户返回一个感兴趣的商品序列。
在第四类问题中,需要根据用户的输入(在上文的例子中是用户对于酒店的查询) ,从一系列对象(在这个例子中是酒店)中根据用户的需要返回一个对象的序列,使得该序列最前面的对象是用户最想要的。这类问题称为排序(ranking )问题。同前面的回归问题和分类问题相比,排序问题需要考虑整个返回序列。与前面的影片推荐例子相比,在排序问题中我们需要明确的用户输入,而在影片推荐中我们只是根据用户过去的历史信息来进行推荐,用户没有进行明确的输入。
在实际应用中,机器学习的应用远远超出上面的几个例子。例如,近期非常热门的AlphaGo ,谷歌公司在其中使用了深度学习( deep learning )来学习围棋对弈;德国的蒂森克虏伯(ThyssenKrupp )集团作为电梯的主要制造商之一,应用机器学习来预测电梯发生故障的时间从而提前维修,降低电梯的综合运营成本;美国的很多大型零售商在开设新店时,都要搜集各个地区的各种信息和历史销售数据,通过建立机器学习模型的形式选择最优的店址。
本文节选自《实用机器学习》
本书围绕实际数据分析的流程展开,着重介绍数据探索、数据预处理和常用的机器学习算法模型。本书从解决实际问题的角度出发,介绍回归算法、分类算法、推荐算法、排序算法和集成学习算法。本书的最大特色就是贴近工程实践。首先,本书仅侧重介绍当前工业界最常用的机器学习算法,而不追求知识本身的覆盖面;其次,本书在介绍每类机器学习算法时,力求通俗易懂地阐述算法思想,而不追求理论的深度,让读者借助代码获得直观的体验。