Claudia Perlich问答集:机器学习能力将成为数据科学家的基本要求

Claudia Perlich 是纽约大学的客座教授,也是 Dstillery 公司的首席科学家,主要的工作是为潜在的品牌客户设计、开发、分析和优化驱动数字广告的机器学习。Claudia Perlich 在业界和学术界都有非常耀眼的成绩。最近获得了 Advertising Research Foundation(ARF)的 Grand Innovation Award,并被选为《纽约商业周刊》年度 40 位 40 岁以下人物名单。她还曾担任过 SIGKDD 2014 大会主席。

Synced (278).jpg

1.数据科学家当下面临的最低效的问题是什么?

首先,我想声明的是我认为这并不是问题:事实上数据科学家 80% 的时间都花在准备数据上。这才是他们的工作!如果你对准备数据不感兴趣,那就不是一个好的数据科学家。任何分析的有效性几乎完全仰仗数据的准备程度,而与你最后选择的算法几乎无关。抱怨数据准备工作就像一个农民抱怨做任何与收成相关的事情,然后把灌溉、施肥、撒种的事交给别人。

也可以说,数据准备工作难在原始数据收集上。设计一个收集有用且易于被数据科学消化的数据系统需要高超的技艺。对数据科学家来说,让系统内数据流的过程完全透明化也是需要高技巧的。这个过程需要做抽样、标注数据、匹配等工作。还不包括替换缺失值和过度规划化的工作。为数据科学创造一个有效的数据环境,需包括数据科学而且不能完全被工程工作所占有。数据科学并不总是能规范这种系统对细节的要求来完成一个干净利落的切换。

但是从更大范围来看,还有更重要的事情需要考虑。我认为到目前为止最大的问题是数据科学解决不相关的问题,浪费了大量时间和精力。原因通常是任何有这个问题的人在表达该问题时都缺乏对数据科学的理解,而且数据科学家最终解决任何他们认为可能是问题的问题,然后找到的方法不一定有帮助(广告常常都非常复杂)。一个典型的类别就是「定义不透彻(underdefined)」的任务:「在这个数据集中找出可操作的 insights!」。不过,大部分数据科学家并不知道要做哪个操作。他们也分不出哪些 insights 是琐碎的,哪些是有趣的?对于哪些跟风行事的人来说,也真没有什么好建议。

个人来讲,我觉得有必要提的问题是缺乏数据理解和数据直觉(事实上缺乏这个三个因素常常会让数据科学家很快就下出结论),而且怀疑是最影响效率的限制因素。这些因素影响效率的主要原因是找到正确的答案需要花费很长时间。

2.你最喜欢的机器学习算法是什么?

易于上手的逻辑回归(logistic regression,带有很多花里胡哨东西,比如机梯度下降、feature hashing 和 penalties)。

我知道在深度学习风靡的时代,这答案有点奇怪。所以我先来讲下缘由:在1995-1998 年这段时间里 ,我用的是神经网络,到了 1998-2002 年这段时间我用的最多的是基于树的方法。从 2002 年开始,逻辑回归(一般的线性模型、包括分位数回归、泊松回归等等)逐渐深得我心。2003 年,我发表一篇机器学习的论文,展示了在 35 个数据集(那时候算是很大了)中三种逻辑回归分析方法与逻辑回归的比较结果。

长话短说,如果信噪比很高,树往往会赢。但是,如果信噪非常大,那么带有一个 AUC < 0.8 - logistic 的模型就是最好的选择,它总能击败基于树的方法。最终不太令人惊讶:如果信号太弱,高方差模型就完全没用了。

所以这到底意味着什么?在这种问题上,我倾向于处理低可预测水平的超级噪音。这个问题可以从非常确定性(国际象棋)的角度来考,也可以从非常随机(股票市场)的角度来考虑。(在有数据的情况下)一些问题仅仅是比其他问题更好预测一些。不是一个算法问题而是关于这个世界的概念陈述问题。

从这个角度来看,我感兴趣的大多数问题非常接近于股票市场。深度学习在另一个方向上效果很好——「这张图中有猫吗?」在一个不确定的世界中,偏置方差权衡(bias variance tradeoff)往往在有更多偏置的情况下是有利的——意味着你会想得到「简单的」非常受限的模型。而这就是逻辑回归的用武之地。我个人发现通过添加复杂的特征而不是尝试限制非常强大(高方差)的模型类别来增强一个简单的线性模型是更容易的。事实上,每个我赢过的数据挖掘比赛(KDD CUP 07–09)我都是用了线性模型。

线性模型除了性能上的优势,还很稳健,而且往往只需要远远更少的人工处理(好吧,随机梯度下降和 penalties 会让其变得困难一点。当你想要在你不能花费 3 个月长的时间来构建完美的模型的行业进行预测建模时,这是极其重要的。

最终,线性模型中的发生的情况更有可能得到是可以理解的。

3.完全掌握 TensorFlow 需要什么样的数学背景?

这完全取决于你如何定义「掌握」。你是仅仅想用它调节一辆 Formula One 汽车的引擎,还是想要摘得国际汽车大奖赛的奖杯?

但是,对于灵活使用数学与算法来解决某个问题这一方面,确实是有「掌握」一说的(如果你愿意,你还可以进行算法研究)。这是 Formula One 的技术人员常做的事情。对此,我指的是专业程度极高的数学。我个人不太喜欢做这一块,虽然我也曾学习过大量的高等数学。

然而,在应用方面 —— 当你做一个司机的时候,也有「掌握」这一概念。当你可能会使用 TensorFlow 的时候,你有好的灵感吗?你知道如何设计最好的数据表征才能使算法使用更加简单吗?如果 TensorFlow 的某个指标下表现良好,这是否代表它在其它指标下仍效果显著?以上这些例子都是考验你是否掌握 TensorFlow 的场景,而它们对使用者的经验、数据、以及直觉的要求,将远高于对单纯的数学的掌握。

那么问题来了:你是想成为 Michael Schumacher(德国著名赛车手),还是想为他工作呢?

4.机器学习如何影响数字广告?

实际上,在数字广告领域,机器学习无处不在 —— 曾经在 KDD(ACM SIGKDD 国际会议)有很多 ADKDD 研讨会(专注于在线广告)。当前,广告产业的数据日益丰富(虽然我不知是好还是坏),程序化的实时广告的兴起也为机器学习在这一领域的发展提供了充分的机会。作为回顾,你可以抽出一个小时,看一下我近期在 Institute of Advanced Study(高等研究院)的一个演讲

在多数情况下,机器学习被应用于以下不同的广告产业组成部分:

  1. 测量与分配(市场混合模型、观测数据的因果模型、用户倾向匹配等)

  2. 跨设备关联(基于用户模式、IP 重复等,预测两个设备属于同一个用户的可能性)

  3. 意图预测(某个消费者在下个月购买某个新车型的可能性)

  4. 广告印象层面的反应预测(点击或完成浏览的概率)

  5. 欺诈检测(分辨机器与人、欺诈链接与点击等)

  6. 用户洞察(观测一个在预测用户意图上表现良好的模型 —— 是否能够从中提取一些行为模式,并使用到创新设计中?)

还有一些广告领域中的机器学习应用是备受争议的。Sweeney 教授的成果显示,机器学习算法会反应潜在的种族歧视,我近期的一些工作也发现,一些预测模型会「倒向信号所在的地方」—— 而在弱指标下这是十分危险的。假设现在我们要预测一个广告的点击量,结果发现预测你非常有可能点击手电筒应用十分简单。这不是因为你对手电筒感兴趣 —— 而是因为你在黑暗中行动笨拙。尽管这一模型在想高点击率优化上表现优异 —— 它只会将广告投放给那些几乎对该产品完全不感兴趣的人。

5.随着产业内的机器学习越来越流行,数据科学将如何进化?

要回答这个问题,需要我们先思考一下数据科学与机器学习的关系。对我自己来说,数据科学本身包含了机器学习。从定义上看,机器学习指一个机器从数据中归纳知识的能力 —— 你可以把它称作学习或者推断。没有数据,机器就几乎无法学习。所以,如果有什么区别的话,机器学习在许多产业中的应用扩张,将会成为数据科学重现光彩的催化剂。机器学习的优劣与否,取决于其使用的数据,以及消化算法的能力。我的期望是,不断向基础的机器学习靠拢,将成为数据科学家的基本要求。

因此,对我来说,最重要的数据科学技术之一是评估机器学习的能力。我认为,我们所从事的数据科学并不缺少酷炫的项目和迷人的算法;而我们仍旧有待了解的是事物背后的运作原理以及如何解决不标准的问题。对于机器学习的(学术)观点,我的主要忧虑之一是,目前人们持续地关注在样本表现中的简单结果。基本上 99% 的研究论文都是基于精确度而被采纳的。

我从过去 12 年的工作中意识到:在多数应用领域中,学术评估几乎是没用的。在一些随机测试集中表现优秀的模型会变得一无是处。这个话题值得长篇讨论,但简要来说我对以下几点存疑:

  • 人们经常使用的指标(将分类器的精确度定义为判断正确的百分比是罪魁祸首)

  • 一个模型在最开始预测的往往都是错的这一事实(多数是因为根本没有「对」的东西的数据)

  • 抛开使用背景评估模型 —— 你应当先基于预测采取行动,然后再评估结果是否有改进,而不是直接进行评估

  • 样本数过大导致的种种问题 —— 人们基于现有的数据建立模型,而不是他们应有的数据,更加危险的是,人们往往还基于无代表性的样本评估模型。

  • 在带有混合生成分布的对抗情形(adversarial situation)中,模型最终只能识别出「错误的」正类的困境(可以参看我在上文对广告点击量作为指标的评价)

  • 泄漏 —— 表明某一模型纯粹是某数据集合的衍生物,且该模型的真正表现是非常糟糕的

6.准备数据科学面试时,哪些资源是最好的?

这个答案的首先最明显的部分是明白你自己准备做什么。一般意义上都是这样,而不只是在数据科学领域。现实情况是今天有很多东西都被叫做数据科学,许多人也自命为数据科学家。所以首先你要知道你到底面试的是什么,那通常并不是很明显。你也许需要在面试之前问上几个问题。

我已经看到数据科学的职位已经分化成了(多少有些夸张)多个类别:

  • 他们实际上在寻找某种分析师,有某种擅长的技能实际上就足够了(你可能甚至不想要这样的工作)

  • 他们在寻找数据工程师,他们基本上最感兴趣的是你是否跟上了 Scala 编程的最新进展和知道你自己的版本控制方法。网上可能能找到一些标准的准备研讨会,我不知道。(这也不是我想要的工作。)

  • 他们实际上在寻找能够基于不同的数据大小设计有效的统计分析的人,其中会涉及到一些机器学习、预测建模、聚类,而不会过于在意你是用什么方法完成的(这就开始变得有意思了……)

  • 他们在寻找深度学习专家……

  • 他们需要一匹独角兽——具备项目管理能力,能将一个业务问题翻译成一个「可解决的」数据驱动的解决方案。

一旦你搞清楚了你要做什么,你可能就要重新想想要不要应聘……

我通常在寻找第 3 类的申请者(有时候我也接受第 5 类)。不存在什么捷径「资源」能说服我你有这项工作所需要的能力。不幸的是,这确实涉及到个人的性格和经验。在 Kaggle 竞赛上花一些时间是获取经验的一个好方法。它们有许多数据集可以使用,你也可以从其他参与者那里学习经验。你所接触的数据集越不同,就越好!

此外,我还需要预测建模的专业知识,并且期望你熟悉来自《Elements of statistical learning》一书的概念。我需要你的能力足够为任何你所需要的事物编程出原型。你需要的技能包括数据拉取(API,SQ)、一些脚本编写的技能(Shell/Perl/Python)、一个建模的优质环境(Python 库/R/独立的实现),一些如何可视化/传达你的发现的想法。

一些发表资源能让你保持敏锐:KDNuggets KDD 大会(申请论文的好集合)

最后是一点不太相关的提醒:尽管创业公司很有意思,但你不会想让你的第一份数据科学工作是一家创业公司的数据科学家……

7.你是如何学习机器学习的?学习机器学习时,你最喜欢那本书?

我在学校一开始就在数学和科学学科上表现不错,并不是因为我真正喜欢抽象的事物,而只是我喜欢理解事物和解决难题罢了。所以以数学作为职业就出局了,但对于我想要做什么,我并没有什么强烈的感觉。与此同时我的爸爸则推荐计算机科学作为一个延迟决定的解决方案,然后做点什么我可能会非常擅长的事!他在 92 年时认为计算机很快就将用到各种各样的地方,而且我可以在后面想想我究竟想做什么。(我会对今天的数据科学领域的申请说同样的话。)

1995 年,我在科罗拉多大学波尔得分校做了一年交换生,没有任何统计学背景的我迷迷糊糊地参加了人工神经网络的课程,完全不知道我在做什么。从此我和数据结下了不解之缘,剩下的就顺理成章了。在那里,我用德语写了另一篇硕士论文,将汽车的物理模型和该物理模型和被观察到汽车运动之间的残差分析的人工神经网络模型结合到了一起。

我感觉我仍然很多东西要学(而且也不急着找工作),于是我开始寻找 PhD 项目,通过偶然的机会和朋友的关系,我在 1998 年加入了纽约大学斯特恩商学院信息系统的项目。在我看来,商学院的机器学习成果的优势在于专注解决实际的商业问题,而不是理论上的算法贡献。此外,也更加关注交流和说话的能力,因为我们都是作为下一代教 MBA 学生的教授而培养的。

幸运的是,在 2003 年,学术界还没有完全准备好将机器学习作为商学院的一项研究主题,所以我没有追求一项学术事业,而是加入了 IBM Watson 实验室的预测建模组。

下面是我的一些「神圣的」引路人列表,按我遇到他们的顺序排列:

  • Duda, Hard, Stork「Pattern Classification」

  • Bill Greene「Econometrics」

  • Hastie, Tibshirani, Friedman「The Elements of Statistical Learning」

  • Provost, Fawcett:「Data Mining for Business Intelligence」

我也在这里推荐几本轻松的书。一个好的数据科学家应该有一项非常好的技能:和随机性保持良好的关系。对此我推荐 Nassim Taleb 的「Fooled by Randomness」。同样,理解我们人类在处理信息中的偏见也对讲更好的故事而言是非常重要的,才能让我们自己不被数据愚弄。这方面我推荐 Duncan Watts 的一本书「Everything is Obvious Once you know the answer」。

8.作为一个数据科学家,你使用了哪些工具?

我是一个相当老派的人,而且因为我的事业在向管理岗位发展,也就更少写代码了,我已经控制好自己不「更新」我的工具集了。另外,因为我们不支持 X 的防火墙后面有非常敏感的数据,所以任何类型的图形界面都是很困难的,我的工作基本上都是通过命令行进行。

我常使用 UNIX shell 命令对数据进行操作。其中必然包含:awk, sed, grep, sort, cut, cat, head, tail, uniq……

下一层的编译我使用的是 Perl。

拉取数据主要是在我们 Hadoop 上的 Hive 前端上通过 SQL 完成。

我也用过 R、SAS、MATLAB 等工具——目前我大部分是使用 R 处理小事情(创建漂亮的图片等等)。

除了这些,我的态度是借用和窃取……我没有什么理由要自己实现任何机器学习算法。在这方面很多人都比我做得好。所以我已经积累了很多范围广泛的我发现的任何相关机器学习算法的独立可执行文件(UNIX):Thorsten Joachims SVM 代码Tree 学习的 FEST 库,John Langford 的 VowPal Wabbit 等等。

有时候我会发现一些我确实需要的工具 API。比如说,我发现了用于 NLP 的 Data Ninja

9.一个数据科学家需要必备一些特定领域知识吗?

人们对这个问题争论很长时间了。我曾在 2013 年 KDD 的一个小组会议上做了几乎这同一主题的简短报告《The evolution of the expert》。我过去尝试过许多回答这一问题的方法:

「如果你足够聪明,可以成为一个好的数据科学家,那么在大部分情况下,你都可以在一到两个月时间内学会任何你所需要的特定领域的知识。」

「Kaggle 竞赛已经一遍又一遍地展示了好的机器学习算法胜过专家。」

「当聘请数据科学家时,我更感兴趣的是那些在许多行业内的经验比我丰富的人。」

或者我就让我的个人履历说话:我曾赢得了 5 次数据挖掘比赛,而我并不是一味乳腺癌、酵母基因组、电信客户关系管理、Netflix 影评或医院管理方面的专家。

理论访谈机器学习入门数据科学
1
机器之心(北京)科技有限公司・编辑