Rozkład macierzy

Rozkład macierzy to prosty model wektora dystrybucyjnego. Biorąc pod uwagę tablica opinii A Rm×n, gdzie m jest liczby użytkowników (lub zapytań) n i liczby elementów, model uczy się:

  • Macierz wektora dystrybucyjnego URm×d, gdzie wiersz i to wektor dystrybucyjny dla użytkownika i.
  • Macierz wektora dystrybucyjnego elementu VRn×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 UVT jest dobre przybliżenie macierzy opinii A. Zwróć uwagę, że (i,j) wejście do U.VT jest po prostu iloczynem skalarnym Ui,Vj wektorów dystrybucyjnych użytkownika i i elementu j, który chcesz wyświetlić w pobliżu Ai,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:

minURm×d, VRn×d(i,j)obs(AijUi,Vj)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ą UVT:

minURm×d, VRn×dAUVTF2.

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 UVT (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).

minURm×d, VRn×d(i,j)obs(AijUi,Vj)2+w0(i,j)obs(Ui,Vj)2.

W tym przykładzie w0 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.

(i,j)obswi,j(Ai,jUi,Vj)2+w0i,jobsUi,Vj2

gdzie wi,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.