{"id":1709,"date":"2019-09-20T04:35:14","date_gmt":"2019-09-20T08:35:14","guid":{"rendered":"http:\/\/www.michelecoscia.com\/?p=1709"},"modified":"2019-09-23T04:00:11","modified_gmt":"2019-09-23T08:00:11","slug":"who-will-cluster-the-cluster-makers","status":"publish","type":"post","link":"https:\/\/www.michelecoscia.com\/?p=1709","title":{"rendered":"Who will Cluster the Cluster Makers?"},"content":{"rendered":"<p>If you follow this blog, you know that I periodically talk about community discovery. The problem seems so deceptively simple: finding groups of nodes densely connected in a network. If it is so simple, why have I been <a href=\"http:\/\/www.michelecoscia.com\/?p=171\">talking<\/a> <a href=\"http:\/\/www.michelecoscia.com\/?p=341\">about<\/a> <a href=\"http:\/\/www.michelecoscia.com\/?p=668\">it<\/a> <a href=\"http:\/\/www.michelecoscia.com\/?p=701\">since<\/a> <a href=\"http:\/\/www.michelecoscia.com\/?p=1295\">2012<\/a>? The reason is that it isn&#8217;t so simple, and people have tried to organize the literature explaining <a href=\"https:\/\/www.sciencedirect.com\/science\/article\/pii\/S0370157309002841\">how the thousands of different algorithms work<\/a>, <a href=\"https:\/\/www.nature.com\/articles\/srep30750\">how they perform<\/a>, <a href=\"https:\/\/onlinelibrary.wiley.com\/doi\/pdf\/10.1002\/sam.10133?casa_token=e_msx0x7NNMAAAAA:OU0oBN1I7pnG9f5oAidPO8SzIsNsAOoB8heP4YooMy8clrd7i3EPTRMBIYcDs77YNcUAX00-cecVMUmbHA\">what definition of &#8220;community&#8221; they use<\/a>. After all that work, I&#8217;m still left with one question. Which two algorithms return the same gosh darned communities in a network? That&#8217;s what we&#8217;re going to discover today.<\/p>\n<p>What I want to do is to take as many community discovery algorithms as I can, test them on a set of networks, and compare their results to estimate how similar they are. This gives me a similarity matrix of algorithms, which I can transform into a network by keeping only similarities that are statistically significant. Once I have the network, I can discovery groups of algorithms returning a coherent set of results, because they&#8217;re all significantly related to each other. How do I find these groups? Well, by ehm&#8230;. er&#8230; performing&#8230; <span style=\"font-size: small;\">community&#8230;<\/span> <span style=\"font-size: xx-small;\">discovery?<\/span> on the&#8230; network of&#8230; <span style=\"font-size: small;\">community<\/span> <span style=\"font-size: xx-small;\">discovery&#8230; algorithms&#8230;<\/span> This is exactly the outline of my paper <a href=\"http:\/\/www.michelecoscia.com\/wp-content\/uploads\/2019\/06\/cd_of_cd.pdf\">Discovering Communities of Community Discovery<\/a>, which I presented at ASONAM last month.<\/p>\n<p>&#8220;As many community discovery algorithms as I can&#8221; turned out to be 73, all implemented in different languages, taking input in different ways, and providing different output formats. I ran them on more than 1,500 networks (real world ones from <a href=\"https:\/\/icon.colorado.edu\/\">ICON<\/a> and synthetic benchmarks). It was a&#8230; difficult month for me. I compared their partitions by estimating their mutual information: given that I know the results of algorithm A, how much can I infer about the results of algorithm B? For each network where two algorithms result in a lot of mutual information, I increase their similarity count by one. Once I have all similarity counts, I can extract the <a href=\"http:\/\/www.michelecoscia.com\/?page_id=287\">backbone<\/a> of this matrix, controlling for the fact that some algorithms tend to be more peculiar than others, while others tend to be more mainstream.<\/p>\n<p>And this is the result (click to enlarge):<\/p>\n<p><a href=\"http:\/\/www.michelecoscia.com\/wp-content\/uploads\/2019\/04\/asn.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1641\" src=\"http:\/\/www.michelecoscia.com\/wp-content\/uploads\/2019\/04\/asn-1024x551.png\" alt=\"\" width=\"500\" height=\"269\" srcset=\"https:\/\/www.michelecoscia.com\/wp-content\/uploads\/2019\/04\/asn-1024x551.png 1024w, https:\/\/www.michelecoscia.com\/wp-content\/uploads\/2019\/04\/asn-300x161.png 300w, https:\/\/www.michelecoscia.com\/wp-content\/uploads\/2019\/04\/asn-768x413.png 768w, https:\/\/www.michelecoscia.com\/wp-content\/uploads\/2019\/04\/asn.png 1306w\" sizes=\"auto, (max-width: 500px) 85vw, 500px\" \/><\/a><\/p>\n<p>I love this network, because it has well defined groups and they all make sense. There&#8217;s the group of modularity maximization algorithms (in green), there&#8217;s the ones based on percolation \/ random walks (in blue), and the ones using neighbor similarity (in purple) as the guiding principle.<\/p>\n<p>Then there&#8217;s a lump of algorithms that allow communities to share nodes (in red). The only thing these algorithms have in common is that they allow communities to share nodes, which is not a good enough common characteristics. The ways they find communities are as diverse as the ones you find in the rest of the network. But that&#8217;s the beauty of my approach: I can select a subset of nodes &#8212; say all overlapping community discovery algorithms &#8212; and re-apply the test of statistical significance with a more stringent threshold. This allows me to zoom in and see if there are meaningful structures inside the community. Lo and behold:<\/p>\n<p><a href=\"http:\/\/www.michelecoscia.com\/wp-content\/uploads\/2019\/09\/similarities_overlap_nc.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1712\" src=\"http:\/\/www.michelecoscia.com\/wp-content\/uploads\/2019\/09\/similarities_overlap_nc-1024x588.png\" alt=\"\" width=\"500\" height=\"287\" srcset=\"https:\/\/www.michelecoscia.com\/wp-content\/uploads\/2019\/09\/similarities_overlap_nc-1024x588.png 1024w, https:\/\/www.michelecoscia.com\/wp-content\/uploads\/2019\/09\/similarities_overlap_nc-300x172.png 300w, https:\/\/www.michelecoscia.com\/wp-content\/uploads\/2019\/09\/similarities_overlap_nc-768x441.png 768w\" sizes=\"auto, (max-width: 500px) 85vw, 500px\" \/><\/a><\/p>\n<p>Here you can see meaningful groups of overlapping algorithms. There&#8217;s the ones achieving overlap by clustering edges instead of nodes (in blue), and the ones applying the percolation \/ random walk strategy (in green), but allowing for node sharing.<\/p>\n<p>Why is this work significant? First, because it proves that there really are different &#8212; and valid &#8212; definitions of what communities are in complex networks. If there weren&#8217;t, this network would be more homogeneous, without distinct groups.<\/p>\n<p>Second, as I mentioned, some of the networks I tested the algorithms on are standard benchmarks: <a href=\"https:\/\/sites.google.com\/site\/andrealancichinetti\/files\">LFR networks<\/a>. These benchmarks grow a network with a planted community structure: the real latent structure the algorithm is supposed to find. Yet, this &#8220;ground truth&#8221; is well embedded in one of the clusters: the percolation\/random walk community (in blue). LFR benchmarks follow that specific definition and not others. If you are developing a new community discovery algorithm which has a different community definition, you should <strong>not<\/strong> use the LFR benchmark to test it. Moreover, if you are developing a percolation\/random walk algorithm and you&#8217;re correctly testing it on an LFR benchmark, you <strong>cannot<\/strong> test it against algorithms that are not part of the blue community. Otherwise the test would be unfair, because those algorithms are looking for something else: of course they&#8217;ll perform poorly on LFR benchmarks!<\/p>\n<p>You can get the full list of algorithms that I tested, with proper references, from <a href=\"http:\/\/www.michelecoscia.com\/?page_id=1640\">the official page of the project<\/a>. From there, you can also download the network and use it for your purposes. This is necessarily an eternal work in progress: there are more than 73 community discovery algorithms out there. But I am but a man<sup>[citation needed]<\/sup> and I cannot spend my entire time scouting for implementations on the web. I got to put bread (or, preferably, pasta) on the table as well. Thus, if you think I really should have included your algorithm in this structure, you can mail me and send me a working implementation of it, and I&#8217;ll gladly run it on my benchmarks.<\/p>\n<p>What&#8217;s next? I&#8217;d be delighted to inaugurate the field of meta-research. So join me, as I develop new projects such as:<\/p>\n<ul>\n<li>Predicting links of link predictors: which link prediction algorithms will become more similar in the future?<\/li>\n<li>Spreading epidemics of epidemic spreading: which researchers will cave in to peer pressure and publish a paper studying the diffusion of some phenomenon?<\/li>\n<li>Modeling the growth of growth models: how has the Barabasi and Albert model evolved over time? Which features were added? What about Watts &amp; Strogatz&#8217;s model?<\/li>\n<\/ul>\n<p>(In case you were wondering, I&#8217;m joking. In network science, sometimes that might be hard to tell.)<\/p>\n<p>(Or am I?)<\/p>\n<p>(It&#8217;s settled: the best among these papers will receive the hereby instituted Escher prize, awarded by Douglas Hofstadter himself)<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-1717 size-full\" src=\"http:\/\/www.michelecoscia.com\/wp-content\/uploads\/2019\/09\/meninas.jpg\" alt=\"\" width=\"500\" height=\"575\" srcset=\"https:\/\/www.michelecoscia.com\/wp-content\/uploads\/2019\/09\/meninas.jpg 500w, https:\/\/www.michelecoscia.com\/wp-content\/uploads\/2019\/09\/meninas-261x300.jpg 261w\" sizes=\"auto, (max-width: 500px) 85vw, 500px\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>If you follow this blog, you know that I periodically talk about community discovery. The problem seems so deceptively simple: finding groups of nodes densely connected in a network. If it is so simple, why have I been talking about it since 2012? The reason is that it isn&#8217;t so simple, and people have tried &hellip; <a href=\"https:\/\/www.michelecoscia.com\/?p=1709\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Who will Cluster the Cluster Makers?&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[91,6,199,84],"class_list":["post-1709","post","type-post","status-publish","format-standard","hentry","category-community-discovery","tag-clustering","tag-community-discovery-2","tag-meta-research","tag-overlapping-community"],"_links":{"self":[{"href":"https:\/\/www.michelecoscia.com\/index.php?rest_route=\/wp\/v2\/posts\/1709","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.michelecoscia.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.michelecoscia.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.michelecoscia.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.michelecoscia.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1709"}],"version-history":[{"count":13,"href":"https:\/\/www.michelecoscia.com\/index.php?rest_route=\/wp\/v2\/posts\/1709\/revisions"}],"predecessor-version":[{"id":1725,"href":"https:\/\/www.michelecoscia.com\/index.php?rest_route=\/wp\/v2\/posts\/1709\/revisions\/1725"}],"wp:attachment":[{"href":"https:\/\/www.michelecoscia.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1709"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.michelecoscia.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1709"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.michelecoscia.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1709"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}