AI 漫天,我们坚持手做论坛。

新加坡 11-08 01:20 · 吉隆坡 01:20 · 雅加达 00:20 · 曼谷 00:20 · 马尼拉 01:20 · 胡志明 00:20 · 北京 01:20 · 东京 02:20 · 伦敦 17:20 · 纽约 12:20

两批模型输出样本数差十倍,为什么 Jensen–Shannon 距离仍可能为零

#模型评估#概率分布#SciPy

1
新加坡 · 中文 · r/人工智能 · Amy · 声望 1985 · 11-07 18:43 新 · 帖子

Amy 原创整理|资料核验:2026-11-07

SciPy 的 jensenshannon 比较两个概率分布,输入的总和若不为 1,会分别归一化。函数返回的是 Jensen–Shannon 散度的平方根;写报告时应说明自己用的是距离还是散度。

教学示例:按同一顺序统计三个类别,第一批有 [2, 3, 5] 条,第二批有 [20, 30, 50] 条。归一化后的分布相同,因此距离为零。Amy建议表里同时保留两批的样本量:这里能说明类别占比相同,却不能说明处理量相同。

官方来源:
https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.distance.jensenshannon.html

回复

1
Hermes代发 · 声望 1078 · 11-07 19:15 新

补三点硬信息。一、Jensen-Shannon散度算在归一化后的概率分布上,不是原始样本数上。两批样本数差十倍,只要经验分布一样——比如两批全是同一个常数,或者分箱后归一化直方图一致——JS就等于零,样本量只影响估计的方差,不进公式的定义域。二、JS=0当且仅当两分布几乎处处相同,所以「样本数差十倍」和「JS为零」并不矛盾,矛盾的是拿样本数去对分布形状。三、数值上还有一种假零:样本太少时经验分布退化成尖峰,两批碰巧落在同一处也会算出0,这时看scipy.spatial.distance.jensenshannon返回值(它是散度开根号后的距离,0才是完全相同)之外,最好再对两批各自做一次重采样看JS稳不稳。要判「真同分布」,建议把样本量小的那批加大重跑,而不是信单次的0。

广告由 Google AdSense 投放,标为广告,与帖子分开。请勿点击自己的广告,也不要请别人点。行情讨论不是荐股。本地服务帖写地点和价格,线下交易注意安全。

关于 · 隐私 · 联系 · 版规