十三、堪培拉距离 (Canberra Distance)

十四、布雷柯蒂斯距离(Bray Curtis Distance)

十五、交叉熵(Cross Entropy)

十六、相对熵(relative entropy)

十七、js散度(Jensen-Shannon)

十八、测地距离(Geodesic distance)

堪培拉距离 (Canberra Distance)

被认为是曼哈顿距离的加权版本。

其定义公式为:

通常堪培拉距离对于接近于0(大于等于0)的值的变化非常敏感。与马氏距离一样,堪培拉距离对数据的量纲不敏感。不过堪培拉距离假定变量之间相互独立,没有考虑变量之间的相关性。

代码实现:

import numpy as np
p = np.array([11, 0, 7, 8, 0])
q = np.array([24, 37, 5, 18, 1])
n = len(p)
distance = 0
for i in range(n):if p[i] == 0 and q[i] == 0:distance += 0else:distance += abs(p[i] - q[i]) / (abs(p[i]) + abs(q[i]))
print(distance)

布雷柯蒂斯距离(Bray Curtis Distance)

Bray Curtis距离主要用于生态学和环境科学,计算坐标之间的距离。该距离取值在[0,1]之间。它也可以用来计算样本之间的差异。

样本数据:

计算:

代码实现:

import numpy as np
from scipy.spatial.distance import pdistx = np.array([11, 0, 7, 8, 0])
y = np.array([24, 37, 5, 18, 1])# 方法一:根据公式求解
up = np.sum(np.abs(y - x))
down = np.sum(x) + np.sum(y)
d1 = (up / down)# 方法二:根据scipy库求解
X = np.vstack([x, y])
d2 = pdist(X, 'braycurtis')

通常,一个信源发送出什么符号是不确定的,衡量它的不确定性可以根据其出现的概率来度量。概率大,出现机会多,不确定性小;反之就大。

不确定性函数f必须满足两个条件:

1)是概率P的单调递减函数;

2)两个独立符号所产生的不确定性应等于各自不确定性之和,即f(P1,P2)=f(P1)+f(P2),这称为可加性。

同时满足这两个条件的函数f是对数函数,即

在信源中,考虑的不是某一单个符号发生的不确定性,而是要考虑这个信源所有可能发生情况的平均不确定性。若信源符号有n种取值:U1…Ui…Un,对应概率为:P1…Pi…Pn,且各种符号的出现彼此独立。这时,信源的平均不确定性应当为单个符号不确定性-logPi的统计平均值(E),可称为信息熵,即

假设现在有一个样本集中两个概率分布p,q,其中p为真实分布,q为非真实分布。假如,按照真实分布p来衡量识别一个样本所需要的编码长度的期望为:

但是,如果采用错误的分布q来表示来自真实分布p的平均编码长度,则应该是:

我们称H(p)为信息熵,称H(p,q)为交叉熵。

交叉熵在CNN分类中经常用到,用来作为预测值和真实标签值的距离度量。经过卷积操作后,最后一层出来的特征经过softmax函数后会变成一个概率向量,我们可以看作为是概率分布q, 而真实标签我们可以看作是概率分布p, 因此真实分布p和预测分布q的交叉熵就是我们要求的loss损失值,即

代码实现:

import numpy as np
import tensorflow as tffea = np.array([6.5, 4.2, 7.4, 3.5], np.float32)
label = np.array([1, 0, 0, 0])# 方法一:根据公式求解
def softmax(x):return np.exp(x) / np.sum(np.exp(x), axis=0)loss1 = -np.sum(label * np.log(softmax(fea)))# 方法二:调用tensorflow深度学习框架求解
sess = tf.Session()
logits = tf.Variable(fea)
labels = tf.Variable(label)
sess.run(tf.global_variables_initializer())
loss2 = sess.run(tf.losses.softmax_cross_entropy(labels, logits))
sess.close()

相对熵(relative entropy)

又称为KL散度Kullback–Leibler divergence,简称KLD),信息散度(information divergence),信息增益(information gain)。

相对熵是交叉熵与信息熵的差值。即相对熵=交叉熵-信息熵 KL(p||q)=H(p,q)-H(p

表示用分布q模拟真实分布p相比用p模拟p,所需的额外信息。

相对熵(KL散度)有两个主要的性质。如下

(1)尽管 KL 散度从直观上是个度量或距离函数,但它并不是一个真正的度量或者距离,因为它不具有对称性,即

(2)相对熵具有非负性

总结一下

信息熵公式:

交叉熵公式:

相对熵公式:

三者的关系:

使用场景:文本的相似度、推荐系统、用户画像…

代码实现:

import numpy as np
import scipy.statsp = np.asarray([0.65, 0.25, 0.07, 0.03])
q = np.array([0.6, 0.25, 0.1, 0.05])# 方法一:根据公式求解
kl1 = np.sum(p * np.log(p / q))# 方法二:调用scipy包求解
kl2 = scipy.stats.entropy(p, q)

js散度(Jensen-Shannon)

因为kl散度不具对称性,因此js散度在kl散度的基础上进行了改进,可以用于衡量两种不同分布之间的差异。

现有两个分布p1和p2,其JS散度公式为:

代码实现:

import numpy as np
import scipy.statsp = np.asarray([0.65, 0.25, 0.07, 0.03])
q = np.array([0.6, 0.25, 0.1, 0.05])M = (p + q) / 2# 方法一:根据公式求解
js1 = 0.5 * np.sum(p * np.log(p / M)) + 0.5 * np.sum(q * np.log(q / M))# 方法二:调用scipy包求解
js2 = 0.5 * scipy.stats.entropy(p, M) + 0.5 * scipy.stats.entropy(q, M)

测地距离(Geodesic distance)

测地线: 流形上连接两个点的最短曲线

例如:球面上的测地线就是球面上的大圆弧

测地距离:测地线的长度

机器学习领域 几种距离度量方法【3】相关推荐

  1. 【机器学习基础】常见的9种距离度量方法,内含欧氏距离、切比雪夫距离等

    作者|机器之心编译 来源|机器之心 在数据挖掘中,我们经常需要计算样本之间的相似度,通常的做法是计算样本之间的距离.在本文中,数据科学家 Maarten Grootendorst 向我们介绍了 9 种 ...

  2. 数据科学中常见的9种距离度量方法

    选自towardsdatascience 作者:Maarten Grootendorst 机器之心编译 编辑:陈萍 在数据挖掘中,我们经常需要计算样本之间的相似度,通常的做法是计算样本之间的距离.在本 ...

  3. 数据科学中常见的9种距离度量方法(包括曼哈顿距离、欧氏距离、半正矢距离等)

    数据科学中常见的9种距离度量方法(包括曼哈顿距离.欧氏距离.半正矢距离等) 1.欧氏距离(Euclidean Distance) 2.余弦相似度(Cosine Similarity) 3.汉明距离(H ...

  4. 10个机器学习中常用的距离度量方法

    转载:Deephub Imba 距离度量是有监督和无监督学习算法的基础,包括k近邻.支持向量机和k均值聚类等. 距离度量的选择影响我们的机器学习结果,因此考虑哪种度量最适合这个问题是很重要的.因此,我 ...

  5. 机器学习案例系列教程——距离度量方法总结

      在数据挖掘中,无论是对数据进行分类.聚类还是异常检测.关联性分析,都建立在数据之间相似性或相异性的度量基础上.通常使用距离作为数据之间相似性或相异性的度量方法,常用的度量方法有欧式距离.曼哈顿距离 ...

  6. 数据科学中常见的9种距离度量方法,包括欧氏距离、切比雪夫距离、半正矢距离等

    1.欧氏距离(Euclidean Distance) 欧式距离可解释为连接两个点的线段的长度.欧式距离公式非常简单,使用勾股定理从这些点的笛卡尔坐标计算距离. 代码实现: import numpy a ...

  7. 数据挖掘中的12种距离度量原理及实现代码

    本文介绍了12种常用的距离度量原理.优缺点.应用场景,以及基于Numpy和Scipy的Python实现代码. 笔记工具:Notability 文章目录 1. 个人笔记 2. 代码实现 1)闵可夫斯基距 ...

  8. 常见距离度量方法优缺点对比!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 译者:张峰,安徽工业大学,Datawhale成员 许多算法,不管是有监督 ...

  9. 机器学习常用的距离度量方法

    机器学习领域常常会遇到求解相似度的问题,通常可以转化为对距离的求解,最常用的是对"向量"的距离求解.比如,求解某物品A和某物品B之间的相似度,可以收集它们共有特征,构建特征向量a和 ...

最新文章

  1. ios 沙盒 plist 数据的读取和存储
  2. thinkphp学习笔记10—看不懂的路由规则
  3. Source Insight 常用设置和快捷键大全
  4. 征集对Oracle的问题
  5. Windows11右下角出现评估副本水印如何去除?
  6. 忘记mysql数据库名称_忘记MySQL数据库密码的解决办法
  7. tqdm使用(Python进度条)
  8. python中冒号报错_python中一些常见的错误_后端开发
  9. c语言结构体实验张三丰,如何成为公务员考试结构化面试里的张三丰
  10. 盛科交换机配置命令_cisco2960交换机 清除配置的命令
  11. paip.模块间同步登录SSO实现总结
  12. 计算机考试考什么二级,计算机国家二级考试会考什么内容?怎么考?
  13. 微信小程序 13 排行榜的编写
  14. 做H5页面用什么软件比较好?3款易上手好用的H5网页编辑工具
  15. C#_CRC-16/CCITT-FALSE计算加判断
  16. SEED LABS初入
  17. 24点计算器c语言源代码,萌新求助!!24点游戏计算器
  18. 第十届ACM山东省赛总结
  19. 177本名著浓缩成了177句话
  20. 树的基本概念和遍历规则 数据结构和算法 二叉树遍历(前序、中序、后序、层次、深度优先、广度优先遍历)

热门文章

  1. Nordic芯片如何达到最快的蓝牙传输速率
  2. 熟练计算机的招聘启事,招聘启事:水木社区、新电脑
  3. 计算机网络名词解释www万维网,网络名词解释
  4. (一)ProxmoxVE 初识
  5. 2021年12月电子学会青少年软件编程(图形化)等级考试试卷(一级)答案解析
  6. android手机定时截屏软件,手机截图软件哪个好 安卓手机长截图
  7. 当一个摆子前端太闲的时候会做什么
  8. 信贷客户调查中最需关注的十个方面(附经典案例解析)
  9. 计算机网络概论(不完整版,突然想随便写写)
  10. 检测Android应用(APP)的启动与关闭