首页
学习
活动
专区
工具
TVP
发布

案例详解:为什么数据科学不仅仅是拟合和预测?

全文共2550字,预计学习时长5分钟

想要成为一名优秀的数据科学家,必须要掌握一些重要的概念。如果你不清楚这些概念,那么你将只是一个会运算模型的普通技术数据科学家,可以轻易被自动机器学习技术(AutoML)取代。一个优秀的数据科学家无疑在项目中是有价值的,即使项目本身不要求最先进的研究。

数据泄漏

根据Kaggle的定义,数据泄漏就是在训练数据中意外创建的额外信息,可以让模型做出一些极好的预测。简单来说,就是任何可以使模型在研究中表现得比在生产中更好的信息。

有一百万种不同类型的数据泄漏,有时是模型中的缺陷导致的(如将标签作为特征输入),有时是创建数据集时出现的错误导致的(如创建一个包含未来信息的特征),有时则是由业务逻辑中的缺陷导致(如使用的特征无法用于生产)。

数据泄漏最危险的一点是你很难发现它。有时候,测试集准确度有90%,而生产准确度只有60%,这时候你才能发现数据泄露。

选择性偏差

选择性偏差是指在选择个人、群体或数据进行分析时,由于样本选择的非随机性而导致的偏差。例如,你要通过问卷来构建训练数据集,然后把问卷发布在Facebook页面上,那么填这份问卷的人可能与你年龄相仿,和你在同一个国家,甚至同一城市,社会经济属性也与你相同。如果你只用在Facebook上得到的这些数据建立模型,当模型投入生产时,它需要面向更广泛的人群,这时适用于你朋友的模型就不一定适用于所有人了。

有时选择性偏差比数据泄漏更难处理,因为如果你能监控所有人群的标签,你就会把这些标签用于训练数据。选择性偏差也更难修正,你可以根据整体人群重新调整训练集的权重,或者删除一些让训练数据集与整体不同的特征,但是你无法评估这些方法是否有效。

生产反馈回路

许多机器学习应用程序的生产流程是这样的:机器学习模型对用户行为进行预测,系统根据模型预测采取行动,用户对系统作出回应,模型再根据用户行为进行再训练。

在这种反馈回路中,模型对其未来训练集的影响可能会导致一些偏差。例如,在推荐引擎中,我们根据用户点击项目次数对项目进行排序,但是如果先把一个项目列为第一,那么它的点击概率就会比排名第十的项目要高。这样即使有一些项目对用户来说更好,我们的模型也永远分析不出来。

我们通常用数据探索来解决这个问题。虽然模型上某项目的点击概率分数很低,但仍将该项目排在前列,或者根据之前的项目排列顺序,重新调节模型的标签。如果用户在第二页点击了一个项目,则表明它比点击率第一的项目的指示性更强。

另一个例子是预测客户是否会还贷。我们不知道如果通过了本要拒绝的贷款申请会怎么样,这样,我们就在模型的下一个训练数据集中制造了偏差。

特殊交叉验证技术

有时候仅使用随机交叉验证是不够的,因为生产数据会和研究数据有出入,因此我们需要使用特殊的交叉验证方法。例如在时间序列数据集中,由于自然或特殊情况,数据分布往往会发生变化。如果我们使用随机交叉验证,训练数据和测试数据分布会是一致的,我们无法知道模型是否可以成功应对这种数据分布变化。

因此,在时间序列中,我们需要使用滑动窗口交叉验证,而不是随机验证。另一种特殊情况是当你有分组数据时,例如在医学临床试验中,你有很多同一个病人在临床试验中的样本数据。为了确保模型同样适用于新的数据组,我们需要使用组交叉验证,即每个折叠包含几个组的所有样本数据,在测试时,将其应用于新的组进行测试。

选择“正确”的评价指标

这虽有点老生常谈了,但现实中有时候还是很难做到。模型评估方式应与用例的业务需求高度相关。比如说我为一家广告科技公司做的一个项目,我们要做一个竞标人,让其决定要在广告曝光方面花多少钱。我们做法是建立一个可以预测广告曝光前后公司可以赚多少钱的模型,然后根据预测决定竞标价。

在这个模型中,均方误差(MSE)不是一个好的评估指标,虽然它可能是应用最广泛的回归模型度量标准。均方误差会给大的异常值赋予更大的权重。在这个模型中,当公司以很高的价格出售广告曝光时,大多数重大错误表现异常。用均方误差几乎无法预测异常情况,所以即使出现异常,其他人也还是很可能会给出与其他曝光大致相同的价。如果我们的预测值较低,有时候异常情况可以不计。但是,如果我们出价太高,就会损失很多钱。

另一个例子是排序模型。虽然准确度和均方误差显然不适用于业务用例,但不同的排序度量标准适用不同的用例。如过你只向用户显示了最好的K项目,那么评估标准应是重览K项目。如果你向用户展示了一系列的排列项目,以及项目降级的概率,那么归一化折损累积增益(NDCG)是一个非常好的衡量标准。

从简单的模型开始

使用新的深度学习的CNN(卷积神经网络),RNN(循环神经网络),Gans(生成对抗网络)的剩余变压器 Attention,还有一些Buzzwords的网络区块链层(Cyber Blockchain)是很酷,非常酷,但这不是一个开始项目的好方式。

从只有几个特征的简单模型开始会更有利。这在调试模型,查找缺陷或数据泄漏时更简单。你可以更好地理解模型的预测,知道怎样使它表现得更好,以及研究什么更有前景。看不到数据的信号,你可以很快地转到下一个项目,不用花费很多时间。

简单模型最大的益处可能是,有时候简单的模型正好可以满足你的业务需求,可以省去你做大量研究的功夫,节省做GPU(图形处理器)的时间。

不要用epsilon模型

在Kaggle的模型竞赛中,获奖模型通常集30多种模型于一身,有数百个特征,他们往往只比一个好模型或者综合两三个简单模型的集合模型要高那么0.01分。这些获奖的复杂模型被称为epsilon模型,因为它们只让模型性能好了一点点,但却大大增加了生产系统的复杂性。每个模型甚至每个特性都可能有潜在的缺陷,在训练和推理上,复杂模型要求更多的处理时间,还要求更大的内存。在权衡由模型复杂性和性能而导致的成本时,除了模型的准确性与收益高度相关的特殊情况外,应该选用更简单的模型。

监控生产中的模型

大多数实际应用程序的数据分布会随着业务决策、用户行为的变化以及模型引起的变化等而改变。这意味着模型的性能可能会随着时间的推移而下降。

为了阻止这一现象的发生,我们需要对模型的性能进行监控,对模型进行重新训练,在性能急剧下降的时候甚至要再回到研究阶段。但很多时候我们没有新的标签(例如用机械土耳其人(Mechanical Turk)标记训练集),或者很长时间以后才发现标签(例如预测一家企业是否会归还其5年贷款),在这种情况下,我们应该监控训练数据集和生产数据之间的数据变化,甚至要监控模型预测概率分布的变化。

留言 点赞 发个朋友圈

我们一起分享AI学习与发展的干货

编译组:吕淋、胡婷

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181225B12CDC00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券