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 ...
随机推荐
- 学习java 7.4
学习内容:遍历字符串要点:for(int i = 0;i < line.length();i++) { System.out.println(line.chatAt(i)); } 字符串拼接: ...
- adhere, adjust, adjacent
adhere to stick,不是to here. 在古英语里,stick是twig(细树枝).fasten(想必是用twig来固定).后引申为粘住.stick还有stab, pierce的意思,想 ...
- Kotlin 学习(2)
属性和字段 1.声明属性 Kotlin中可以使用var关键字声明可变属性,或者用val关键字声明只读属性,属性的类型在后面,变量名在前面,中间加冒号和空格. public class Address ...
- git删除了本地文件,从远程仓库中恢复
在本地删除了文件,使用git pull,无法从远程项目中拉取下来 具体操作 查看项目的状态,会显示出你删除的数据 git status 进入被删除的文件的目录下,假设删除的文件名为 test.txt ...
- Spring Boot下使用JSP页面
一.创建webapp目录 在src/main下创建webapp目录,用于存放jsp文件.这就是一个普通的目录,无需执行Mark Directory As 二.创建jsp 1.指定web资源目录 在sp ...
- 前端两大框架 vue 和 react 的区别
1. 设计思想 vue: vue的官网介绍说vue是一种渐进式框架,采用自底向上增量开发的设计: react: 采用函数式编程,推崇纯组件,数据不可变,单向数据流: 2. 编写语法 vue: 采用单文 ...
- 观察者模式之spring事件机制
ddsspring中的事件机制使用到设计模式中的观察者模式 ,观察者模式有两个概念,1.观察者.被观察者.2.被观察者做出相应得动作,观察者能接收到.不分析设计模式,学习下spring中的事件机制实际 ...
- request.getRequestDispatcher()和response.sendRedirect()区别
一.request.getRequestDispatcher().forward(request,response): 1.属于转发,也是服务器跳转,相当于方法调用,在执行当前文件的过程中转向执行目标 ...
- 使用Stream方式处理集合元素
package com.itheima.demo03.Stream;import java.util.ArrayList;import java.util.stream.Stream;/** * @a ...
- SQL->Python->PySpark计算KS,AUC及PSI
KS,AUC 和 PSI 是风控算法中最常计算的几个指标,本文记录了多种工具计算这些指标的方法. 生成本文的测试数据: import pandas as pd import numpy as np i ...