本节书摘来异步社区《机器学习与数据科学(基于R的统计学习方法)》一书中的第1章,第1.2节,作者:【美】Daniel D. Gutierrez(古铁雷斯),更多章节内容可以访问云栖社区“异步社区”公众号查看。
1.2 机器学习的实际案例
在本节内容中,我将向大家展示一些使用机器学习解决日常问题的例子。在学习这些案例之前,查看项目最初的需求,回顾数据集和每一个特征变量,并搞清楚如何判断解决方案是否成功,会让你的阅读事半功倍。阅读完本书之后,你甚至可以尝试自己的解决方案。为了做这些事情,我将特别推荐Kaggle(www.kaggle.com)的数据挑战赛,它的金钱奖励已经吸引了全世界成千上万的数据科学家进行挑战。
在这些数据科学挑战中,参赛者为了寻找成功的解决方案,需要考虑以下问题。
1.为谁解决问题?解决什么问题?
2.现在这个问题是怎么解决的(如果已经有解决方案的话)?
3.针对这个问题,可用的数据集是什么?这些数据集的来源是哪里?
4.解决方案的结果如何展现(如商业智能仪表盘、在线应用中引入算法、一份静态管理报告等等)?
5.这是什么类型的问题:为了降低收入流失(节流)还是增加收入(开源)?
在不同的比赛中,算法的评估方法也不尽相同。最常用的方法是将均方根误差(RMSE)的值降到最小,这一数值用于评价测试集的预测结果是否准确。RMSE评价法会在第7章进行更深入的解释。另一种常用的评估方法是AUC,即ROC曲线下的面积。
Kaggle挑战赛的一些赞助商也会参与比赛,有些为了获得产品或服务的新的发展方向,有些为了招聘比赛中的赢家。对于你,一个上升期的数据科学家来说,这些挑战赛可以当做是磨炼技能的优秀训练场。
1.2.1 预测回头客挑战赛
品牌商为了吸引新客户购买商品,经常举办打折活动。在最初的激励性购买后,重复购买商品的回头客对品牌方来说是最有价值的。有足够多的购物记录之后,可以预测在一次促销活动中,哪些顾客会再次购买商品。然而,在第一次购物之前就鉴别哪些顾客会成为忠诚的买主,这是一项更有挑战性的工作。
预测回头客挑战赛(Acquire Valued Shoppers Challenge)需要挑战者预测哪些顾客最可能成为回头客。为了增强算法的准确性,参赛的数据科学家得到了参与促销活动的大量顾客的完整购物记录,包括购买产品的类型和价格。比赛组织者也为顾客提供了初次购物和再次购物的激励。这个比赛的奖金是30000美元。
这个项目提供了超过30万名匿名顾客的将近3亿5千行交易记录数据,解压后达到22GB,大大超过了普通笔记本电脑的容量。在这一量级下,这个项目可以看做是“大数据”项目,所以,一个著名的供应商为参赛者提供了一个特别的工具。Revolution Analytics(Microsoft)公司为参赛者免费提供了亚马逊云服务(AWS,Amazon Web Services)下的R集成开发环境。有了AWS下的Linux机器的助力,内存容量可达到64GB,参赛者可以使用R集成开发环境下的并行外部存储算法。这个挑战赛是现实生活中数据项目的大小指数型增长带来的挑战的一个体现。
在图1-1的散点图中,展示了客户重复去商店的次数,x轴是商品的报价,数据点通过商场地理位置的不同来进行着色。
![9056ec710e290cb27856bee565d7e0ad2ea8c124](https://i-blog.csdnimg.cn/blog_migrate/8efaee682651034e6566231c79e332b9.png)
1.2.2 Netflix公司
第一个著名的数据科学比赛可能是Netflix公司赞助的。这个著名的Netflix奖力图大幅度地提升预测的精确度:基于用户的观影偏好,预测他喜爱一部电影的程度。在2009年9月21日,Netflix公司给BellKor’s Pragmatic Chaos队授予了100万美元的特等奖。BellKor队险胜The Ensemble队,他们的获胜作品在这个接近3年的比赛结束前的24分钟才提交。
用来解决Netflix奖的机器学习算法以均方根误差(RMSE,root mean square error)来衡量算法的好坏。均方根误差除了是一个众所周知的度量标准和数值之外,还有一个有用的性质:它可以放大极端误差带来的影响,无论是假阳性还是假阴性。这是理解任何推荐系统的重要性质。当然,简单的预测精度指标并不能概括在做推荐时很多其他重要的方面。举个例子,它不能预测推荐的顺序。不过,该队使用了特别的措施来降低均方根误差来赢得比赛。最终,获胜的解决方案将Netflix的推荐算法精确度提升了10%。
BellKor队的Netflix奖的解决方案涉及了很多机器学习的高新技术:协同滤波、用时间动力学进行矩阵分解、受限的玻尔兹曼机(RBM,Restricted Boltzmann Machines)、一个基于梯度提升决策树(GBDT,Gradient Boosted Decision Trees)的混合算法和一些用于特征工程的持久算法。这些方法超出了本书的讨论范围,但是通过看入围方案,你能学到很多。你可以在www.netflixprize.com下载介绍前4名入围方案的论文。
有趣的是,获得Netflix奖的解决方案事实上没有部署成功。因为在生产环境下,该算法的伸缩性不好。它无法及时处理庞大的Netflix数据集以获得结果。但是Netflix奖的无功而返让我们对一个可行的机器学习解决方案的组成要素有了更深刻的理解——虽然精确度显然是很重要的,但它必须在生产中衡量才有意义。最后,公司发现为了提升的精度将这一算法部署到生产环境中并不值得。
1.2.3 算法交易挑战赛
算法交易挑战赛(Algorithmic Trading Challenge)是一个预测比赛,致力于发掘新模型来预测股票市场在大额交易后的短期反应。参赛者被要求使用经验模型来预测在例如“流动性冲击”之后的买入和卖出行为。通过提高模拟“回溯测试”的实时性,对市场弹性进行建模,旨在提高交易策略的评估方式。现在的方案都是基于市场没有弹性的假设。这一挑战赛的解决方案需要对模型中各种各样的市场动态有明确的认识。
这个58天的挑战赛,在2012年1月结束,吸引了111支队伍争夺10 000美元奖金。这个挑战赛是资本市场合作研究中心赞助的,这是一个驻澳大利亚的集科研人员、高校师生和工业界合作伙伴于一体的集团。
参赛者为了寻找最优解使用了各种各样的机器学习算法:线性回归、K-最近邻、支持向量机、随机森林、k-均值和各种组合算法。参赛算法使用均方根误差对预测的性能进行评估,计算在流动性冲击之后,每次买入和卖出报价。获胜的是在整个预测集中累计的均方根误差最低的一个算法。获奖者叫Ildefons Magrans,是一名来自西班牙的机器学习博士后研究员,拥有电子工程博士学位。他使用了R中的随机森林来降低均方根误差指标。
1.2.4 Heritage健康奖
这个机器学习难题可能是所有Kaggle挑战赛的“祖师爷”,因为参赛的队伍数目和获胜的奖金数目都十分惊人。HPN(Heritage Provider Network)赞助了该项目,旨在创造一个能帮助降低医疗服务成本的算法——显然这是全人类永恒的崇高追求。
根据美国医疗学会的最新调查显示,在美国,每年有超过7 100万人次住院。研究推断,仅在2006年一年中,就有超过300亿美元被花费在不必要的住院治疗中。有更好的方式吗?是否能够提早判断出高危患者,确保他们得到所需要的治疗?HPN相信这是可行的,并赞助了Kaggle挑战赛,以开发一个基于现有的患者数据来预测和减少不必要住院治疗的机器学习算法。
参赛者被要求创造一个算法来预测患者在一年中会住院多久。一旦知道这个,医疗服务人员就能建立新的关怀计划,在紧急事件出现之前就对病人实施医疗帮助,从而减少非必要的住院时间。这将会提高患者的健康水平,降低医疗服务费用。简言之,获胜方案将改变我们熟知的医疗保健服务,从救治病人转变为真正意义上的保持人类健康。
从2011年4月到2013年4月,这个比赛持续了两年。该比赛的第一名是一支名为POWERDOT的队伍,他们被授予了500 000美元的奖励。你可以在HPN的网站上找到这个比赛www.heritagehealthprize.com。在那里你可以下载到病人资料数据集以及一些具有重要意义的方案论文。最成功的解决方案涉及随机森林的集合,外加对特征变量的创造性选择。
除了上面介绍的Kaggle比赛的案例之外,下面还列举了许多能用机器学习解决的其他领域的问题(依然有很多没有提到的)。
1.市场
预测生涯价值(LTV,Predict Lifetime Value):预测高生涯价值的顾客特征。这将帮助进行客户细分,识别推销机会并为其他营销活动提供支持。
客户流失(churn):判断流失的客户特征(例如,客户叛逃)。公司能够根据这一特征开发调整在线算法,使他们能应对流失的客户。
客户细分(customer segmentation):通过让客户回答:因为什么原因会购买这件商品、因为什么原因不会购买这件商品等问题,使你能够定性地区分不同的客户群。
产品组合:产品优惠活动怎么组合能带来最低的客户流失率?例如,住宅和汽车的保险组合打折出售能有效降低客户的流失。
交叉销售(cross-selling)/提升销售(up-selling)额和推荐算法:给出一个顾客的浏览历史、购物历史和其他行为特征,预测他在未来可能想购买(或者升级)什么产品。
折扣目标:给出一个折扣能在多大程度上激发顾客的购买欲望?
重复购买(reactivation)的可能性:对于一个已经购买了商品的顾客,他重复购买的可能性有多高?
谷歌关键字(Google Adwords)优化和广告购买:决定不同的搜索关键字和广告位的最佳购买价格。
2.销售
主导优先级(lead prioritization):判断一个销售机会最后能成交的概率。
销售预测(sales forecasting):提供销售策略,并深入了解销售预测的过程。
3.供应链
需求预测(demand forecasting):决定不同配送中心的最佳库存量,精益库存管理并防止缺货的情况发生。
4.风险管理
欺诈(fraud)侦测:预测一个交易是否应该被锁定,因为它涉嫌某种欺诈,例如,信用卡欺诈或是医保欺诈。
应付账款回收:根据借款人和借款的特征,预测债务能回收的可能性。
5.客户支持
呼叫中心管理(call center management):呼叫中心的流量预测(例如,预测呼叫量以便合理配备接线人员)。
呼叫路由选择:根据呼叫者的呼叫历史、时刻、拥有的产品、客户流失风险、客户生涯价值等因素决定呼叫的等待时间。
6.人力资源
人才管理:建立客观衡量员工绩效的指标。
人才流失:预测哪些员工最可能辞职。
简历筛选:根据过去的面试和聘用的结果为申请人的简历进行打分。
培训建议:根据雇员的绩效评估数据为其安排特定的培训计划。
7.谷歌流感趋势
到现在为止,我们已经看了不少机器学习的成功应用和潜在应用,让我们简要地回顾一个失败的机器学习案例,并思考它为什么没有成功。在2013年2月,谷歌流感趋势(GFT,Google Flu Trends)上了头条——但这不是谷歌高管或者这个流感跟踪系统的创造者所希望的事。《自然》杂志报道,GFT预测的感染者数量是美国疾控预防中心(Centers for Disease Control and Prevention,CDC)预测的数量的两倍多,而后者是基于全美实验室的检测报告来估算的。尽管GFT的创建目标是预测CDC的报告数据,这个令人大跌眼镜的情况还是发生了。鉴于GFT经常被认为是大数据应用的典范,我们可以从这个错误中吸取什么教训?
GFT试图根据人们在谷歌中使用的搜索关键字,如“我咳嗽了”,来预测某个时间地点的流感患者的比例。在这项研究的早期,预测的精度很好,很多人对GFT的未来十分乐观,因为使用谷歌的技术比CDC的方法划算多了。当时问题还没有显现,人们搜索的关键字会随着时间变化,此外,谷歌的搜索算法发生了改变,这些偏差影响了算法的表现并逐渐导致了预测精度跳水。