本文翻译自Mike Yeomans(哈佛大学经济学系的博士后研究员)发表在《哈佛商业评论》的What Every Manager Should Know About Machine Learning,仅作交流学习,如需转载请与我私信联系!
或许最近你听过一种新算法,可以控制汽车或发明菜谱,抑或是扫描图片然后在人群中识别你的脸?似乎每周都有企业发现这种算法的新用途,并能适用于他们遇到的新数据。去年Wired(译者注:Wired是指美国《连线》杂志)引用了前Google员工的说法“公司里的每件事都是由机器学习驱动”。
机器学习有着颠覆企业的巨大潜力,但主要是在机器人驾驶员和厨师中进行实践应用。可以简单的把机器学习看成统计学的一个分支,为大数据时代而生。那些想要从企业数据中获取更多信息的管理层必须理解它是什么,能做什么,以及当用到它时应该注意什么。
不仅是大数据,而是泛数据
海量数据要对企业起作用还是有一些挑战。当然,大数据可能需要先进的软硬件设备来管理和存储。但机器学习是关于如何对数据进行分析的技术,并且需要适应数据集的大小。因为大数据不仅是“冗长的”,也是“广泛的”。举个例子,在一个电子表格里分析一个在线零售商的顾客数据库。每个顾客有一行数据,如果有大量顾客,那么这个数据集就会很长。然而,在这个数据集里的每个变量都有自己的属性,我们在每个顾客身上都可以搜集到非常多的数据——支付历史,浏览历史,点击量,评论内容——从列项甚至比行项更多的角度来说,这些数据通常也是广泛的。大多数机器学习工具都被设计成能更好运用泛数据。
预测不是因果关系
最常见的机器学习工具应用是预测。这里是一些商业预测的例子:
- 为顾客做个性推荐
- 预测顾客忠诚度
- 预测员工的未来表现
- 贷款申请人的信用风险评估
这些应用所处的环境都有共同特征点。其中一个是,他们都是基于大量的变量(意思是他们需要泛数据)做出正确决策的复杂环境。他们也有一些成果可以证明预测有效——比如某个人是否点击了被推荐的商品,或者一个顾客是否产生再次购买。总之,这是一个诉求精确预测的重要商业结论。
与传统统计学不同的是,在机器学习中无需关注因果关系。这就是说,你并不需要知道当你改变环境时会发生什么。取而代之的是你需要关注“预测”,这意味着你只需要一个可以做出正确决策的环境模型。就像是决定出门时是否需要带伞:在我们决定是否带伞之前必须预测天气情况。天气预报非常有用,但也有局限;天气预报可能不会告诉你云团如何工作,或者雨伞如何发挥作用,也不会告诉你如何改变天气。对机器学习来说也是同样的,个性推荐是预报人们的行为,这有一定的帮助,即使这些预报不会告诉你为什么人们喜欢做这些事,或者如何改变他们的喜好。如果你记住这些局限,机器学习的价值就会更加明显。
从噪音中分离出信号
目前我们探讨了在什么情况下机器学习会起作用。但在实践当中它是怎样被应用的呢?在一篇文章中概括这个问题是不可能的,但粗略来讲有三个广义的概念能涵盖在机器学习算法面纱下的大部分东西:“特征提取”,决定在模型中使用什么数据;“正则化”,决定在模型中数据如何加权;“交叉验证”,测试模型的准确性。每一个因素都将帮助我们定义和从“噪音”(我们想要避免的,在未来可能不会再次发生的随机关系)中分离“信号”(有价值的,我们想要学习的一致关系)。每一个数据集都混杂着信号和噪音,这些概念能帮助你从数据集中进行归纳,从而做出更好的预测。
特征提取
“特征提取”可以看做是找出模型变量的过程。有时也可以简单理解为将所有原始数据转储,但事实上很多机器学习技术可以建立新的变量,这些变量被称为“特征”,“特征”能够在原始数据里,把分散在众多变量中的重要信号聚集起来。在这个例子中,信号可能会被过度稀释而没有特征提取的效果。面部识别就有特征提取的例子,这些“特征”是真实的面部特征——鼻子长度,眼睛颜色,肤色,等等——这些都是通过图像中的不同像素信息来计算的。在一家音乐商店,你可能会有不同(音乐)类型的特征。比如你能够将所有摇滚音乐组合成一个特征,所有古典音乐组合成另一个特征等等。
提取特征有很多不同的方法,最有用的通常都是自动化的。这意味着不用手动挑选出每一张唱片的类型,你可以找到那些常常被相同人群购买的唱片“聚类”,然后从数据中学习它的“类型”(你甚至可能会发现原来不知道的新类型)。在文本数据中这样的方法也很常见,基于出现在同一文档中的单词和短语,提取潜在主题。然而在建议特征以及定义机器发现的“聚类”中,行业专家仍然非常有帮助。
(聚类是一个复杂的问题,有时工具只是被用来组织数据,而不是做预测。这种类型的机器学习被称作“无监督学习”,因为没有被用作为预测目标的测量结果。)
正则化
如何知道你已提取的特征反映的是信号而非噪音呢?直观讲就是,你想让你的模型安全的运转,不要随便下结论。这就叫做“正则化”。(同样的理念反映在“剪枝算法”,或是“特征缩减”,或是“特征选择算法”)为了说明我的观点,可以想象一个最保守的模型:它可能会给每个人做出一样的预测。举个例子,在一家音乐商店里,这意味着给每个人都推荐最流行的唱片,不管他们喜欢什么类型。这种几乎就是信号和噪音都不用理会。另一种极端是,我们可以建立一种复杂灵活的模型,能够尝试去包容用户数据中的每一个小巧合。这个模型能够同时从信号和噪音中学习。问题是如果在你的数据中有过多的噪音,这种柔性模型可能会比保守型更糟糕。这被称为“过度拟合”:模型的学习模式在未来难以支撑下来。
正则化是一种分离柔性模型与保守模型之间的差异的方法,通常是通过增加“复杂化惩罚项”以防止模型过于简单化来计算的。在一个模型中,这种惩罚项有两种影响。一个影响是,“选择器”,即算法聚焦在少数包含最佳信号的特征上,过滤掉其他信号。另一个影响是,“特征缩减”,即算法减少每一个特征的影响,以便预测不会过分依赖任何可能是噪音的特征。正则化的分支有很多,但最流行的一个被称为“LASSO”,是一种结合了“选择器”和“特征缩减”的简单方法,可能是大多数应用的最佳默认选项。
交叉验证
一旦创建了模型,你如何确保它能做出正确预测呢?最重要的测试就是这个模型能够精确计算样例以外的数据,即这个模型能够为以前从未见过的数据做出预测。这非常重要,因为即使你想用这个模型去做新的决策,也必须先保证它能做出可靠的决策。然而,在该领域做测试的代价可能会很高,通过使用你已经模拟好的预测精准度的测试数据,将会更加高效。在机器学习中使用“交叉验证”的流程已经非常普遍。
想象一下我们正使用10000条顾客数据来建立一个预测模型,同时我们想知道对未来的顾客来说,这些预测将会有多精确。验证精确性的一个简单方法是将样本随机分为两份:一份是9000条建立模型用的“训练集”数据和一份1000条“测试集”数据,刚开始先放到一边。一旦我们通过“训练集”完成建模,作为热身,我们可以看看这个模型在“测试集”中的预测结果如何。最重要的是,这个模型在建模完成之前从未见过测试集的结果。这才能保证测试集是真正的“held-out”数据。如果你不能区分这两种数据,你将会高估你的模型,并且造成代价极高的错误。
使用机器学习时需要避免的几个错误
机器学习中最常见的一个陷阱就是混淆预测模型和因果模型。人类几乎无法知道如何改变环境来得到想要的结果。但是在预测问题中,因果关系不是优先考虑的:取而代之的是我们尝试依靠一个稳定的环境去优化决策。事实上,环境越稳定,预测模型越有用。
区分“out-of-sample”(样本外)和“out-of-context”(环境外)非常重要。测量出样本外的精确性意味着如果我们从同一环境中挑选新数据,那么模型就会很好地预测结果。但是如果是在新的环境中,就不能保证这个模型会一样有用。举个例子,一家线上商店可能会用在线支付的数据库去为新用户创建一个有用的模型。但是同样的模型对实体店的用户可能就没有任何帮助了——即使是同样的产品线。
光是想想庞大的数据能够解决这个问题就非常吸引人。这不是假设。记住,通过将新案例与过去相似案例的大型数据库作对比,这些算法就能获取他们的能量。当你尝试在一个不同的环境中运行一个模型时,在数据库中的案例也许不再相似,并且原始环境中什么是优势成了一个障碍。这个问题没有简单的答案。只要能考虑到限制因素,out-of-context(环境外)模型仍然比没有模型要好。
虽然建模的部分工作能够自动化,但仍需要人类适当的判断辅助找出模型有用的部分。此外,也仍需大量批判性的思维去确保正则化和交叉验证这类内置安全机制能被正确使用。
不过,记住备选方案(纯粹的人工判断)也有它自身的偏见和错误。综合正确的科技和人工判断,对尝试解决大数据固有问题的决策者来说,机器学习能够成为一种新的、有用的工具。希望在这条道路上不会再出现新的问题。
作者:戴小点
联系客服