参考:https://christophm.github.io/interpretable-ml-book/proto.html

EML简介

Example-based Machine Learning (EML) 是从数据集中选择特殊的样本来进行学习。下面看几个例子来理解:

  • 一个医生给一个病人看病,该病人咳嗽症状与常见的不太一样,而且发烧严重。这让医生想起了之前的一个病人也是这种症状,于是他怀疑该病人可能和之前的那个病人是同样的病因。

  • 一个程序猿接到了一个新的客户的需求。他经过分析后发现,这个需求很大部分与之前的一个项目类似,于是他打算基于原来的项目重新开发这个新的项目。

上面例子遵循的一个原则是:如果B事件和A事件类似,而且A事件会导致Y事件发生,那么B事件也有可能让Y事件发生。

我们看看有哪些算法遵循上面的原则:

  • 决策树:根据数据在各种重要的特征的相似性来将数据划分到各个叶子节点中去。当有新的数据来的时候,根据样本之间的相似性进行判断。
  • KNN:该算法更好理解,就是计算新样本与各个样本之间的距离,从最相近的前K个样本中选出最相近的样本做出预测。

下面介绍各种EML算法。

Counterfactual Method

Counterfactual简单理解就是反事实(思考或解释)。人类经常会这样反事实的思考,例如我们一早坐下来,啜一口咖啡,然后就问自己,如果我生在南非而不是美国的话,生活会变成怎样,如果地球的轨道离太阳的距离缩短几干米,世界又会变成怎样。

例子

那如何应用到机器学习中去呢?假如你现在有一套房子出租,你已知房子面积(20平米),年龄(10年),位置(深山老林),家居情况,房子布局等情况,并基于这些信息构建了一个房租预测模型,结果预测为每个月只能租100元人民币,你觉得这怎么能行,这跟你心中的2000一个月相差甚远。于是你调整各种参数来看房租的变化,你把房子面积设置为100平米,结果预测为10000元每月,你看到结果后满心欢喜,但是很快认清了现实,因为这不可能。于是你微调房子布局,例如增大客厅面积,或者增设厨房,又或者换上土豪色的地板,这些微调都使得预测的房子涨到了你所期望的2000元每月。以上意淫就是所谓的反事实。

形式化表达

\[
L\left(x, x^{\prime}, y^{\prime}, \lambda\right)=\lambda \cdot\left(\hat{f}\left(x^{\prime}\right)-y^{\prime}\right)^{2}+d\left(x, x^{\prime}\right)
\]

上面的\(x,x'\)分别表示真实数据值和反事实数据值,\(y'\)表示预期的输出,\(\hat{f}(x')\)表示模型对反事实数据的预测值。

第一项表示模型预测值和预期输出值之间的差距,简单理解就是你YY你的房子各种修改之后可能的房租和你心目中满意的房租的差距。

第二项表示反事实数据和真实值之间的距离,也就是说你YY的程度大小,如果你YY你的房子面积从20平米变成100平米,这会使得损失函数非常大,所以算法优化过程中会让你这个YY降低。

\(\lambda\)的作用就是在与预期值的接近程度YY的严重程度之间做平衡。当然这个值是很难选取的,所以另一种办法就是你自己设定一个阈值,例如,你希望房租是2000元每月,而且你也知道这很难,所以你觉得1500也还可以。该限制条件形式如下:

\[
\left|\hat{f}\left(x^{\prime}\right)-y^{\prime}\right| \leq \epsilon
\]

最终优化表达式为:

\[
\arg \min _{x^{\prime}} \max _{\lambda} L\left(x, x^{\prime}, y^{\prime}, \lambda\right)
\]

算法评价

优点:

  • 可解释性强:因为通过调整不同的特征值或样本能够得到不同的预测,并且这些预测可能会和预期一致,当不一致的时候也就表示可能达到了某个阈值。
  • 不需要获取数据或者模型,或者说只需模型预测结果就可以了。假如我们是一个房租价格预测模型的提供商,我们只把模型预测的API接口卖给别人,这样我们可以不断赚钱。另外用户用了我们的模型后,发现预测结果真的挺不错的,但是又没办法得到模型结构,于是它可以通过不断调用API来构建输入与输出之间的关系进而理解模型。因此该算法在解释模型预测和保护模型拥有者利益之间做了平衡。

缺点:

  • 罗生门效应:意思是对于一个样本,也许我们对他的若干个属性(例如房子面积,有无厨房等)分别作了不同的修改得到了多个不同的新样本,最后得到的结果可能是都有所提升(房租都提升了)。这个时候你很难说到底是哪个属性起了作用,就好像同一个事件,不同的人会有不同的看法,你很难确定你的角度是全面的。
  • 容忍度\(\epsilon\)也是很难找到合适的,不过这个不一定是方法上错了,也一定程度上取决于数据。
  • 无法处理类别(categorical)特征。虽然可以单独地对每一个特征组合做处理,但是随着特征数量增加,组合特征数量会呈爆炸增长,处理起来也不现实。

Adversarial Example(对抗样本)

Adversarial Example(AE)的作用和Counterfactual Example有点类似,只不过前者是用来对模型进行解释的,而AE是用来迷惑模型的,以此来加强模型的鲁棒性。AE其实也就是最近非常火爆的GAN算法,这里就不做过多介绍了。

Prototypes and Criticisms

Prototype是能够表示所有数据的数据实例,而Criticism则是不能由一组prototypes很好表示出来的数据实例,如下图所示:

求解prototypes的方法有很多,很多聚类算法就可以实现这个,但是大都只能找到prototypes,不能找到criticism。所以下面介绍MMD-critic算法,该算法可以找到prototypes和criticism。

MMD-critic

该算法可以简单总结总如下:

  • 设置prototypes和criticism的数量
  • 使用贪婪搜索找到prototypes(具有代表性的样本)。
  • 使用贪婪搜索找到criticisms(不具代表性的样本)。

MARSGGBO♥原创

如有意合作或学术讨论欢迎私戳联系~
微信:marsggbo
邮箱:marsggbo@foxmail.com




2019-10-06 18:21:35

Example-based Machine Learning是什么?的更多相关文章

  1. 【机器学习Machine Learning】资料大全

    昨天总结了深度学习的资料,今天把机器学习的资料也总结一下(友情提示:有些网站需要"科学上网"^_^) 推荐几本好书: 1.Pattern Recognition and Machi ...

  2. Kernel Functions for Machine Learning Applications

    In recent years, Kernel methods have received major attention, particularly due to the increased pop ...

  3. Machine Learning Algorithms Study Notes(2)--Supervised Learning

    Machine Learning Algorithms Study Notes 高雪松 @雪松Cedro Microsoft MVP 本系列文章是Andrew Ng 在斯坦福的机器学习课程 CS 22 ...

  4. Stanford机器学习笔记-7. Machine Learning System Design

    7 Machine Learning System Design Content 7 Machine Learning System Design 7.1 Prioritizing What to W ...

  5. (转) Graph-powered Machine Learning at Google

        Graph-powered Machine Learning at Google     Thursday, October 06, 2016 Posted by Sujith Ravi, S ...

  6. Advice for applying Machine Learning

    https://jmetzen.github.io/2015-01-29/ml_advice.html Advice for applying Machine Learning This post i ...

  7. Practical Machine Learning For The Uninitiated

    Practical Machine Learning For The Uninitiated Last fall when I took on ShippingEasy's machine learn ...

  8. SOME USEFUL MACHINE LEARNING LIBRARIES.

    from: http://www.erogol.com/broad-view-machine-learning-libraries/ http://www.slideshare.net/Vincenz ...

  9. A Gentle Introduction to the Gradient Boosting Algorithm for Machine Learning

    A Gentle Introduction to the Gradient Boosting Algorithm for Machine Learning by Jason Brownlee on S ...

  10. (转)8 Tactics to Combat Imbalanced Classes in Your Machine Learning Dataset

    8 Tactics to Combat Imbalanced Classes in Your Machine Learning Dataset by Jason Brownlee on August ...

随机推荐

  1. Java判断文件类型

    通常,在WEB系统中,上传文件时都需要做文件的类型校验,大致有如下几种方法: 1. 通过后缀名,如exe,jpg,bmp,rar,zip等等. 2. 通过读取文件,获取文件的Content-type来 ...

  2. kubernetes学习一:安装及部署第一个Web应用

    准备工作 首先准备Kubernets的环境,使用的是centos7.5 关闭防火墙: # systemctl disable firewalld # systemctl stop firewalld ...

  3. ASP.NET Core的无状态身份认证框架IdentityServer4

    Identity Server 4是IdentityServer的最新版本,它是流行的OpenID Connect和OAuth Framework for .NET,为ASP.NET Core和.NE ...

  4. C语言之四则运算表达式求值(链栈)—支持浮点型数据,负数, 整型数据运算

     运算符间的优先级关系: 链栈结构体定义: 数据域使用字符串长度为20的字符数组(故需要注意判断读取的字符串是运算符还是数值) 可支持浮点型数据,负数, 整型数据的运算 float EvaluateE ...

  5. 整理:C#中Expression表达式的妙用

    原文:整理:C#中Expression表达式的妙用 一.目的:通过示例了解C#中Expression表达式的作用,通过表达式和反射可以写出很优雅的代码和架构,也可以完成一些看似不可能完成的任务 二.示 ...

  6. 用友U9 部署

    手工部署 对于插件式开发,或者自定义单据开发,无法用U9构造系统生成补丁包,所以必须手工部署. 部署文件 脚本:直接执行(最好有事务保护) Deploy文件:拷贝到Potal\ApplicationL ...

  7. Navicat 破解版(操作非常简单)

    Navicat 破解版(操作非常简单) 参考这位老哥的博客,之前试过好多个,只有这个是最简单有效的 https://blog.csdn.net/WYpersist/article/details/86 ...

  8. k-匿名算法

    30 November 2019 18:31     人类历史上,除了计算机外从没有一项技术可以在短短的几十年间,能够全方位的影响整个社会的各个领域.技术的发展,少不了许多代人为之的努力.无论是在计算 ...

  9. springboot 全局异常捕获,异常流处理业务逻辑

    前言 上一篇文章说到,参数校验,往往需要和全局的异常拦截器来配套使用,使得返回的数据结构永远是保持一致的.参数异常springboot默认的返回结构: { "timestamp": ...

  10. 【转载】C#通过InsertAt方法在DataTable特定位置插入一条数据

    在C#中的Datatable数据变量的操作过程中,可以通过DataTable变量的Rows属性的InsertAt方法往DataTable的指定位置行数位置插入一个新行数据,即往DataTable表格指 ...