参考: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. 异步IRP的教训(已附DUMP)

    [教训]异步IRP中,IoSetCompletionRoutine()要在IoCallDriver()的前面,不然底层驱动完成了读写之后,找不到完成例程,会导致出错.看似简单,不小心却可能带来大麻烦. ...

  2. 深入解密来自未来的缓存-Caffeine

    1.前言 读这篇文章之前希望你能好好的阅读: 你应该知道的缓存进化史 和 如何优雅的设计和使用缓存? .这两篇文章主要从一些实战上面去介绍如何去使用缓存.在这两篇文章中我都比较推荐Caffeine这款 ...

  3. c# 创建socket连接辅助类-可指定超时时间

    using AD.SocketForm.Model; using NLog; using System; using System.Net.Sockets; using System.Threadin ...

  4. css3自定义上传图片输入框的方法

    css3自定义上传图片输入框的方法 代码如下<pre> <form class="form1"> <img src="/kelatoupia ...

  5. 使用Kafka Connect创建测试数据生成器

    在最近的一些项目中,我使用Apache Kafka开发了一些数据管道.在性能测试方面,数据生成总是会在整个活动中引入一些样板代码,例如创建客户端实例,编写控制流以发送数据,根据业务逻辑随机化有效负载等 ...

  6. php redis扩展安装步骤

    因为redis不是php技术自带的技术,因此我们如果要通过php程序来操作redis,需要redis设计者提供对应的操作接口(函数类)我们使用phpredis.tar.gz文件在源码编译生成一个red ...

  7. GoF的23种设计模式之结构型模式的特点和分类

    结构型模式描述如何将类或对象按某种布局组成更大的结构.它分为类结构型模式和对象结构型模式,前者采用继承机制来组织接口和类,后者釆用组合或聚合来组合对象. 由于组合关系或聚合关系比继承关系耦合度低,满足 ...

  8. .NET / C# EF中的基础操作(CRUD)

    查 public List<users> Querys() { datatestEntities db = new datatestEntities(); var a = db.users ...

  9. mvc中hangfire全局简单配置

    public void Configuration(IAppBuilder app)       {           ConfigureAuth(app);           //指定使用Sql ...

  10. AnimationClip压缩-动画文件压缩

    动画压缩方法一.常用方法1. Rig->Animation Type:改为Generic2. Animations->Anim.Compression:Optimal二.高级方法1. 去掉 ...