参考: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. [解决方案]IIS常见问题集锦

    内容 地址 更新时间 IIS7如何实现访问HTTP跳转到HTTPS访问 https://www.cnblogs.com/xiefengdaxia123/p/8542737.html 2019-10-1 ...

  2. docker nginx-php容器镜像瘦身优化

    1. 在安装好php环境的容器,参考上面贴出的链接那篇文章的部分,做好基础工作: #创建工作目录 mkdir /rootfs #进入工作目录 cd /rootfs #创建基础目录 mkdir -p b ...

  3. 二叉树遍历(前序、中序、后序)-Java实现

    一.前序遍历 访问顺序:先根节点,再左子树,最后右子树:上图的访问结果为:GDAFEMHZ. 1)递归实现 public void preOrderTraverse1(TreeNode root) { ...

  4. Alpha冲刺——总结篇

    课程信息 课程 软件工程1916|W(福州大学) 团队名称 修!咻咻! 作业要求 项目Alpha冲刺 团队目标 切实可行的计算机协会维修预约平台 团队信息 队员学号 队员姓名 个人博客地址 备注 22 ...

  5. html5滚动页面简单写法

    html5滚动页面简单写法纵向滚动比较简单 直接在外面加个高度 然后overflow-y: auto; 横向比较复杂了外面写两层 最外面一层写个宽度 overflow-x: auto;第二层 写wid ...

  6. CentOS7-部署测试Apollo

    linux部署apollo环境要求:jdk1.8.mysql5.7 centos7安装jdk1.8跟mysql5.7可以参考我这两篇文章 https://www.cnblogs.com/reasonz ...

  7. [转帖]统一操作系统 UOS 龙芯版上线

    统一操作系统 UOS 龙芯版上线 看评论很有必要 搞一波 深度的操作系统了https://www.oschina.net/news/112065/chinauos-with-loongson?p=4 ...

  8. 一个刚入行的BIOS工程师的自我简介

    现在是北京时间2019年11月28日,大学毕业已经工作四个多月.说来也是奇怪,大学里面明明主修机械电子工程,几乎是纯机械方向,毕业之后的工作却与主修的课程毫无关系.因为对机械这一行业毫无兴趣,大学里面 ...

  9. C基础 带你手写 redis adlist 双向链表

    引言 - 导航栏目 有些朋友可能对 redis 充满着数不尽的求知欲, 也许是 redis 属于工作, 交流(面试)的大头戏, 不得不 ... 而自己当下对于 redis 只是停留在会用层面, 细节层 ...

  10. [SOJ #696]染色(2019-11-10考试)/[Atcoder MUJIN Programming Challenge C]Orange Graph

    题目大意 有一个\(n\)个点\(m\)条边的简单无向连通图,初始为白色,可以执行操作让一些边变黑,要求使得操作后的图不存在黑色的奇环,且不能使得其他的任何变黑而还符合要求.问最后有多少可能结果.\( ...