Rozkład macierzy to prosty model wektora dystrybucyjnego. Biorąc pod uwagę tablica opinii A \(\in R^{m \times n}\), gdzie \(m\) jest liczby użytkowników (lub zapytań) \(n\) i liczby elementów, model uczy się:
- Macierz wektora dystrybucyjnego \(U \in \mathbb R^{m \times d}\), gdzie wiersz i to wektor dystrybucyjny dla użytkownika i.
- Macierz wektora dystrybucyjnego elementu \(V \in \mathbb R^{n \times d}\), gdzie wiersz j to wektor dystrybucyjny dla elementu j.
Wektory dystrybucyjne są nauczane w taki sposób, że produkt \(U V^T\) jest dobre przybliżenie macierzy opinii A. Zwróć uwagę, że \((i, j)\) wejście do \(U . V^T\) jest po prostu iloczynem skalarnym \(\langle U_i, V_j\rangle\) wektorów dystrybucyjnych użytkownika \(i\) i elementu \(j\), który chcesz wyświetlić w pobliżu \(A_{i, j}\).
Wybór funkcji celu
Jedną z intuicyjnych funkcji celu jest odległość do kwadratu. Aby to zrobić: zminimalizuj sumę błędów podniesionych do kwadratu we wszystkich parach zaobserwowanych wpisów:
\[\min_{U \in \mathbb R^{m \times d},\ V \in \mathbb R^{n \times d}} \sum_{(i, j) \in \text{obs}} (A_{ij} - \langle U_{i}, V_{j} \rangle)^2.\]
W tej funkcji celu sumujesz tylko zaobserwowane pary (i, j), czyli nad wartościami innymi niż 0 w tablicy informacji zwrotnych. Jednak tylko sumowanie to nie jest dobry pomysł. Macierz wszystkich wartości będzie miała a więc minimalną stratę i stworzyć model, który nie będzie generował skutecznych rekomendacji. i to kiepsko uogólnia.
Być może można potraktować nieobserwowane wartości jako zero i zsumować je wpisów w macierzy. Ma to na celu zminimalizowanie kwadrat Frobenius odległość między \(A\) a jej przybliżoną \(U V^T\):
\[\min_{U \in \mathbb R^{m \times d},\ V \in \mathbb R^{n \times d}} \|A - U V^T\|_F^2.\]
Możesz rozwiązać ten problem kwadratowy przez Rozkład wartości pojedynczej (SVD) macierzy. Pamiętaj jednak: SVD też nie jest najlepszym rozwiązaniem, ponieważ w prawdziwych aplikacjach macierz \(A\) może być bardzo rozproszona. Weźmy na przykład wszystkie filmy w YouTube w porównaniu do wszystkich filmów obejrzanych przez danego użytkownika. Rozwiązanie \(UV^T\) (odpowiadające przybliżeniu modelu macierzy wejściowej) będzie najprawdopodobniej bliska 0, co będzie słabą wydajności uogólniania.
Natomiast rozkładana matrycy ważonej rozkłada cel na czynniki pierwsze. na dwie następujące sumy:
- Suma odnotowanych wpisów.
- Suma ponad niezarejestrowanych wpisów (traktowana jako zera).
\[\min_{U \in \mathbb R^{m \times d},\ V \in \mathbb R^{n \times d}} \sum_{(i, j) \in \text{obs}} (A_{ij} - \langle U_{i}, V_{j} \rangle)^2 + w_0 \sum_{(i, j) \not \in \text{obs}} (\langle U_i, V_j\rangle)^2.\]
W tym przykładzie \(w_0\) jest hiperparametrem,który przypisuje wagę dwóm wyrazom aby jedno z tych celów nie było zdominowane przez jedną z tych grup. Dostrajanie tego hiperparametru jest bardzo ważne.
\[\sum_{(i, j) \in \text{obs}} w_{i, j} (A_{i, j} - \langle U_i, V_j \rangle)^2 + w_0 \sum_{i, j \not \in \text{obs}} \langle U_i, V_j \rangle^2\]
gdzie \(w_{i, j}\) jest funkcją częstotliwości zapytania i i elementu j.
Minimalizowanie funkcji celu
Typowe algorytmy minimalizujące funkcję celu to między innymi:
Stochastyczny gradient gradientowy (SGD) to ogólna metoda minimalizowania funkcji straty.
Ważony naprzemienne najmniejsze kwadraty (WALS) specjalizują się w tych aspektach dla konkretnego celu.
Cel jest równa kwadratowi w każdej z dwóch macierzy U i V (uwaga, jednak problem nie jest powszechnie wypukły). WALS działa przez inicjowanie wektory dystrybucyjne są losowe, a później naprzemiennie:
- Naprawianie \(U\) i rozwiązywanie problemów z: \(V\).
- Naprawianie \(V\) i rozwiązywanie problemów z: \(U\).
Każdy etap można rozwiązać dokładnie (za pomocą rozwiązania w układzie liniowym) być rozpowszechniana. Technika ta będzie zbieżna, ponieważ każdy etap na pewno zmniejszyć stratę.
SGD a WALS
SGD i WALS mają zalety i wady. Poniżej znajdziesz informacje na temat tego, jak wypadają na tle innych kampanii.
SGD
Duża elastyczność – może uwzględniać inną stratę .
Możliwe do równoległego.
Wolniej – nie przechodzi tak szybko.
Trudniej jest obsłużyć nieodnotowane wpisy (trzeba aby użyć próbkowania ujemnego lub grawitacji).
WALS
Funkcja dostępna tylko w przypadku kwadratów straty.
Możliwe do równoległego.
Konwersja przebiega szybciej niż w SGD.
Łatwiejsza obsługa niezarejestrowanych wpisów.