我在使用mcl对无向图进行聚类。为此,我选择了一个阈值,在此阈值以下节点被连接,同时为每条边选择了一种相似性度量,并使用膨胀参数来调整图的粒度。我已经尝试了这些参数的不同组合,但到目前为止,我得到的聚类似乎都太大了(我做了可视化,显示最大的聚类应该被分成两个或更多个聚类)。因此,我想知道还有哪些其他参数可以调整以改进我的聚类(我目前正在尝试mcl的方案参数,看看是否提高准确性会有所帮助,但如果有其他更具体的参数可以帮助得到更小的聚类,请告诉我)?
回答:
主要有两件事需要考虑。首先也是最重要的是mcl(http://micans.org/mcl/)之外的因素,即网络是如何构建的。我在其他地方写过这个问题,但在这里重复一遍,因为它很重要。
如果你有加权相似性,选择一个边权重(相似性)截止值,使网络的拓扑结构变得有信息性;即太多的边或太少的边在边的缺失/存在结构中几乎没有区分信息。选择一个截止值,使得不会有边连接你认为非常不相似的事物,而边连接你认为从有些相似到相当相似的事物。在mcl的情况下,’有点相似’和’非常相似’之间的边权重动态范围应该作为经验法则,是一个数量级,即两倍、五倍或十倍,而不是从0.9到1.0变化。当然,也可以给mcl提供简单的网络,它只会利用边的缺失/存在。确保网络不会变得非常密集——一个非常粗略的经验法则是,目标是边的总数在V * sqrt(V)
的数量级,如果节点(顶点)的数量是V
,即每个节点平均有sqrt(V)
个邻居的数量级。
上述网络构建真的很关键,建议尝试不同的方法。现在,给定一个网络,实际上只有一个mcl参数可以调整:膨胀参数(-I
选项)。一组好的测试值是1.4, 2, 3, 4, 6
。
总结来说,如果你在探索,尝试不同的网络构建方式,利用你对数据的了解,使网络成为一个有意义的表示,并结合尝试不同的mcl膨胀值。