从距离矩阵计算亲和力矩阵。

5
我使用 Clustal Omega 得到了一个由 500 个蛋白质序列组成的距离矩阵(它们是同源的)。
我想用亲和传播算法来对这些序列进行聚类。
一开始,我手工观察到距离矩阵仅在 0 和 1 之间取值,其中 0 距离 = 100% 相同,因此我认为只需取 (1 - distance) 即可得到亲和度。
我运行了代码,聚类看起来合理,一切似乎都很顺利... 直到我读到通常通过应用“热核”将距离矩阵转换为亲和矩阵。那时我的内心充满了困惑。
我是否错误地理解了亲和矩阵的概念?是否有一种简单的方法来计算亲和矩阵?Scikit-learn 提供了以下公式:
similarity = np.exp(-beta * distance / distance.std())

但是 Beta 是什么?我知道 distance.std() 是距离的标准差。我现在对所涉及的概念感到相当困惑和迷失(与实际编码实现相反),所以非常感谢任何帮助!P.S. 我已经尝试在 Biostars.org 上发帖子,但没有得到答案...

那段代码具体来自哪里? - Michael Hoffman
代码来自于这个页面:http://scikit-learn.org/dev/modules/clustering.html - ericmjl
我正在尝试理解这里的beta值。当beta=1时,会逼近一个沃罗诺伊图...你对此有什么理解? - ericmjl
从不太正式的角度来看,通过单调递减映射,可以将任何距离度量转换为相似度度量。对于任何正beta,负指数映射$e^{(-b * distance)/std(distance)}$都是单调递减的,因此我想作者只是为了完整性而将其包含在内。至少这是我的解释。 - Mike
1个回答

3

我认为1-距离和exp(-beta * 距离)都是将距离转换为相似度的有效方法(虽然它们在概率框架下的解释不同)。我会选择使用能够得到更好结果的方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接