我正在努力理解谱聚类文档here。
具体地
如果您有一个亲和度矩阵,例如距离矩阵,其中0表示相同的元素,而高值表示非常不相似的元素,则可以通过应用高斯的方法将其转换为非常适合算法的相似性矩阵(RBF,热)内核:
np.exp(- X ** 2 / (2. * delta ** 2))
对于我的数据,我有一个大小为(n_samples, n_samples)
的完整距离矩阵,其中大条目表示不相似的对,小值表示相似的对,零表示相同的条目。 (即,沿对角线的唯一零点)。
所以我需要做的就是使用SpectralClustering
构建affinity = "precomputed"
对象,然后将转换后的距离矩阵传递给fit_predict
。
我坚持建议的转换方程式。 np.exp(- X ** 2 / (2. * delta ** 2))
。
这里X
是什么? (n_samples, n_samples)
距离矩阵?
如果是,那么delta
是什么。它只是X.max()-X.min()
吗?
调用np.exp(- X ** 2 / (2. * (X.max()-X.min()) ** 2))
似乎做对了。即大条目变得相对较小,小条目相对较大,所有条目都在0和1之间。对角线都是1,这是有道理的,因为每个点都是最亲密的。
但我很担心。我想如果作者希望我使用np.exp(- X ** 2 / (2. * (X.max()-X.min()) ** 2))
,他会告诉我使用它,而不是在那里投掷delta
。
所以我想我的问题就是这个。什么' delta
?
答案 0 :(得分:1)
是的,在这种情况下,X
是距离矩阵。 delta
是一个缩放参数,您可以根据需要进行调整。它控制了“紧密度”,可以说是距离/相似关系,在某种意义上说,一个小的增量增加了遥远点的相对异常性。
请注意,delta
与RBF内核的gamma
参数的倒数成正比,前面提到的文档链接中提到了这两个参数:两者都是可用于调整聚类结果的自由参数