# Pytanie 38: Projekcje grafów dwudzielnych ## Pytanie **"Porównać metody projekcji grafów dwudzielnych. Przedstawić ich użyteczność w grupowaniu dokumentów tekstowych."** Przedmiot: TASS (Technologie i Algorytmy dla Sieci Społecznościowych) --- ## 📚 Odpowiedź główna ### 1. Grafy dwudzielne (Bipartite Graphs) ``` ┌─────────────────────────────────────────────────────────────────┐ │ GRAF DWUDZIELNY │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ Zbiór U (np. dokumenty) Zbiór V (np. słowa) │ │ │ │ D1 ●────────────────● word1 │ │ │ ╲ │ │ │ D2 ●──╲─────────────● word2 │ │ │ ╲ │ │ │ D3 ●────╲───────────● word3 │ │ ╲ │ │ │ D4 ●──────╲─────────● word4 │ │ │ │ Krawędzie tylko między U i V (nigdy wewnątrz zbioru) │ │ │ │ Przykłady: │ │ • Dokumenty - Słowa │ │ • Użytkownicy - Produkty │ │ • Autorzy - Artykuły │ │ • Aktorzy - Filmy │ └─────────────────────────────────────────────────────────────────┘ ``` --- ### 2. Projekcja grafu dwudzielnego ``` ┌─────────────────────────────────────────────────────────────────┐ │ PROJEKCJA = przekształcenie grafu dwudzielnego na jednomodowy │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ Graf dwudzielny: Projekcja na U (dokumenty): │ │ │ │ D1 ●───────● w1 D1 ●─────● D2 │ │ │╲ │ │╲ ╱│ │ │ D2 ●─╲─────● w2 │ ╲ ╱ │ │ │ │ ╲ │ │ ╳ │ │ │ D3 ●───╲───● w3 │ ╱ ╲ │ │ │ ╲ │╱ ╲│ │ │ D4 ●───────● w4 D3 ●─────● D4 │ │ │ │ Dwa dokumenty połączone ⟺ mają wspólne słowo │ └─────────────────────────────────────────────────────────────────┘ ``` --- ### 3. Metody projekcji #### 3.1 Projekcja binarna (Simple/Unweighted) ``` Macierz sąsiedztwa projekcji: P = B · Bᵀ (dla projekcji na U) P = Bᵀ · B (dla projekcji na V) gdzie B = macierz incydencji grafu dwudzielnego Pᵢⱼ > 0 ⟹ węzły i, j połączone w projekcji Wady: ❌ Utrata informacji o sile powiązania ❌ Wszystkie wspólni sąsiedzi traktowani równo ``` #### 3.2 Projekcja ważona (Weighted) | Metoda | Waga krawędzi (i,j) | Opis | |--------|---------------------|------| | **Simple count** | w_ij = \|N(i) ∩ N(j)\| | Liczba wspólnych sąsiadów | | **Jaccard** | w_ij = \|N(i) ∩ N(j)\| / \|N(i) ∪ N(j)\| | Normalizacja przez sumę | | **Cosine** | w_ij = (B_i · B_j) / (\|\|B_i\|\| · \|\|B_j\|\|) | Podobieństwo wektorów | | **Hyperbolic** | w_ij = Σ_k 1/(k_k - 1) | Rzadkie słowa ważniejsze | | **Resource allocation** | w_ij = Σ_k 1/k_k | Jak hyperbolic | ``` Przykład - Jaccard: D1 = {w1, w2, w3} D2 = {w2, w3, w4} Wspólne: {w2, w3} → |∩| = 2 Suma: {w1, w2, w3, w4} → |∪| = 4 w(D1, D2) = 2/4 = 0.5 ``` #### 3.3 Projekcja TF-IDF (dla dokumentów) ``` ┌─────────────────────────────────────────────────────────────────┐ │ TF-IDF weighted projection │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ TF(t,d) = częstość słowa t w dokumencie d │ │ IDF(t) = log(N / df(t)) gdzie df(t) = liczba dok. z t │ │ │ │ TF-IDF(t,d) = TF(t,d) × IDF(t) │ │ │ │ Podobieństwo dokumentów: │ │ sim(d1, d2) = cos(TF-IDF(d1), TF-IDF(d2)) │ │ │ │ Rzadkie słowa mają większą wagę (IDF)! │ └─────────────────────────────────────────────────────────────────┘ ``` --- ### 4. Porównanie metod | Metoda | Zalety | Wady | |--------|--------|------| | **Binarna** | Prosta, szybka | Brak wag, utrata info | | **Simple count** | Intuicyjna | Bias ku popularnym węzłom | | **Jaccard** | Normalizowana | Ignoruje rozmiar zbiorów | | **Cosine** | Standard w IR | Wymaga wektorów | | **Hyperbolic** | Rzadkie elementy ważne | Bardziej złożona | | **TF-IDF** | Standard dla tekstów | Specyficzna dla dokumentów | --- ### 5. Zastosowanie w grupowaniu dokumentów ``` ┌─────────────────────────────────────────────────────────────────┐ │ PIPELINE GRUPOWANIA DOKUMENTÓW │ ├─────────────────────────────────────────────────────────────────┤ │ │ │ 1. PREPROCESSING │ │ Dokumenty → tokenizacja → stemming → usunięcie stop words │ │ │ │ 2. BUDOWA GRAFU DWUDZIELNEGO │ │ G = (Documents, Terms, Edges) │ │ Krawędź (d, t) jeśli term t występuje w dokumencie d │ │ │ │ 3. PROJEKCJA │ │ P = projekcja ważona (TF-IDF/Cosine) na dokumenty │ │ │ │ 4. GRUPOWANIE │ │ Na grafie projekcji: │ │ • Community detection (Louvain, Label Propagation) │ │ • Spectral clustering │ │ • K-means na wektorach podobieństwa │ │ │ │ 5. WYNIK │ │ Grupy tematycznie podobnych dokumentów │ └─────────────────────────────────────────────────────────────────┘ ``` #### Przykład ``` Dokumenty: D1: "machine learning algorithms" D2: "deep learning neural networks" D3: "neural network architecture" D4: "database query optimization" D5: "SQL query performance" Graf dwudzielny projekcja (cosine similarity): D1 ──0.3── D2 ──0.6── D3 Klaster 1: ML/DL {D1, D2, D3} D4 ──0.5── D5 Klaster 2: Databases {D4, D5} Grupowanie znajdzie te dwa klastry! ``` --- ### 6. Algorytmy grupowania na projekcji ``` ┌─────────────────────────────────────────────────────────────────┐ │ LOUVAIN (Community Detection): │ │ • Optymalizuje modularność Q │ │ • Iteracyjne przenoszenie węzłów między grupami │ │ • O(n log n) - szybki │ ├─────────────────────────────────────────────────────────────────┤ │ SPECTRAL CLUSTERING: │ │ • Eigendecomposition Laplacianu │ │ • K-means na wektorach własnych │ │ • Znajduje struktury niekonweksowe │ ├─────────────────────────────────────────────────────────────────┤ │ LABEL PROPAGATION: │ │ • Propagacja etykiet po krawędziach │ │ • Bardzo szybki O(m) │ │ • Niedeterministyczny │ └─────────────────────────────────────────────────────────────────┘ ``` --- ### 7. Problemy i rozwiązania | Problem | Opis | Rozwiązanie | |---------|------|-------------| | **Gęstość** | Projekcja tworzy gęste grafy | Threshold na wagi | | **Huby** | Popularne słowa łączą wszystko | TF-IDF, filtering | | **Skalowalność** | O(n²) krawędzi | Sparse representation, LSH | | **Utrata info** | Projekcja traci strukturę | Zachowaj oryginalny graf | --- ## 🧠 Mnemoniki ### "B×Bᵀ = Projekcja": Mnożenie macierzy incydencji daje projekcję ### "TF-IDF = Term Frequency × Inverse Document Frequency": Rzadkie słowa ważniejsze ### "Jaccard = Intersection over Union": IoU dla zbiorów --- ## ❓ Pytania dodatkowe ### Q1: "Dlaczego projekcja binarna jest problematyczna?" **Odpowiedź:** Traci informację o sile powiązania. Dokument z 1 wspólnym słowem ma taką samą krawędź jak z 100 wspólnymi. Popularne słowa (stop words) tworzą fałszywe powiązania. ### Q2: "Jak skalować dla dużych zbiorów?" **Odpowiedź:** MinHash/LSH dla approximate similarity, sparse matrix operations, sampling, dimension reduction (LSA/SVD), distributed computing (Spark GraphX). ### Q3: "Alternatywy dla projekcji?" **Odpowiedź:** Bezpośrednie algorytmy na grafach dwudzielnych (bipartite community detection), tensor decomposition, embedding methods (node2vec), GNN na grafach heterogenicznych. --- ## 🎯 Kluczowe punkty 1. **Projekcja:** Graf dwudzielny → jednomodowy (P = B·Bᵀ) 2. **Metody:** Binarna, Jaccard, Cosine, TF-IDF 3. **TF-IDF:** Rzadkie słowa ważniejsze (IDF) 4. **Grupowanie:** Louvain, Spectral, Label Propagation 5. **Problem:** Gęstość, popularne węzły → filtering, thresholding --- ## 📖 Źródła 1. Newman - "Networks: An Introduction" 2. Zhou et al. - "Bipartite Network Projection and Personal Recommendation" 3. Manning - "Introduction to Information Retrieval"