Rozkład macierzy

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.

Ilustracja przedstawiająca rozkładanie macierzy na podstawie przykładu powtarzanego filmu.

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.

Grafika przedstawiająca 3 macierze: rozkład na czynniki w postaci obserwowanej wyłącznie na podstawie macierzy, rozkład ważony i rozkład wartości liczby pojedynczej.

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:

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.