praca_magisterska/pytania/odpowiedzi/38-projekcje-grafow-dwudzielnych.md

265 lines
13 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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"