1.3 实际应用
在本节中,我们将会介绍一些可用机器学习解决的实际问题,包括病人住院时间预测、信用分数估计、Netflix上的影片推荐和酒店推荐。每个例子都对应一类不同的机器学习问题。通过这些不同类型的机器学习问题,读者对机器学习可以有更多直观的感受。
1.3.1 病人住院时间预测
机器学习在医疗行业有着广泛的应用。我们以Heritage Health Prize②竞赛作为例子以说明如何使用机器学习来预测病人未来的住院时间。
在美国每年都有超过7000万人次住院。根据相关统计,2006年在护理病人住院上所花的无关费用就已经超过了300亿美元。如果我们能够根据病人的病历提前预测病人将来的住院时间,那么就可以根据病人的具体情况提前做好相关准备从而减少那些无谓的开销。同时,医院可以提前向病人发出预警,这样就能在降低医疗成本的同时提高服务质量。在从2011年开始的Heritage Health Prize竞赛(HHP)中,竞争者成功地使用机器学习的方法,由病人的历史记录预测了病人在未来一年的住院时间。图1-1显示了竞赛中使用的病历数据的一部分样本。
1.3.2 信用分数估计
在现实生活中,向银行申请贷款是比较常见的,如房屋贷款、汽车贷款等。银行在办理个人贷款业务时,会根据申请人的经济情况来估计申请人的还款能力,并根据不同还款能力确定安全的借款金额和相应的条款(如不同的利率)。在美国,每个成年人都有相应的信用分数(credit score),用来衡量和评估借款者的还款能力和风险。
在估计申请者的还款能力时,需要搜集用户的多个方面的信息,包括:
收入情况;
年龄、性别;
职业;
家庭情况,如子女数量等;
还款历史,包括未按时还款的记录、还款金额等;
现有的各种贷款和欠款情况等。
如何将这些因素综合考虑从而决定借贷者的信用分数呢?直观地讲,可以使用一些简单的规则来确定信用分数。例如,某申请者的当前借款金额很高但收入一定,则进一步借款的风险很高,信用分数将会较低;又如,某申请者的某张信用卡在过去经常没有按时还款,则其信用分数也会较低。虽然使用简单的规则能够大致解决信用分数估计的问题,但是这个办法最大的问题是不能自适应地处理大量数据。随着时间的变化,申请者不还款的风险模型可能会发生变化,因此,相应的规则也需要修改。
银行通常可以得到海量的申请者数据和对应的历史数据。利用机器学习的方法,我们希望可以从这些申请者过去的还款记录中自适应地学习出相应的模型,从而能够“智能”地计算申请者的信用分数以了解贷款的风险。具体地讲,在机器学习模型中,将申请者的信息作为输入,我们可以计算申请者在未来能够按时还款的概率。作为一个典型的例子,FICO分数③就是美国FICO公司利用机器学习模型开发出来的一个信用分数模型。
1.3.3 Netflix上的影片推荐
Netflix是美国的一家网络视频点播公司,成立于1997年,到2015年该公司已经有了近7000万的订阅者,并且在世界上超过40个国家或地区提供服务。Netflix上的一项很重要的功能是根据用户的历史观看信息和喜好推荐相应的影片,如图1-2所示。2006年10月至2009年9月,Netflix公司举办了Netflix Prize④比赛,要求参赛者根据用户对于一些电影的评价(1星~5星),推测用户对另外一些没有看过电影的评价。如果能够准确地预测用户对于那些没有看过的电影的评价,就可以相应地向这些用户推荐他们感兴趣的电影,从而显著提高推荐系统的性能和Netflix公司的盈利水平。
在Netflix Prize比赛中,获胜的标准是将Netflix现有推荐系统的性能提高10%。在2009年,BellKor's Pragmatic Chaos队赢得了比赛。其主要方法是基于矩阵分解的推荐算法,并使用集成学习的方法综合了多种模型。Netflix Prize比赛显著地推动了推荐算法的研究,特别是基于矩阵分解的推荐算法的研究。在本书中,我们也将详细介绍这些推荐算法。
1.3.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.5 讨论
上文中的4个例子分别对应于机器学习中的4类典型问题:
回归(regression);
分类(classification);
推荐(recommendation);
排序(ranking)。
在第一类问题中,首先需要为每个病人构建一个特征向量x,然后构建一个函数f,使得可以用f(x)来预测病人的住院时间y。注意,这里要预测的量(病人的住院时间y)的范围是0~365(或者366),我们可以将其转化为回归问题。在回归问题中,目标变量是一个连续值。
在第二类问题中,需要为每个申请者构建一个特征向量x,而输出y是0或者1,代表批准贷款或者不批准贷款。事实上,输出y也可以是批准的概率。这是机器学习中典型的分类问题。在分类问题中,目标变量y是一个离散变量。与回归问题类似,我们的目标是构建一个函数f,使得f(x)可以预测真实的y。在典型的两类分类(binary classification)问题中,目标变量的取值为0或者1(有时是−1或者1)。在多类分类(multi-class classification)问题中,我们有多个类,而目标变量的取值是其中之一。
在第三类问题中,需要根据用户过去的历史为每个用户推荐相应的商品,这是一个典型的推荐问题。与回归和分类问题相比,我们需要为每个用户返回一个感兴趣的商品序列。
在第四类问题中,需要根据用户的输入(在上文的例子中是用户对于酒店的查询),从一系列对象(在这个例子中是酒店)中根据用户的需要返回一个对象的序列,使得该序列最前面的对象是用户最想要的。这类问题称为排序(ranking)问题。同前面的回归问题和分类问题相比,排序问题需要考虑整个返回序列。与前面的影片推荐例子相比,在排序问题中我们需要明确的用户输入,而在影片推荐中我们只是根据用户过去的历史信息来进行推荐,用户没有进行明确的输入。
在实际应用中,机器学习的应用远远超出上面的几个例子。例如,近期非常热门的AlphaGo,谷歌公司在其中使用了深度学习(deep learning)来学习围棋对弈;德国的蒂森克虏伯(ThyssenKrupp)集团作为电梯的主要制造商之一,应用机器学习来预测电梯发生故障的时间从而提前维修,降低电梯的综合运营成本;美国的很多大型零售商在开设新店时,都要搜集各个地区的各种信息和历史销售数据,通过建立机器学习模型的形式选择最优的店址。