春争日,夏争时,扫码抽取夏日礼包!!! 了解详情
写点什么

回到未来:揭开事后偏见的神秘面纱

  • 2018 年 5 月 27 日
  • 本文字数:3322 字

    阅读完需:约 11 分钟

关键要点

  • 数据中的偏见成为企业人工智能的发展瓶颈,这无法通过过度优化机器学习算法或发明新算法来解决。
  • 事后偏见是意外存在于训练数据中的信息,不应该被合法地用在生产环境中。通俗地说,就像 Marty McFly(电影《回到未来》中的人物)回到未来,打开体育年鉴,并用它来投注现在的比赛。
  • 这个问题不存在银弹。统计方法和特征工程的组合有助于检测和修复它。
  • 表现出这种偏见的特征需要与真实预测因子区分开来,并确定正确的阈值,这才是关键。
  • 在 Salesforce Einstein,在解决这个问题之前,需要先与我们的客户建立对这种偏见的认识。

曾几何时,有一位销售主管通过输入销售线索记录所需的最小数据来追踪销售线索。录入数据是一件苦差事,我们都知道!在转化线索的过程中,其中有一些会变成购买行为。在做转换时,他只为那些更有可能购买商品的用户填写更多的信息。如果使用此类标记数据来训练机器学习算法,它会将这些特征与正向标签关联起来,尽管在转换之前永远不可用。可见,业务流程从一开始就在数据中植入了偏见。

这个故事在不同的企业案例、用户和数据中重演。机器学习算法通常假设输入的数据集是神话般的“完美数据集”,并用以预测目标标签。事实上,数据中经常会有很多噪音。该领域的致命弱点是事后偏见(Hindsight Bias,也称为标签泄漏或数据泄漏)。训练数据中意外存在的信息不应该被合法地应用在生产环境中,它们会导致在研究环境中产生不切实际的结果,而在生产环境中的结果也不尽如人意。

爱因斯坦曾经说过:“如果我有一个小时来解决问题,我会先花 55 分钟思考这个问题,然后花 5 分钟考虑解决方案。”所以,让我们通过例子来进一步了解这个问题。

用泰坦尼克号揭开事后偏见的神秘面纱

在机器学习领域,泰坦尼克号乘客生存能力预测是众所周知的一个案例。在发生沉船后,缺乏足够的救生筏是造成许多人丧生的原因。妇女、儿童和上层社会等特定群体的乘客比其他人拥有更大的生存机会。机器学习被用来预测哪些乘客将幸存下来。



可能很多人不知道, Kaggle 挑战赛中使用的数据是经过过滤和清理的。原始数据中包含了其他特征,其中有两个问题:救生筏和尸体。在沉船事故发生后,如果乘客安全地乘坐救生筏,则会为其分配一个船号,如果最终被发现死亡,乘客将被分配一个尸体编号。嗯,当然!如果有尸体编号,则该乘客已死亡,根本不需要花哨的机器学习算法来告诉你这些。

在使用原始数据集时,有关目标标签的信息会嵌入到训练数据中。事件发生后,救生筏和尸体只有在将来才知道。在进行预测时,它们还是不可知的。如果我们用这些数据来训练模型,那么它的表现会很差,因为这些信息不合法。

这个问题在形式上被认为是事后偏见。而且,它在真实的数据中占据主导地位,我们在Salesforce Einstein 构建预测应用程序时亲眼目睹了这一点。下面是预测销售线索转化情况的一个实际例子:数据中有一个叫作交易价值的字段,当某个潜在客户转化或接近转化时,该字段会断断续续地被计算出来(类似于泰坦尼克号故事中的救生筏和尸体字段)。

通俗地说,就像Marty McFly(电影《回到未来》中的人物)回到未来,打开体育年鉴,并用它来投注现在的比赛。由于时间旅行还有几年之遥,事后偏见是今天的一个严重问题。



事后偏见与建模算法

机器学习算法现今已成为人工智能应用的核心。通过优化建模算法或发明新的算法,可以使模型精度提高一定的百分率。尽管这样很有用,但我们也可以专注于找出机器学习的瓶颈,尤其是企业数据的瓶颈,从而实现更大的收益。事后偏见就是其中的一个未被探索的领域。那么,我们如何解决这个问题呢?

缓解策略

1. 输入特征的统计分析

我们可以针对输入特征运行一套统计测试,以检测特征与目标标签的强关联性。 Pearson 相关性为特征和标签之间的关联性提供了一个数值度量范围(-1,1),用于表示特征和标签之间的关联程度以及方向。它对数字特征非常管用,而在经过矢量化之后,它也可以用于分类特征。但是,如果分类具有大量的唯一值(例如,全世界的城市),由于在向量化期间多个列的特征被稀释,相关性会错失与标签的关联。这个问题可以通过 CramersV 来解决,因此它是更好的分类特征统计测试方法。

当这些偏见特征影响到一小部分样本时,问题可能会变得比较棘手。想象一下全球的地理位置数据,城市 = 旧金山的行数可能是千分之一。 Lift 是一种可用于避免事后偏见的可选方法。

2. 派生特征的统计分析

在对输入特征执行统计测试之前先执行一些初步的特征工程,这种策略被证明是行之有效的。

例如,许多具有事后偏见的分类特征遵循 null 模式,直到目标标签被确定。来自泰坦尼克号数据的救生筏和尸体都是这种模式的例子。破解它们的方法是添加一个 null 指示符(isNull)作为派生特征,并使用 CramersV 进行统计测试。

相关性并不总是通过事后偏见来捕捉数字特征。例如,在预测销售机会时,有一个叫作预期收入的特征,系统会在销售人员关闭机会后填入这个值。当销售人员失去机会时,系统将预期收入填为为 0 或 1,否则,系统将其填为一个更大的数。决策树可以用来发现这两个区间:[0,1] 和 [2,infinity]。一旦你将数字特征分到这两个区间,就可以将其视为分类特征。像 CramersV 这样的统计测试可以揭示特定区间与标签之间的强关联,从而暴露出偏见。

我们观察到的另一个值得注意的模式是:伪装成文本的分类特征。例如,在预测交易是失败还是成功时,有一个名为阶段性损失的特征。显然,它被定义为一个文本特征,但只有三个可能的值。对这些特征进行基数检查,将它们转换为分类,然后运行 CramersV 统计测试,就可以揭示事后偏见。

3. 训练与评分分布

有时候,如果仅通过查看训练数据,最难以捉摸的事后偏见可能不会暴露出来。训练机器学习算法的主要假设之一是用于训练的数据与用于评分的数据相似。

由于具有事后偏见的特征包含当时或即将确定实际标签之前的标签信息,因此我们可以查看训练数据中的特征分布和评分数据(在知道实际标签之前)。如果任何一个特征在两个分布中表现出显著的统计差距,那么这就有可能是事后偏见。

时间或时间戳截止也是相关的技术。在此,我们根据当前和过去的记录确定截止时间戳,即预测事件应该发生的时间点。然后,我们会在感兴趣的事件之前排除所有数据,因此我们没有使用在接近预测或预测之后收集的任何数据。

4. 交叉验证折叠和数据准备

在每次交叉验证期间执行所有数据准备和特征工程是至关重要的。例如,如果我们在任何特征工程步骤中使用标签信息,例如分区间,我们就会固有地在数据中引入事后偏见。这同样适用于降维中的特征选择、异常值去除、编码和特征缩放方法。如果我们在交叉验证之前对整个数据执行这些操作,那么交叉验证过程每一步的测试数据都会在选择特征时发挥作用,这会在数据中引入事后偏见。

是事后偏见还是真实预测?

到目前为止所讨论的所有方法中,最难的方面是发现数据和用例的正确阈值,这将有助于揭示事后偏见。相关性度量应该是什么,超出这个度量标准的特征是否包含了偏见?0.9 是一个好的阈值吗?还是 0.75 更好?什么时候你会认为某个特征包含了偏见,而实际上它是一个真正的预测指标?你需要对所有其他统计指标做出同样的决定,包括训练和评分分布等方面的差异。

在 Salesforce Einstein,我们为各种用例和不同形状和大小的数据构建模型的经验有助于提供可接受的阈值。但是,它们不是一成不变的。我们不断迭代阈值,以反映真实世界的数据和问题。

结论

事后偏见在企业人工智能中比消费者人工智能或学术界更为普遍。我们面临的最大挑战是与客户建立关系。一旦我们做到了这一点,理解引入这种偏见的业务流程和数据模式是至关重要的。这趟旅程帮我们找到了自动检测和缓解事后偏见的解决方案,其结果就是更可靠的机器学习预测。

关于作者

Mayukh Bhaowal 是 Salesforce Einstein 的产品管理总监,致力于自动化机器学习和数据科学实践。Mayukh 在斯坦福大学获得计算机科学硕士学位。在加入 Salesforce 之前,Mayukh 在机器学习和分析领域的初创公司工作。他曾是机器学习平台初创公司 Scaled Inference 的产品负责人,由 Khosla Ventures 投资,并在电子商务创业公司 Narvar 担任产品负责人。他还曾经是雅虎和甲骨文的首席产品经理。

查看英文原文 Back to the Future: Demystifying Hindsight Bias

2018 年 5 月 27 日 17:481327
用户头像

发布了 731 篇内容, 共 394.4 次阅读, 收获喜欢 1935 次。

关注

评论

发布
暂无评论
发现更多内容

数据库准实时数据同步平台成为新引擎,山西证券携手DataPipeline跑出加速度

DataPipeline数见科技

TcaplusDB x 王者荣耀|五五开黑节,我们无惧挑战!

TcaplusDB

数据库 nosql TcaplusDB

TcaplusDB君 · 行业新闻汇编(8月)

TcaplusDB

数据库 nosql TcaplusDB

为联邦学习互信提供“技术解”,星云Clustar荣获FTL-IJCAI 21 最佳应用论文奖

星云Clustar

联邦学习 论文 IJCAI 纵向联邦学习 联邦学习互信

快手基于 Flink 构建实时数仓场景化实践

Apache Flink

flink 解决方案 实时数仓架构 快手

TcaplusDB君 · 行业新闻汇编(8月7日)

TcaplusDB

数据库 nosql TcaplusDB

阿里面试官太暖了!3技术面+2交叉面+1代码面+1HR面,offer已拿

程序员改bug

Java 编程 程序员 架构

关于数据库应用的一些思考

石云升

数据库 8月日更

技术盘点:Unity SDK 开发中有哪些大坑?

环信

如何短时间突击 Java 通过面试?

Java架构师迁哥

PyFlink 开发环境利器:Zeppelin Notebook

阿里云大数据AI技术

服务全球用户,EMQ X Cloud 新增欧洲部署支持

EMQ映云科技

服务器 mqtt 部署与维护 Cloud emq

5月26日来IGS大会腾讯云游戏&新文娱分论坛和TcaplusDB约会吧!

TcaplusDB

数据库 nosql 腾讯云

谈谈Go的固定时长定时器和周期性时长定时器

Regan Yue

协程 Go 语言 8月日更

LeetCode刷题14-简单-最长公共前缀

ベ布小禅

8月日更

【架构实战营】--第一次作业

Geek_d18264

架构实战营

为什么Kafka的数据不写了?

BUG侦探

DNS gopack Linux操作系统

如何用3分钟搭建一个属于自己的网站?

百度开发者中心

最佳实践 开发者 方法论

TcaplusDB君 · 行业新闻汇编(8月10号)

TcaplusDB

数据库 nosql TcaplusDB

TcaplusDB君 · 行业新闻汇编(8月9日)

TcaplusDB

数据库 nosql TcaplusDB

开发者实践丨盲水印插件:用户端的实时视频溯源保护

声网

开发者实践 RTE大赛

Linux内核内存管理:地址转换和MMU

Linux服务器开发

操作系统 内存管理 Linux内核 内核开发 地址转换

SmartNews:基于 Flink 加速 Hive 日表生产的实践

Apache Flink

flink hive airflow

springboot整合activiti自带在线流程编辑器,整个程序源码,请假审批

金陵老街

大前端 工作流 ERP Activiti spring-boot 2.5.4

TcaplusDB数据库 X《大主宰:大千世界》,战斗永不停歇

TcaplusDB

数据库 nosql TcaplusDB

TcaplusDB君 · 行业新闻汇编(8月12日)

TcaplusDB

数据库 nosql TcaplusDB

运气与实力并存!7月份曲线救国拿下蚂蚁金服Java岗offer,我佛了

程序员改bug

Java spring 架构 编程语言

PyFlink 开发环境利器:Zeppelin Notebook

Apache Flink

Zeppelin notebook pyflink 开发环境利器

如何搭建SpringcloudAlibaba基础环境(一)

燃着的半支烟

Java 微服务

TcaplusDB君 · 行业新闻汇编(8月8日)

TcaplusDB

数据库 nosql TcaplusDB

TcaplusDB君 · 行业新闻汇编(8月11日)

TcaplusDB

数据库 nosql TcaplusDB

回到未来:揭开事后偏见的神秘面纱_语言 & 开发_Mayukh Bhaowal_InfoQ精选文章