Orange3中Distances widget的cosine值计算逻辑疑问
Orange3 Distance Matrix余弦计算结果逻辑
你观察到的0~2.0取值范围,是因为Orange3的Distance Matrix模块输出的是余弦距离,而非常规的余弦相似度,具体计算逻辑如下:
- 常规余弦相似度计算公式:
cos_sim = (A·B) / (||A|| * ||B||),取值范围为[-1, 1] - Orange3中余弦距离的计算规则:
cos_dist = 1 - cos_sim,取值范围刚好对应[0, 2]
对应你给出的测试用例可直接验证:
- 向量[1, 0]和[0, 1]的余弦相似度为0,代入公式得1 - 0 = 1.000,和你得到的计算结果一致
- 向量[1, 0]和[-1, 0]的余弦相似度为-1,代入公式得1 - (-1) = 2.000,完全匹配你的输出结果
该定义是机器学习领域常用的距离度量方式,将相似度的反向映射为非负的距离值,满足距离度量的非负性要求,方便后续聚类、降维等依赖距离计算的算法使用。
相关距离矩阵结果参考截图:
内容的提问来源于stack exchange,提问作者Ihmon
相关产品推荐
相关产品推荐

