[Day 10] 模型达到商业指标的挑战 — Test set performance 的殒落

Achieving low average tested error isn't good enough for a project.

前言

昨天谈到大部分机器学习专案在产品化前都必须达成三个里程碑,而即使在测试集取得了很好的表现,要达成商业指标这最後一个里程碑时可能还会遇到一些困难,今天就来看看这些程咬金是什麽吧。

达成商业指标的挑战

不成比例的重要性

现实情况中,不是每个样本都一样重要,如果 ML 系统在少数重要程度高到不成比例的样本表现很差,即使它的平均测试误差很低,作为产品也是没有价值的。
以我们每天都在使用的搜寻引擎为例:
web search
其中:

  • 资讯性查询 (Informational Query) — 指搜寻用户的目的是为了寻找相关资讯。
  • 交易性查询 (Transactional Query) — 指搜寻用户的目的是为了寻找商家购买产品或服务。
  • 导航性查询 (Navigational Query) — 指寻用户的目的是为了寻找特定商家或品牌的网址或资料。

对於前两类查询只回传最相关的搜寻结果是可以忍受的,而对於导航性查询,因为使用者的意图非常明确,所以没有回传正确的结果就会造成使用者对产品失去信心。
可以想像如果我搜寻 Navigational queries 的三个网站时,回传的第一个连结都不是那些网站,我应该就不会再使用这个搜寻引擎了。
仅仅三次错误就让使用者放弃使用,这就是它们不成比例的重要性!

关键子集

有些特徵并不能作为判定的标准,否则会使 ML 系统带有歧视性,这类特徵就称为 Protected attributes,而带有这些特徵的样本就是 关键子集
例如在文章 医学院用AI面试,竟刷掉数百位优秀女性与少数族裔⋯⋯科技为什麽也会偏心? 提到伦敦的圣乔治医学院(St. George’s Hospital Medical School)使用电脑程序初步筛选申请者时,偏颇地拒绝了数百名学业成绩足以进入面试阶段的女性和少数族群,此时"性别"这个特徵就属於 Pretected attributes,而带有"女性"这个特徵的样本就属於关键子集。
或以贷款审核为例,就算平均测试准确度很高,若系统会以种族来判定是否通过贷款,作为产品,是绝对不可以被接受的!!
总的来说,为了保障系统的公正性,必须确保它在某些关键子集表现良好。

罕见类别

在分布高度不均匀的资料中,直接忽略罕见类别或对它们的准确度较低也是不能接受的,特别是在缺陷检测或医疗的应用上更是如此。
另外要注意,当资料集的分布极度不均匀时 (Skewed datasets) 准确度无法反映模型的真实表现,常见的解法如下:

  • 改为检视混淆矩阵,计算 Precision & Recall:
    基本的想法是看看 class A 被分成了 class B 的总次数,矩阵的每一行代表 actual class,每一列则是 predicted class,最完美的矩阵就是只有对角线有值,false positive 跟 false negative 皆为 0。

    • Precision - 预测值为 positive case 的准确性,也就是预测为 positive 且真的为 positive 的比例
    • Recall - 又称为 sensitivity 或 true positive rate,为对 positive case 预测的正确性,也就是所有的 positive 中预测正确的比例,在瑕疵检测时,Recall 要尽量高,才不会让有瑕疵的产品流出。
  • 计算 F1 score:
    计算 Precision 跟 Recall 的调和平均数 (Harmonic mean),不像一般平均值把每个值都视为一样重要,harmonic mean 会给小的值更高的权重,也就是说 F1 score 要高的话代表 Precision 和 Recall 同时都要很高。

所有指标的定义请见下图:
Confusion matrix
*图片来源:YC Chen — 如何辨别机器学习模型的好坏?秒懂Confusion Matrix

这两个方法不仅限於二元分类,也适用於有多个类别的情况,例如瑕疵检测时,全部的瑕疵加起来可能资料量还是很少。

以上就是今天的内容,知道一个良好的机器学习产品该达到甚麽标准之後,明天就让我们来谈谈启动 ML 产品专案的小诀窍以及最重要的第一步该怎麽踏出去吧。

参考资料


<<:  第25天 - 文件审核系统(3)_上传、下载的部分

>>:  [ Day 10 ] setState() 的用法

Day 30. [复盘] 一场成年人的意志力之旅

楔子 收到 iT 邦铁人赛资讯时,正好是 Rson 新公司案子最忙、频繁加班的时候。还记三十几天前,...

Day 28 - ROS 树莓派光达履带小车实作 (2)

延续昨天的进度,lidar装完以後就可以为SLAM做准备了。ROS用来做SLAM的package其实...

4. 关於 Constructor Function

(想直接看题目的话可以移到最後一个标题!) 在准备回答问题前,先复习几个观念: Constructo...

[Day27] grid-row-start / grid-row-end + grid-column-start / grid-column-end

如果想要控制网格项目的放置位置,就要知道怎麽定义项目放置的"行"与"列...

鬼故事 - 我是不是来过这里

鬼故事 - 我是不是来过这里 Credit: 蜘蛛人 灵感来源:UCCU Hacker 故事开始 小...