机器学习中的数学——距离定义(二十七):巴氏距离(Bhattacharyya Distance)
2022/1/9 23:34:59
本文主要是介绍机器学习中的数学——距离定义(二十七):巴氏距离(Bhattacharyya Distance),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
在统计中,巴氏距离(Bhattacharyya Distance)测量两个离散或连续概率分布的相似性。它与衡量两个统计样品或种群之间的重叠量的巴氏系数密切相关。巴氏距离和巴氏系数以20世纪30年代曾在印度统计研究所工作的一个统计学家A. Bhattacharya命名。同时,巴氏系数可以被用来确定两个样本被认为相对接近的,它是用来测量中的类分类的可分离性。
首先,我们先定义离散和连续情况下的巴氏系数:
离散值:
B
C
(
p
,
q
)
=
∑
p
(
x
)
q
(
x
)
连续值:
B
C
(
p
,
q
)
=
∫
p
(
x
)
q
(
x
)
d
x
\begin{aligned} &\text{离散值:}BC(p, q)=\sum\sqrt{p(x)q(x)}\\ &\text{连续值:}BC(p, q)=\int\sqrt{p(x)q(x)}\text{d}x \end{aligned}
离散值:BC(p,q)=∑p(x)q(x)
连续值:BC(p,q)=∫p(x)q(x)
dx
在得到了巴氏系数后巴氏距离被定义为:
D
B
(
p
,
q
)
=
−
ln
(
B
C
(
p
,
q
)
)
D_B(p, q)=-\ln(BC(p, q))
DB(p,q)=−ln(BC(p,q))
从公式可以看出,巴氏系数
B
C
(
p
,
q
)
BC(p, q)
BC(p,q)可以海林格距离联系起来,此时海林格距离可以被定义为:
H
(
p
,
q
)
=
1
−
B
C
(
p
,
q
)
H(p, q)=\sqrt{1-BC(p,q)}
H(p,q)=1−BC(p,q)
接下来,我们来看一下求 B C ( p , q ) BC(p, q) BC(p,q)的Python实现以及求出 B C ( p , q ) BC(p, q) BC(p,q)后求解海林格距离和巴氏距离的Python实现:
def BC(p,q): import numpy as np p = np.array(p) q = np.array(q) return np.sum(np.sqrt(p * q)) def HellingerDistance(p, q): import numpy as np bc = BC(p,q) return np.sqrt(1 - bc) def BhattacharyyaDistance(p, q): import numpy as np bc = BC(p,q) return np.log(bc)
这篇关于机器学习中的数学——距离定义(二十七):巴氏距离(Bhattacharyya Distance)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-15PingCAP 黄东旭参与 CCF 秀湖会议,共探开源教育未来
- 2024-05-13PingCAP 戴涛:构建面向未来的金融核心系统
- 2024-05-09flutter3.x_macos桌面os实战
- 2024-05-09Rust中的并发性:Sync 和 Send Traits
- 2024-05-08使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B
- 2024-05-08完工标准(DoD)与验收条件(AC)究竟有什么不同?
- 2024-05-084万 star 的 NocoDB 在 sealos 上一键起,轻松把数据库编程智能表格
- 2024-05-08Mac 版Stable Diffusion WebUI的安装
- 2024-05-08解锁CodeGeeX智能问答中3项独有的隐藏技能
- 2024-05-08RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升