Example-based Machine Learning是什么?
参考: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是什么?的更多相关文章
- 【机器学习Machine Learning】资料大全
昨天总结了深度学习的资料,今天把机器学习的资料也总结一下(友情提示:有些网站需要"科学上网"^_^) 推荐几本好书: 1.Pattern Recognition and Machi ...
- Kernel Functions for Machine Learning Applications
In recent years, Kernel methods have received major attention, particularly due to the increased pop ...
- Machine Learning Algorithms Study Notes(2)--Supervised Learning
Machine Learning Algorithms Study Notes 高雪松 @雪松Cedro Microsoft MVP 本系列文章是Andrew Ng 在斯坦福的机器学习课程 CS 22 ...
- Stanford机器学习笔记-7. Machine Learning System Design
7 Machine Learning System Design Content 7 Machine Learning System Design 7.1 Prioritizing What to W ...
- (转) Graph-powered Machine Learning at Google
Graph-powered Machine Learning at Google Thursday, October 06, 2016 Posted by Sujith Ravi, S ...
- Advice for applying Machine Learning
https://jmetzen.github.io/2015-01-29/ml_advice.html Advice for applying Machine Learning This post i ...
- Practical Machine Learning For The Uninitiated
Practical Machine Learning For The Uninitiated Last fall when I took on ShippingEasy's machine learn ...
- SOME USEFUL MACHINE LEARNING LIBRARIES.
from: http://www.erogol.com/broad-view-machine-learning-libraries/ http://www.slideshare.net/Vincenz ...
- 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 ...
- (转)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 ...
随机推荐
- Unable to resolve service for type 'Microsoft.AspNetCore.ResponseCompression.IResponseCompressionProvider' while attempting to activate 'Microsoft.AspNetCore.ResponseCompression.ResponseCompressionMid
System.InvalidOperationException HResult=0x80131509 Message=Unable to resolve service for type 'Micr ...
- 《Linux就该这么学》培训笔记_ch05_用户身份与文件权限
<Linux就该这么学>培训笔记_ch05_用户身份与文件权限 文章最后会post上书本的笔记照片. 文章主要内容: 用户身份与能力 文件权限与归属 文件的特殊权限 文件的隐藏属性 文件访 ...
- OpenCV+TensorFlow图片手写数字识别(附源码)
初次接触TensorFlow,而手写数字训练识别是其最基本的入门教程,网上关于训练的教程很多,但是模型的测试大多都是官方提供的一些素材,能不能自己随便写一串数字让机器识别出来呢?纸上得来终觉浅,带着这 ...
- Spring中Bean命名源码分析
Spring中Bean命名源码分析 一.案例代码 首先是demo的整体结构 其次是各个部分的代码,代码本身比较简单,不是我们关注的重点 配置类 /** * @Author Helius * @Crea ...
- ubuntu16安装python3
正常情况下,你安装好ubuntu16.04版本之后,系统会自带 python2.7版本,如果需要下载新版本的python3.5,就需要进行更新.下面给出具体教程: 1.首先在ubuntu的终端tern ...
- mapreduce 变量共享
mapreduce 全局变量共享 在编写MapReduce程序时,经常会遇到这样的问题,全局变量如何保存?如何让每个处理都能获取保存的这些全局变量?使用全局变量是不可避免的,但是 在MapRdeuce ...
- Java面向对象入门
Java面向对象入门 一.Java面向对象的基本组成 Java类及类的成员:属性.方法.构造器:代码块.内部类 面向对象三大特征:封装.继承.多态(抽象) 关键字:this.super.static. ...
- Win10开启上帝模式
1.新建一个文件夹2.修改文件夹名字为 上帝模式.{ED7BA470-8E54-465E-825C-99712043E01C}
- Springboot Actuator之十一:actuator transaction
前言spring boot 的自动化配置其实就是在spring 的基础上做的封装,在我们之前对mvc,aop的自动化配置中可以发现–> 只是在spring 的基础上添加了一些特性,可以认为只是一 ...
- Matlab数据标准化——mapstd、mapminmax
Matlab神经网络工具箱中提供了两个自带的数据标准化处理的函数——mapstd和mapminmax,本文试图解析一下这两个函数的用法. 一.mapstd mapstd对应我们数学建模中常使用的Z-S ...