原文链接:What is Metric Learning?

许多机器学习方法都需要度量计算数据点之间的距离。传统作法是利用相关领域的先验知识来选择一个标准的距离度量,例如:欧式距离、城市距离、余弦距离,等等。然而,很难针对特定的数据与感举兴趣的任务设计合适的度量。
距离度量学习(或者简单的称之为度量学习)旨在自动的从有监督的数据中,以机器学习的方式构造出与任务相关的距离度量。学习到的距离度量可以用于不同的任务的任务,例如,K-NN分类、聚类、信息检索。

1. 问题定义

根据可依赖的训练数据的形式,可将度量学习问题公成两类:

  • 有监督学习:算法不得不接近一列数据点集,其中的每一个数据有带有类别标签。一般来说,有监督下的度量学习的目的是为了学到这样的距离度量,这个距离度量能够将具有相同标签(同类)的数据点拉近,并将不同标签(异类)的数据点推开
  • 弱监督学习:该算法仅在元组级别(二元组、三元组,或者四元组)的监督下访问一组数据点。这种较弱的监督的一个典型例子是一组正对和负对;在这种情况下,目标是学习一个距离度量,将正对放在一起,负对放在远处。

2. 马氏距离

在metric-learn包中,所有当前的算法都学习一个被称之为“马氏距离”的度量。给定一个实参数距离L∈Rn×mL\in R^{n\times m}L∈Rn×m,其中nnn为维数,mmm为数据的特征个数。马氏距离可以表示成如下形式:
D(x,x′)=(Lx−Lx′)T(Lx−Lx′)D(x,x')=\sqrt{(Lx-Lx')^T(Lx-Lx')}D(x,x′)=(Lx−Lx′)T(Lx−Lx′)​

换句话说,马氏距离就是特征空间通过矩阵LLL做完线性变换后的欧式距离。当LLL为单位阵时,马氏距离就等于欧式距离。马氏距离的度量学习可以看作是学习一个新的nnn维嵌入空间。注意到,当nnn是比mmm要小时,达到降维的效果。

严格意义上,马氏距离是一种伪度量:它满足度量的三个特性(非负,对称,三角不等式)。

注意:马氏距离也可以参数化为一个半正定的矩阵MMM:
D(x,x′)=(x−x′)TM(x−x′)D(x,x')=\sqrt{(x-x')^TM(x-x')}D(x,x′)=(x−x′)TM(x−x′)​
此处,M=LTLM=L^TLM=LTL。因此,对该度量学习问题的求解可是求解MMM,也可以是LLL。

3. 用途

度量学习的用途有很多,我们下面介绍一些受欢迎的例子。具体例子请看example。

  • 最近邻模型:学习到的度量能够用来提升最近邻学习模型的分类、回归、自动检测的性能;
  • 聚类:度量学习能够提供一种方法,可以使算法(如K-Means)发现聚类更倾向于预期的语义;
  • 信息检索:学习到的度量可以用来检索在数据集中与查询元素在语义上更紧密的目标;
  • 降维:度量学习可以被当作在弱监督设置下的一种降维方法;
  • 更一般地,学到的变换矩阵LLL能够用于将数据映射到一个新的嵌入空间,进行降维,接着用于后续的机器学习算法。

metric-learn包的应用接口是基于scikit-learn。我们能很方便地将度量学习器与其它基于scikit-learn的估计器实现其它用途。

4. 补充阅读

关于更多度量学习的信息与应用,我们可以参考以下文献:

  • 教程: Similarity and Distance Metric Learning with Applications to Computer Vision (2015)
  • 综述::A Survey on Metric Learning for Feature Vectors and Structured Data (2013), Metric Learning: A Survey (2012)
  • 书籍:Metric Learning (2015)

度量学习系列(1):什么是度量学习相关推荐

  1. 大数据学习系列:Hadoop3.0苦命学习(一)

    传送门: 大数据学习系列:Hadoop3.0苦命学习(一) 大数据学习系列:Hadoop3.0苦命学习(二) 大数据学习系列:Hadoop3.0苦命学习(三) 大数据学习系列:Hadoop3.0苦命学 ...

  2. 大数据学习系列:Hadoop3.0苦命学习(五)

    传送门: 大数据学习系列:Hadoop3.0苦命学习(一) 大数据学习系列:Hadoop3.0苦命学习(二) 大数据学习系列:Hadoop3.0苦命学习(三) 大数据学习系列:Hadoop3.0苦命学 ...

  3. 大数据学习系列:Hadoop3.0苦命学习(七)

    传送门: 大数据学习系列:Hadoop3.0苦命学习(一) 大数据学习系列:Hadoop3.0苦命学习(二) 大数据学习系列:Hadoop3.0苦命学习(三) 大数据学习系列:Hadoop3.0苦命学 ...

  4. Hadoop学习系列之Hadoop、Spark学习路线(很值得推荐)

    Hadoop学习系列之Hadoop.Spark学习路线(很值得推荐) 文章出自:http://www.cnblogs.com/zlslch/p/5448857.html 1 Java基础: 视频方面: ...

  5. 元强化学习系列(1)之:元学习入门基础

    元强化学习三境界 统计学是人工智能开始发展的一个基础,古老的人们从大量的数据中发现七所存在的规律,在以统计学为基础的 机器学习(machine learning)时代,复杂一点的分类问题效果就不好了, ...

  6. 深度强化学习系列之(13): 深度强化学习实验中应该使用多少个随机种子?

    How Many Random Seeds Should I Use? Statistical Power Analysis in (Deep) Reinforcement Learning Expe ...

  7. 深度强化学习系列: 最全深度强化学习资料

    关于这项工作: 本工作是一项由深度强化学习实验室(Deep Reinforcement Learning Laboratory, DeepRL-Lab)发起的项目. 文章同步于Github仓库: ht ...

  8. 吴恩达.深度学习系列-C1神经网络与深度学习-W1介绍

    什么是神经网络 用神经网络进行监督学习 why is Deep Learning taking off?为啥神经网络能流行起来? About this Course Heroes of Deep Le ...

  9. 大数据Hadoop学习系列之Hadoop、Spark学习路线

    1 Java基础: 视频方面:推荐毕老师<毕向东JAVA基础视频教程>. 学习hadoop不需要过度的深入,java学习到javase,在多线程和并行化多多理解实践即可. 书籍方面:推荐李 ...

  10. Hadoop学习系列之Hadoop、Spark学习路线

    1 Java基础: 视频方面:推荐毕老师<毕向东JAVA基础视频教程>. 学习hadoop不需要过度的深入,java学习到javase,在多线程和并行化多多理解实践即可. 书籍方面:推荐李 ...

最新文章

  1. c语言case后加3 5,10.程序流程控制:switch-case
  2. 在 C/C++ 中使用 TensorFlow 预训练好的模型—— 直接调用 C++ 接口实现
  3. 点石关键词排名优化软件_重庆关键词优化排名
  4. Uber “杀人”事件
  5. [转载] [556]python实现神经网络
  6. 白话数字签名(1)——基本原理
  7. MSP430G2553电子时钟实验
  8. 人体姿态估计综述 2020最全
  9. 财商第2课笔记_复利
  10. 银行机构的分类、特点及转型方向
  11. Android Studio 开发 C盘减肥
  12. 浅谈领导力理解和体会
  13. java 加密并打包_java实现将多个文件打包成zip压缩文件以及对压缩文件的加密
  14. 国内首款安全三级密码卡诞生!
  15. eventBus VSvueX
  16. seo日常工作表_SEO日常工作内容主要有哪些
  17. 图像分割:LR-ASPP模型介绍
  18. html追加没有样式,html中append追加的表格元素和静态显示的元素样式不同?
  19. Hexo+NexT 如何取消下划线
  20. 【.NET学习】.NET入门及学习路线

热门文章

  1. python岗位任职要求-2020 python web开发就业要求锦集
  2. c++语言+注释符号在哪里,常见编程语言中的注释符号和格式
  3. Oracle计算年龄:年、月、天
  4. python 中 pandas 忽略警告错误
  5. 计组 | DRAM芯片、多模块存储器、加法器标志位、软件硬件的关系、扩展操作码、程序转换过程
  6. linux中查看cpu和内存的命令,Linux系统如何查看cpu和内存信息
  7. Open3D 可视化numpy点云数据
  8. ACM模板--几何(多边形)
  9. 软件测试猿把握这7个阶段,成为“隐形富裕人口”实现致富梦!
  10. manjora上好玩的游戏_强势推荐!steam平台最值得入正的游戏