Wspólne filtrowanie poprzez faktoryzację macierzy z funkcją straty logistycznej

9

Rozważ problem z filtrowaniem grupowym. Mamy macierz rozmiaru #users * #items. jeśli użytkownik lubi przedmiot j, jeśli użytkownik nie lubi przedmiot j, ajeśli nie ma danych o parze (i, j). Chcemy przewidzieć dla przyszłego użytkownika, pary elementów.MMi,j=1Mi,j=0Mi,j=?Mi,j

Standardowym podejściem do wspólnego filtrowania jest reprezentowanie M jako iloczynu 2 macierzy tak aby było minimalne (np. Minimalizując średni błąd kwadratowy dla znanych elementów ).U×V||MU×V||2M

Dla mnie funkcja utraty logistyki wydaje się bardziej odpowiednia, dlaczego wszystkie algorytmy używają MSE?

Slon
źródło
1
W tym przypadku ma to sens, ale przez większość czasu M_i, j może być oceną, w takim przypadku MSE jest bardziej przydatne. Powiedziałbym, że MSE jest bardziej ogólny.
ThiS,

Odpowiedzi:

9

Używamy strat logistycznych do niejawnego faktoryzacji macierzy w Spotify w kontekście rekomendacji muzycznych (przy użyciu liczników odtworzeń). Właśnie opublikowaliśmy artykuł na temat naszej metody na nadchodzących warsztatach NIPS 2014. Artykuł nosi tytuł Logistic Matrix Factorization for Implicit Feedback Data i można go znaleźć tutaj http://stanford.edu/~rezab/nips2014workshop/submits/logmat.pdf

Kod artykułu można znaleźć na moim Github https://github.com/MrChrisJohnson/logistic-mf

Chris Johnson
źródło
1
L (R | X, Y, β) = Prod (p (lui | xu, yi, βu, βi) ^ α.r_ui * (1 - p (lui | xu, yi, βu, βi)) ^ (1 - α.r_ui) A spojrzał na twój kod i używasz 1 + α.r_ui l64: A = (self.counts + self.ones) * A github.com/MrChrisJohnson/logistic-mf/blob/master/ … Dlatego czegoś mi brakuje? Pozdrawiam
fstrub
Przejrzałem artykuł, który opublikowałeś. Jest to bardzo interesujące, ponieważ faktoryzacja macierzy z regresją logistyczną nie była aktywnie badana. W każdym razie jestem trochę mylony z twoją funkcją Loss (2) L (R | X, Y, β) = Prod (p (lui | xu, yi, βu, βi) ^ α.r_ui * (1 - p (lui | xu, yi, βu, βi)) Jeśli chodzi o (3), myślę, że istnieje błąd literowy L (R | X, Y, β) = Prod (p (lui | xu, yi, βu, βi) ^ α .r_ui * (1 - p (lui | xu, yi, βu, βi)) ^ (1 + α.r_ui ) Ale tak naprawdę nadal jestem trochę zdezorientowany. Rzeczywiście, spodziewałbym się takiego prawa podobnego do Bernouilli as
fstrub
Może spóźniłem się na ten temat ... ktoś miał okazję wypróbować ten algo poza kontekstem rekomendacji muzycznej, a nie klasycznym kontekstem rekomendacji produktu? Dzięki.
Marco Fumagalli,
3

Większość artykułów na ten temat dotyczy matryc, w których oceny są w skali [0,5]. Na przykład w kontekście nagrody Netflix macierze mają dyskretne oceny od 1 do 5 (+ brakujące wartości). Dlatego błąd kwadratu jest najbardziej rozłożoną funkcją kosztu. Widoczne są inne mierniki błędów, takie jak rozbieżność Kullbacka-Leiblera.

Innym problemem, który może wystąpić przy standardowym rozkładaniu na czynniki pierwsze macierzy, jest to, że niektóre elementy macierzy U i V mogą być ujemne (szczególnie w pierwszych krokach). To jest powód, dla którego nie użyjesz tutaj utraty dziennika jako funkcji kosztu.

Jeśli jednak mówisz o nieujemnej faktoryzacji macierzy , powinieneś być w stanie wykorzystać utratę logów jako funkcję kosztów. Znajdujesz się w podobnym przypadku niż regresja logistyczna, w której utratę logów stosuje się jako funkcję kosztu: zaobserwowane wartości to 0 i 1 oraz przewidujesz liczbę (prawdopodobieństwo) między 0 a 1.

Aymen
źródło