MMD
概
本文介绍了一种衡量不同数据分布之间一致性的统计量.
主要内容
在统计中, 我们常常需要讨论两组数据是否采样自同一个分布. 一个最常见的问题或许就是, 训练数据和测试数据的偏移, 本文的重点是提出MMD作为一个衡量二者是否采样自同一个数据的指标, 后续的KMM则是其用于处理这种偏移的一种方法.
定义
假设\(\mathcal{F}\)是一类\(f:\mathcal{X} \rightarrow \mathbb{R}\)的函数, 而\(p, q\)分别是两个博雷尔概率分布,即概率空间为\((\mathbb{R}^d, \mathscr{B}(\mathbb{R})^d, p|q)\) . 并令\(X=(x_1, x_2,\ldots, x_m), Y=(y_1, y_2,\ldots, y_n)\)分别独立采样自\(p, q\). 则MMD与经验MMD按照如下方式定义:
\mathrm{MMD}[\mathcal{F},p,q] := \sup_{f \in \mathcal{F}} (\frac{1}{m} \sum_{x \in X} f(x) - \frac{1}{n} \sum_{y\in Y} f(y)). \\
\]
首先, 倘若\(p=q\), 那么显然\(\mathrm{MMD}[\mathcal{F}, p, q]=0\), 但是当\(p \not= q\)的时候, 我们总能找到一些\(f\)令MMD为正. 不过这一性质对于经验MMD就有所不同了, 由于采样个数有限, \(X, Y\)总会有一些不同, 所以这一指标往往永远不为0.
若是要估计上面的式子, 这是非常困难的, 而且某种程度上是没有意义的, 因为一旦找到一个\(f\)使得MMD非零, 我们可以去\(f':=\alpha \cdot f\)使得MMD任意大. 所以第一步便是要限制\(\mathcal{F}\), 很自然的方式是限制其在范数球上\(\|f\| \le 1\), 但这并没有改变困难的本质. 要知道\(p=q\)的一个充分必要条件是
\]
而所有的连续函数都能由 universal RKHS (reproducing kernel Hilbert space)中的函数来逼近, 故我们完全可以将\(\mathcal{F}\)限制在这样一个空间之上.
MMD for kernel function classes
接下来我们在 universal RKHS \(\mathcal{H}\)上讨论, 该空间通过给定核\(k(\cdot, \cdot)\)来确定, 此时\(\phi_x=k(x, \cdot)\) . 当然你也可以说是先有的\(\phi\), 然后\(k(x, y)=\langle \phi_x, \phi_y \rangle\)也是可以的. 此时, 是假设对于任意的\(x \in \mathcal{X}\)存在\(L_x: f \rightarrow f(x)\), 且\(L_x\)是一个有界线性算子, 根据Riesz表示引理, \(L_x(f)=f(x) = \langle f, \phi_x \rangle_{\mathcal{H}}\), 其中\(\phi_x \in \mathcal{H}\).
回到由\(k(\cdot, \cdot)\)定义的\(\mathcal{H}\)中来, 此时的MMD可以便成了
= \sup_{\|f\|_{\mathcal{H}} \le 1} \mathbb{E}_p [\langle \phi_x, f\rangle_{\mathcal{H}}] - \mathbb{E}_q [\langle \phi_x, f\rangle_{\mathcal{H}}] = \|\mu_p-\mu_q\|_{\mathcal{H}},
\]
其中\(\mu_p=\mathbb{E}_p [\phi_x], \mu_q = \mathbb{E}_q [\phi_x]\).
\(\mathrm{MMD}^2\) 一个无偏统计量
定义
\mathrm{MMD}^2 [\mathcal{H}, X, Y] = \frac{1}{m(m-1)}\sum_{i \not = j}k(x_i, x_j) + \frac{1}{n(n-1)}\sum_{i \not = j } k(y_i, y_j) - \frac{2}{mn} \sum_{i,j} k(x_i, y_j).
\]
容易证明\(\mathrm{MMD}^2[\mathcal{H}, X, Y]\)是\(MMD^2[\mathcal{H}, p, q]\)的一个无偏统计量.
当\(m=n\)的时候, 进一步有
\]
其中
\]
MMD test
通过上述推论便可知我们应该如何检验, 并且具体算法如下.
注: \(\mathrm{Pr}(z > z_{\alpha}) = \alpha \Rightarrow \mathrm{Pr}(-z_{\alpha}<z <z_{\alpha})=1-\alpha\), 又\(\mathrm{erf}(x) = \Phi(\sqrt{2}x) - \Phi(-\sqrt{2}x)\), 所以\(\mathrm{erfinv}(1-2\alpha) = \frac{1}{\sqrt{2}} z_{\alpha}\), 这是算法里那个式子的由来.
MMD的更多相关文章
- 【自制插件】将MMD4Mecanim转换的MMD模型导入maya
这个已经废弃了_(:зゝ∠)_,另外做了升级版: http://www.cnblogs.com/marisa/p/5174150.html ============================== ...
- MMD日文乱码解决
记录一下自己在学习MMD遇到的问题. 日文乱码是很常见的,因为很多MMD资源是日本的. 1.解压乱码 我以好压为例,其他解压软件也是可以通过设置解决的 设置
- 在写一点关于MySQL的知识,感觉自己mmd
DBMS(Database Management System)数据库管理系统 包括有DDL(数据定义语言)和DML(数据操纵语言)以及DCL(数据库控制语言) 数据库设计方法: 1.需求分析阶段 ...
- 探索ASP.NET MVC5系列之~~~2.视图篇(上)---包含XSS防御和异步分部视图的处理
其实任何资料里面的任何知识点都无所谓,都是不重要的,重要的是学习方法,自行摸索的过程(不妥之处欢迎指正) 汇总:http://www.cnblogs.com/dunitian/p/4822808.ht ...
- 从Maya中把模型搬运至网页的过程
虽然利用threejs来在网页中渲染3d模型不是第一次折腾了,但是还是遇到了各种问题.总结下我所遇到的问题,希望能给正在使用threejs的小伙伴一个帮助. 一.所使用的软件与开发环境 Maya201 ...
- 在sql server中建存储过程,如果需要参数是一个可变集合怎么处理?
在sql server中建存储过程,如果需要参数是一个可变集合的处理 原存储过程,@objectIds 为可变参数,比如 110,98,99 ALTER PROC [dbo].[Proc_totalS ...
- SparkStreaming实现Exactly-Once语义
作者:Syn良子 出处:http://www.cnblogs.com/cssdongl 转载请注明出处 译自:http://blog.cloudera.com/blog/2015/03/exactly ...
- lucene+IKAnalyzer实现中文纯文本检索系统
首先IntelliJ IDEA中搭建Maven项目(web):spring+SpringMVC+Lucene+IKAnalyzer spring+SpringMVC搭建项目可以参考我的博客 整合Luc ...
- mysql提供dataprovider
import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.Inpu ...
随机推荐
- day10 负载均衡
day10 负载均衡 负载均衡反向代理 正向代理:即是客户端代理, 代理客户端, 服务端不知道实际发起请求的客户端. # (内部上网) 客户端 <-> 代理 -> 服务端 反向代理即 ...
- react动态添加样式:style和className
react开发过程中,经常会需要动态向元素内添加样式style或className,那么应该如何动态添加呢??? 一.react向元素内,动态添加style 例如:有一个DIV元素, 需要动态添加一个 ...
- LeetCode33题——搜索旋转排序数组
1.题目描述 假设按照升序排序的数组在预先未知的某个点上进行了旋转. ( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] ). 搜索一个给定的目标值,如果数组中存 ...
- 数据源(Data Source
数据源(Data Source)顾名思义,数据的来源,是提供某种所需要数据的器件或原始媒体.在数据源中存储了所有建立数据库连接的信息.就像通过指定文件名称可以在文件系统中找到文件一样,通过提供正确的数 ...
- 渐进式web应用 (PWA)
PWA(渐进式 Web 应用)运用现代的 Web API 以及传统的渐进式增强策略来创建跨平台 Web 应用程序. PWA的特点: Discoverable, 内容可以通过搜索引擎发现. Instal ...
- python实现skywalking的trace模块过滤和报警
skywalking本身的报警功能,用起来视乎不是特别好用,目前想实现对skywalking的trace中的错误接口进行过滤并报警通知管理员和开发.所以自己就用python对skywalking做了二 ...
- 调整markdown 图片大小和对齐方式
[博客园]调整markdown 图片大小和对齐方式 图片大小 例 <img src="https://img2020.cnblogs.com/blog/2199257/202101/2 ...
- dart系列之:浏览器中的舞者,用dart发送HTTP请求
目录 简介 发送GET请求 发送post请求 更加通用的操作 总结 简介 dart:html包为dart提供了构建浏览器客户端的一些必须的组件,之前我们提到了HTML和DOM的操作,除了这些之外,我们 ...
- LuoguP7127 「RdOI R1」一次函数(function) 题解
Content 设 \(S_k\) 为直线 \(f(x)=kx+k-1\),直线 \(f(x)=(k+1)x+k\) 与 \(x\) 轴围成的三角形的面积.现在给出 \(t\) 组询问,每组询问给定一 ...
- 前端er必须掌握的数据可视化技术
又是一月结束,打工人准时准点的汇报工作如期和大家见面啦.提到汇报,必不可少的一部分就是数据的汇总.分析. 作为一名合格的社会人,我们每天都在工作.生活.学习中和数字打交道.小到量化的工作内容,大到具体 ...