Überblick Hintergrund Implementierung Anwendung Literatur Tag Clustering: Realisierung des Bron-Kerbosch-Algorithmus in PHP HS Information Retrieval Katharina Wäschle 6. Februar 2010 Katharina Wäschle Clique-Clustering in PHP Überblick Hintergrund Implementierung Anwendung Literatur Gliederung 1 Überblick 2 Hintergrund 3 Implementierung 4 Anwendung 5 Literatur Katharina Wäschle Clique-Clustering in PHP Überblick Hintergrund Implementierung Anwendung Literatur Projekt Ziel Implementierung des Bron-Kerbosch-Algorithmus für das Finden maximaler Cliquen in Graphen in PHP Motivation einfache Einbindung in Web-Anwendungen wie (Semantic) MediaWiki für das Clustering von Tags, Seiten oder Kategorien Anwendung Clustering von Tags aus SMW, Flickr und Bibsonomy Katharina Wäschle Clique-Clustering in PHP Überblick Hintergrund Implementierung Anwendung Literatur Gliederung 1 Überblick 2 Hintergrund 3 Implementierung 4 Anwendung 5 Literatur Katharina Wäschle Clique-Clustering in PHP Überblick Hintergrund Implementierung Anwendung Literatur Cliquen Clique Eine Teilmenge C der Knotenmenge eines ungerichteten Graphen G, so dass der von C induzierte Untergraph von G vollständig ist. Maximale Clique, die nicht echt enthalten ist in einer Clique anderen Clique, d.h. es gibt keine Clique D von G, für die gilt C ⊆ D und C 6= D. Katharina Wäschle Clique-Clustering in PHP Überblick Hintergrund Implementierung Anwendung Literatur Bron-Kerbosch-Algorithmus Eigenschaften . Algorithmus zum Finden aller maximalen Cliquen in einem Graph mit Hilfe von rekursivem Backtracking und Branch-and-Bound . theoretisch schlechte Laufzeit (exponentiell), in der Praxis meist bessere Laufzeit (linear) . wurde 1973 von Coen Bron and Joep Kerbosch entwickelt [1], gilt immer noch als schnellster und ist der am meisten gebrauchte Algorithmus für das Finden von Cliques Katharina Wäschle Clique-Clustering in PHP Überblick Hintergrund Implementierung Anwendung Literatur Bron-Kerbosch-Algorithmus Pseudocode find_cliques(potential_clique, candidates, already_found) if a node in already_found is connected to all notes in candidates no clique can ever be found else foreach candidate_node in candidates move candidate_node to potential_clique create new_candidates by removing nodes in candidates not connected to candidate_node create new_already_found by removing nodes in already_found not connected to candidate_node if new_candidates and new_already_found are empty potential_clique is maximal else find_cliques(potential_clique, new_candidates, new_already_found) move candidate_node from potential_clique to already_found nach [4] Katharina Wäschle Clique-Clustering in PHP Überblick Hintergrund Implementierung Anwendung Literatur Bron-Kerbosch-Algorithmus Funktionsweise Rekursionsmechanismus Verhindert, dass Permutationen bereits gefundener Cliquen erneut durchsucht werden: Bekannte Erweiterungen werden gespeichert und gesehene Knoten aus der Kandidatenliste entfernt. Branch-and-Bound Begrenzung der Suche, so dass identischen Teilbäume nicht mehrmals aufgebaut werden: Es werden nur neue Knoten, die nicht Nachbarn eines bereits getesteten Knotens sind, angeschaut. Katharina Wäschle Clique-Clustering in PHP Überblick Hintergrund Implementierung Anwendung Literatur Gliederung 1 Überblick 2 Hintergrund 3 Implementierung 4 Anwendung 5 Literatur Katharina Wäschle Clique-Clustering in PHP Überblick Hintergrund Implementierung Anwendung Literatur Arbeitsschritte beim Clustering 1 Identifikation der Index-Terme 2 Erzeugung der Dokumentvektoren 3 Erzeugung einer Ähnlichkeitsmatrix 4 Erzeugung einer Relationsmatrix 5 Clustering auf Basis der Relationsmatrix Katharina Wäschle Clique-Clustering in PHP Überblick Hintergrund Implementierung Anwendung Literatur Modularisierung Einlesemodul 1 Identifikation der Index-Terme Repräsentationsmodul 2 Erzeugung der Dokumentvektoren 3 Erzeugung einer Ähnlichkeitsmatrix 4 Erzeugung einer Relationsmatrix Clusteringmodul 5 Clustering auf Basis der Relationsmatrix Katharina Wäschle Clique-Clustering in PHP Überblick Hintergrund Implementierung Anwendung Literatur Klassendiagramm Katharina Wäschle Clique-Clustering in PHP Überblick Hintergrund Implementierung Anwendung Literatur Gliederung 1 Überblick 2 Hintergrund 3 Implementierung 4 Anwendung 5 Literatur Katharina Wäschle Clique-Clustering in PHP Überblick Hintergrund Implementierung Anwendung Literatur Clustering von Tags aus Semantischem Wiki . 48 Wiki-Seiten mit 158 Tags in Datenbank . Problem: zu wenig Daten, keine reale Anwendung, Tags nur aus 3 Quellen Katharina Wäschle Clique-Clustering in PHP Überblick Hintergrund Implementierung Anwendung Literatur Clustering von Flickr-Tags . Abfrage von Tags für zufällig generierte Photo-IDs über die Flickr-API . Problem: zu heterogene Daten, unterschiedliche Sprachen, nur begrenzte Anzahl von Abfragen möglich Katharina Wäschle Clique-Clustering in PHP Überblick Hintergrund Implementierung Anwendung Literatur Clustering von Tags aus BibSonomy . Test mit bis zu 1000 getaggte Ressourcen (Papers oder Links) aus Datenbank-Dump Katharina Wäschle Clique-Clustering in PHP Überblick Hintergrund Implementierung Anwendung Literatur Demo Demo Katharina Wäschle Clique-Clustering in PHP Überblick Hintergrund Implementierung Anwendung Literatur Fazit ⊕ . schlanke Implementierung (etwa 300 Zeilen Code, davon 120 Algorithmus) . vielfache Einsatzmöglichkeiten (Wiki-Extension, Einbindung von Datenbank) Katharina Wäschle . für große Datenmengen schlechte Performanz, da Aufbau der Repräsentation sehr langsam (7 Minuten für 1000 Tags) . Speicher- und Antwortzeitbeschränkungen Clique-Clustering in PHP Überblick Hintergrund Implementierung Anwendung Literatur Literatur Bron, C. & Kerbosch, J. (1973), Algorithm 457: finding all cliques of an undirected graph, Commun. ACM 16(9), 575–577. Haenelt, K. (2009), Cliquen in Graphen. Definitionen und Algorithmen, Kursfolien vom 14.11.2009. http://kontext.fraunhofer.de/haenelt/kurs/ Hotho, A.; Jäschke, R.; Schmitz, C. & Stumme, G. (2006), BibSonomy: A Social Bookmark and Publication Sharing System, Proceedings of the Conceptual Structures Tool Interoperability Workshop at the 14th International Conference on Conceptual Structures, 87–102. Samudrala, Ram & John Moult (1998), A Graph-theoretic Algorithm for Comparative Modeling of Protein Structure, Journal of Molecular Biology 279, 287–302. http://www.bibsonomy.org/bibtex/ 2a6faae355d867b5f998ed30e79eec3cf/mitesser http://www.flickr.com/photos/tags/bank/clusters/ Katharina Wäschle Clique-Clustering in PHP