Kruskal应力是否可用于Metric MDS?
Kruskal应力是否可用于Metric MDS?
Kruskal应力完全可以用于Metric MDS,它本质是对Metric MDS原生的原始应力(raw stress)做了标准化处理,目的是让不同数据集的应力值更具可比性,以下是具体说明:
概念区分:
原始应力是Metric MDS最基础的损失指标,计算的是原始高维距离与低维嵌入后距离的平方差总和;而Kruskal应力是将原始应力除以原始距离平方和的平方根,得到一个范围在0到1之间的标准化值,比原始应力更直观,方便判断嵌入效果的优劣(数值越小,嵌入拟合度越好)。sklearn的实现逻辑:
sklearn的sklearn.manifold.MDS在开启Metric模式(metric=True)时,返回的stress_属性就是Kruskal应力(具体为Kruskal's stress formula 1)。这是因为标准化后的应力值实用性更强,用户无需手动做标准化转换就能直接解读。关于维基百科描述的补充:
维基百科提到“Metric MDS使用raw stress,非Metric MDS使用Kruskal应力”,是从经典定义起源的角度出发——Kruskal应力最初是为非Metric MDS设计的,而原始应力是Metric MDS的原生损失函数。但这并不代表Metric MDS不能使用Kruskal应力,相反,现在很多工具(包括sklearn)都会默认提供标准化后的应力值,因为它在实际应用中更便于跨数据集对比。
内容的提问来源于stack exchange,提问作者user45546
相关产品推荐
相关产品推荐

