原标题:无需写代码!谷歌推出机器学习模型分析神器,代号What-If

原标题:测试机器学习模型不用写代码!谷歌“what-if”工具轻松搞定

引言

在机器学习领域,AUC值经常用来评价一个二分类模型的训练效果,对于许多机器学习或者数据挖掘的从业者或在校学生来说,AUC值的概念也经常被提起,但由于大多数时候我们都是借助一些软件包来训练机器学习模型,模型评价指标的计算往往被软件包所封装,因此我们常常会忽略了它们的具体意义,这在有些时候会让我们对于手头正在进行的任务感到困惑。笔者也曾遇到类似的问题,因此希望借由本文来梳理下AUC值的意义与计算方法,通过实际的例子帮助读者加深理解,同时给出了使用scikit-learn工具库计算AUC值的方法,供各位参考。

铜灵 编译整理

图片 1

定义

AUC的全称是Area under the Curve of
ROC
,也就是ROC曲线下方的面积。这里出现了另一个概念,就是ROC曲线。那么ROC曲线是个什么东西呢?我们参看下维基百科上的定义:在信号检测理论中,接收者操作特征曲线(receiver
operating characteristic
curve
,或者叫ROC曲线)是一种坐标图式的分析工具,用于 (1)
选择最佳的信号侦测模型、舍弃次佳的模型。 (2)
在同一模型中设定最佳阈值。这个概念最早是由二战中的电子工程师和雷达工程师发明的,用来侦测战场上的敌军载具。概括来说,可以把ROC曲线理解为一种用于统计分析的图表工具。

那么具体到机器学习的理论中,ROC曲线该怎么理解呢?首先,需要指出的是,ROC分析的是二元分类模型,也就是输出结果只有两种类别的模型,比如:(阳性/阴性)(有病/没病)(垃圾邮件/非垃圾邮件)。在二分类问题中,数据的标签通常用(0/1)来表示,在模型训练完成后进行测试时,会对测试集的每个样本计算一个介于0~1之间的概率,表征模型认为该样本为阳性的概率,我们可以选定一个阈值,将模型计算出的概率进行二值化,比如选定阈值=0.5,那么当模型输出的值大于等于0.5时,我们就认为模型将该样本预测为阳性,也就是标签为1,反之亦然。选定的阈值不同,模型预测的结果也会相应地改变。二元分类模型的单个样本预测有四种结果:

  1. 真阳性(TP):判断为阳性,实际也是阳性。
  2. 伪阳性(FP):判断为阴性,实际却是阳性。
  3. 真阴性(TN):判断为阴性,实际也是阴性。
  4. 伪阴性(FN):判断为阴性,实际却是阳性。

这四种结果可以画成2 × 2的混淆矩阵:

图片 2

二阶混淆矩阵

有了混淆矩阵,就可以定义ROC曲线了。ROC曲线将假阳性率(FPR)定义为
X 轴,真阳性率(TPR)定义为 Y 轴。其中:

  • TPR:在所有实际为阳性的样本中,被正确地判断为阳性的样本比率。
  • FPR:在所有实际为阴性的样本中,被错误地判断为阳性的样本比率。
  • TPR = TP / (TP + FN)
  • FPR = FP / (FP + TN)

给定一个二分类模型和它的阈值,就可以根据所有测试集样本点的真实值和预测值计算出一个
(X=FPR, Y=TPR)
坐标点,这也就是绘制单个点的方法。那整条ROC曲线又该怎么画呢?具体方法如下:

在我们训练完一个二分类模型后,可以使用该模型对测试集中的全部样本点计算一个对应的概率值,每个值都介于0~1之间。假设测试集有100个样本点,我们可以对这100个样本的预测值从高到低排序,然后依次取每个值作为阈值,一旦阈值确定我们就可以绘制ROC曲线上的一个点,按照这种方法依次将100个点绘制出来,再将各个点依次连接起来,就得到了我们想要的ROC曲线!

然后再回到最初的问题,AUC值其实就是ROC曲线下方所覆盖的面积,当我们绘制出ROC曲线之后,AUC的值自然也就计算好啦。

今天,谷歌推出了已开源的TensorFlow可视化工具TensorBoard中一项新功能:What-If
Tool,用户可在不编写程序代码的情况下分析机器学习(ML)模型。

倒计时**8**天

示例

这里引用上海交大张伟楠老师机器学习课件中的例子来说明:

图片 3

AUC计算示例

如上图所示,我们有8个测试样本,模型的预测值(按大小排序)和样本的真实标签如右表所示,绘制ROC曲线的整个过程如下所示:

  1. 令阈值等于第一个预测值0.91,所有大于等于0.91的预测值都被判定为阳性,此时TPR=1/4,FPR=0/4,所有我们有了第一个点(0.0,0.25)
  2. 令阈值等于第二个预测值0.85,所有大于等于0.85的预测值都被判定为阳性,这种情况下第二个样本属于被错误预测为阳性的阴性样本,也就是FP,所以TPR=1/4,FPR=1/4,所以我们有了第二个点(0.25,0.25)
  3. 按照这种方法依次取第三、四…个预测值作为阈值,就能依次得到ROC曲线上的坐标点(0.5,0.25)、(0.75,0.25)…(1.0,1.0)
  4. 将各个点依次连接起来,就得到了如图所示的ROC曲线
  5. 计算ROC曲线下方的面积为0.75,即AUC=0.75

不用写代码?

新智元将于9月20日在北京国家会议中心举办AI WORLD
2018世界人工智能峰会,MIT物理教授、未来生命研究所创始人、《生命3.0》作者Max
Tegmark,将发表演讲《我们如何利用AI,而不是被其压制》
,探讨如何直面AI军事化和杀人武器的出现,欢迎到现场交流!

代码

在清楚了AUC值的计算原理后,我们再来看看如何在代码中实现它。通常很多的机器学习工具都封装了模型指标的计算,当然也包括AUC值。这里我们来一起看下scikit-learnAUC的计算方式,如下所示:

>>> import numpy as np
>>> from sklearn.metrics import roc_auc_score
>>> y_true = np.array([0, 0, 1, 1])
>>> y_scores = np.array([0.1, 0.4, 0.35, 0.8])
>>> roc_auc_score(y_true, y_scores)
0.75

可以看出,使用scikit-learn工具提供的roc_auc_score函数计算AUC值相当简单,只需要提供样本的实际标签和预测值这两个变量即可,大大方便了我们的使用,真心感谢这些开源软件的作者们!

没错,只需为TensorFlow模型和数据集提供指针,What-If
Tool就能给出一个可用来探索模型结果的可交互的视觉界面。

总结

看到这里的小伙伴们是不是对AUC值的概念有了更好的理解呢。总的来说,AUC值就是一个用来评价二分类模型优劣的常用指标,AUC值越高通常表明模型的效果越好,在实际使用中我们可以借助软件包的相应函数进行快速计算。如果各位还有一些问题或者是对文章中的某些部分有疑问,欢迎在评论区讨论。

图片 4

来源:Google AI

参考

ROC曲线维基百科
张伟楠老师课件
机器学习和统计里面的auc怎么理解? –
知乎

250张人脸和在模型中检测微笑后的结果

编辑:大明

What-If
Tool里功能很多,包括自动用Facets将数据集可视化,也有从数据集中手动编辑示例并查看更改效果的功能,还能自动生成部分关系图,显示模型预测随着单个特征的改变而改变的趋势。

【新智元导读】Google AI推出“what-if
”工具,用户完全不需要编写代码就能分析机器学习模型。该工具提供交互式可视化界面,用户可以探索并比较模型结果,可以快速地发现模型中的错误。

不过,这还不是What-If Tool的全部实力。

构建高效的机器学习系统,需要提出并解决许多问题。仅仅训练模型然后就放着不管是远远不够的。优秀的机器学习从业者要像侦探一样,时刻注意探索如何更好地理解构建的模型:数据点的变化将对模型的预测结果造成什么影响?同一个模型对不同的群体会有哪些不同的表现?用来测试模型的数据集的多样化程度如何等等。

7大功能

要回答这些问题并不容易。要回答这些“假设”问题,通常要编写自定义的一次性代码来分析特定模型。这个过程不仅效率低下,而且除了程序员,其他人很难参与改进机器学习模型的过程。

What-If Tool主要有七大功能,不知道有没有你需要的那一款:

Google AI
PAIR计划的一个重点就是让更广泛的人群能够更方便地对机器学习系统进行检查、评估和调试。

功能一:可视化推断结果

今天,我们正式发布What-If工具,该工具是开源的TensorBoard
Web应用程序的一项新功能,它允许用户在不编写代码的情况下分析机器学习模型。
What-If工具给出了TensorFlow模型和数据集的指针,提供了一个交互式可视化界面,用于探索模型结果。

根据推断结果的不同,你的示例会被分成不同的颜色,之后可用混淆矩阵和其他自定义形式进行处理,从不同特征的角度显示推断结果。

图片 5

图片 6

What-If工具显示一组250张面部图片及其检测微笑模型的结果

功能二:编辑一个数据点,看模型表现如何

What-If工具功能强大,可以使用Facets自动显示数据集,从数据集手动编辑示例并查看更改的效果,还能自动生成部分依赖图(partial
dependence
plots),显示模型的预测结果随任何单个功能的更改而变化的情况。

你可以编辑、添加或删除任何选定数据点的特性或特性值,然后运行推断来测试模型性能,也可上传全新示例。

图片 7

图片 8

探索数据点上的What-if情景

功能三:发掘单个特征的效果

下面详细介绍What-If工具的两个功能。

可以用来探索为选中数据点中的单个特征自动生成的图,显示特征有效值不同时推断结果的变化。

只需一键,自动对比数据点与模型预测最相似点

图片 9

用户只需单击一个按钮,就可以将数据点与模型预测不同结果的最相似点进行比较。我们称这些点为“Counterfactuals”,可以显示出预测模型的决策边界。用户也可以手动编辑数据点,并探索模型预测的变化。

功能四:探索反事实示例

在下面的截图中,该工具用于二进制分类模型,该模型根据美国人口普查数据集的公共人口普查数据,预测一个人的年收入是否超过5万美元。这是机器学习研究人员使用的基准预测任务,尤其是在分析算法的公平性时。

轻轻一点,你就能比较数据点与模型预测出不同结果的最相似点。我们将这些点称为“反事实”(Counterfactuals),可以反映出模型的决策边界。

在这种情况下,对于选定的数据点,模型预测该人年收入超过5万美元的信度为73%。该工具自动定位数据集中最相似的人,模型预测其年收入低于5万美元,然后将选定数据点和与之最相似、但预测结果相反的数据点进行并排比较。如下图所示,二者只有在年龄和职业上存在微小的差异,但模型的预测结果已经完全相反了。

图片 10

图片 11

功能五:按相似度排列示例

对Counterfactuals的比较。二人只有在年龄和职业上存在微小的差异,但模型的预测结果已经完全相反

用L1或L2距离从选定的数据点创建距离特性,并将其可视化进行进一步分析。

模型性能和算法公平性分析

图片 12

用户还可以探索不同分类阈值的影响,同时考虑不同数值公平性标准等约束条件。下图所示为微笑探测器模型的结果,该模型在开源CelebA数据集上训练,数据集是已标记的名人面部图像。

功能六:查看混淆矩阵和ROC曲线

下图所示数据集中的面部图像按照头发是否为棕色分开,两个图像中的每一组都建立一条ROC曲线和一个预测结果的混淆矩阵,再设置一个置信度滑块,设定模型必须在超过某一置信度时才能判定目标的面部是微笑的。本例中,What-If工具自动设置两组的置信度阈值,以优化模型,实现机会均等。

对于包含描述真实标签特性的二分类模型和示例,使用阈值、ROC曲线、数值混淆矩阵和成本比交互式地探索模型性能。

图片 13

图片 14

使用What-if工具对微笑检测模型两部分数据的预测表现的比较,其中预测模型分类阈值设置满足“机会公平”

功能七:测试算法公平性限制

检测错误分类、评估模型公平性、调查模型不同数据集

对于二分类模型来说,这个工具可以将你的数据集分成子数据集,继而探索不同算法公平性约束(fairness
constraints)的影响。

为了说明What-if工具的功能,我们使用预先训练的模型发布了一组Demo:

图片 15

检测错误分类:多类分类模型,模型根据对植物的花的四次观测来预测植物的种类。What-if工具有助于显示模型的决策边界,弄清导致错误分类的原因。

传送门

评估二元分类模型的公平性:上面提到的用于微笑表情检测的图像分类模型。What-if工具有助于评估不同子图像组的算法公平性。在该模型的训练中,有意没有提供来自特定人群的示例,目的是为了显现What-if工具如何能够揭示模型中的这种偏差。对模型预测公平性的评估需要仔细考虑整体背景,不过What-if工具是一个有用的量化起点。

在谷歌官方博客上,研究人员还发布了用预训练模型进行的一组演示,比如检测错误分类的原因,评估二元分类模型的公平性和调查不同子数据集中模型的表现等。可以移步官方博客查看更多,博客地址:

调查模型在不同子群体中的表现:回归模型可以用于根据人口普查信息预测受试者的年龄。What-if工具能显示出模型在不同子群体中的相对表现,以及不同特征如何单独影响预测结果。该模型使用美国人口普查数据集进行训练。

What-If工具的实地应用

What-If Tool介绍主页:

我们将What-If工具在Google内部团队中进行了测试,该工具在测试中显现出了直接价值。有团队很快发现他们的模型错误地忽略了数据集的整个特征,修复了以前未发现的代码错误。
还有团队使用该工具将模型示例按性能高到低排列出来,并发现表现不佳的模型示例的运行模式。

我们期待Google内外的人们都来使用What-If工具,以更好地理解机器学习模型,并开始评估预测模型的公平性。
我们的代码是开源的,欢迎对该工具继续添砖加瓦。

—返回搜狐,查看更多

Github:

责任编辑:

倒计时 8

返回搜狐,查看更多

责任编辑:

Author

发表评论

电子邮件地址不会被公开。 必填项已用*标注

相关文章