W ramach moich badań jestem zainteresowany przeprowadzeniem propagacji etykiet na wykresie. Szczególnie interesują mnie te dwie metody:
- Xiaojin Zhu i Zoubin Ghahramani. Uczenie się na podstawie danych oznakowanych i nieznakowanych dzięki propagacji etykiet. Raport techniczny CMU-CALD-02-107, Carnegie Mellon University, 2002 http://pages.cs.wisc.edu/~jerryzhu/pub/CMU-CALD-02-107.pdf
- Dengyong Zhou, Olivier Bousquet, Thomas Navin Lal, Jason Weston, Bernhard Schoelkopf. Nauka z lokalną i globalną spójnością (2004) http://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.115.3219
Widziałem, że scikit-learn oferuje model do tego. Jednak ten model ma być stosowany do danych o strukturze wektorowej ( tj. Punktów danych).
Model buduje macierz powinowactwa z punktów danych za pomocą jądra, a następnie uruchamia algorytm na skonstruowanej macierzy. Chciałbym móc bezpośrednio wprowadzić macierz przyległości mojego wykresu zamiast macierzy podobieństwa.
Masz pomysł, jak to osiągnąć? A może znasz jakąś bibliotekę Python, która pozwoli na uruchamianie propagacji etykiet bezpośrednio na danych o strukturze grafu dla dwóch wyżej wymienionych metod?
Z góry dziękuje za twoją pomoc!
scikit-learn
graphs
Thibaud Martinez
źródło
źródło
Odpowiedzi:
Odpowiadając na moje pytanie tutaj, ponieważ mam nadzieję, że przyda się niektórym czytelnikom.
Scikit-learn jest zaprojektowany przede wszystkim do obsługi danych o strukturze wektorowej. Dlatego jeśli chcesz przeprowadzić propagację / rozkładanie etykiet na danych o strukturze grafowej, prawdopodobnie lepiej jest samodzielnie wdrożyć tę metodę niż korzystać z interfejsu Scikit.
Oto implementacja Propagacji i rozpowszechniania etykiet w PyTorch.
Te dwie metody ogólnie wykonują te same kroki algorytmu, z odmianami w jaki sposób normalizowana jest macierz przylegania i jak etykiety są propagowane na każdym kroku. Stwórzmy zatem klasę bazową dla naszych dwóch modeli.
Model przyjmuje jako dane wejściowe macierz przyległości wykresu, a także etykiety węzłów. Etykiety są w postaci wektora liczby całkowitej wskazującej numer klasy każdego węzła z -1 w pozycji węzłów nieznakowanych.
Algorytm propagacji etykiet przedstawiono poniżej.
Od Xiaojin Zhu i Zoubin Ghahramani. Uczenie się na podstawie danych oznakowanych i nieznakowanych dzięki propagacji etykiet. Raport techniczny CMU-CALD-02-107, Carnegie Mellon University, 2002
Otrzymujemy następującą implementację.
Algorytm rozprowadzania etykiet to:
Od Dengyong Zhou, Olivier Bousquet, Thomas navin Lal, Jason Weston, Bernhard Schoelkopf. Uczenie się z konsekwencją lokalną i globalną (2004)
Realizacja jest zatem następująca.
Przetestujmy teraz nasze modele propagacji na danych syntetycznych. Aby to zrobić, wybieramy wykres jaskiniowca .
Zaimplementowane modele działają poprawnie i pozwalają wykryć społeczności na wykresie.
Uwaga: Przedstawione metody propagacji mają być stosowane na niekierowanych grafach.
Kod jest dostępny jako interaktywny Jupyter notebooka tutaj .
źródło