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||M−U×V||2M

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


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


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.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.