Jakie są metody statystyczne polecania filmów takich jak Netflix?

14

Chcę wdrożyć model dynamiczny, aby polecić film użytkownikowi. Zalecenia należy aktualizować za każdym razem, gdy użytkownik ogląda film lub ocenia go. Dla uproszczenia myślę o wzięciu pod uwagę dwóch czynników:

  • wcześniejsze oceny innych filmów użytkownika
  • czas, w którym użytkownik obejrzał niektóre poprzednie filmy

Jak skonfigurować taki model i co poleca literatura akademicka?

Jestem nowy w tej dziedzinie i domyślam się, że liniowy model regresji może zapewnić dobry wynik, a nie zbyt skomplikowane metody, aby uniknąć nakładania niepotrzebnej niepewności w oszacowaniach parametrów. Ale może istnieją już ustalone metody, które są powszechnie stosowane w praktyce?

JohnAndrews
źródło
3
Nie sądzę, aby było to zbyt ogólne, aby można było na nie odpowiedzieć. Np. Ma 2 pozytywne odpowiedzi.
Gung - Przywróć Monikę
2
Wypróbuj masywne zbiory danych Coursera i bezpłatną książkę!
Felipe Gerard,
2
Prawdopodobnie chcesz sprawdzić rozkład macierzy i / lub rozkład tensora.
Marc Claesen,
1
@ usεr11852 Moja odpowiedź jest szersza niż pytanie.
shadowtalker,
1
@ usεr11852, tytuł pytania brzmi: „Jakie są metody statystyczne ...?” Ostatnie zdanie pyta, czy istnieją metody inne niż regresja. Myślę, że kilka odpowiedzi poniżej zawiera tego rodzaju informacje.
gung - Przywróć Monikę

Odpowiedzi:

14

Jest to właściwie stosunkowo znany problem w dziedzinie uczenia maszynowego. W ~ 2006 r. Netflix zaoferował algorytmowi 1 mln USD, który zapewnił najlepszą rozsądną poprawę systemu rekomendującego. Teorię zwycięskiego rozwiązania omówiono pokrótce w tym podręczniku Caltech na temat wstępnego uczenia maszynowego.

Zasadniczo zastosowano kompleksową metodę uczenia się . W szczególności zastosowano rodzaj mieszania lub układania w stos . Jest to nietrywialne, ale trochę intuicyjne. Aby zrozumieć intuicję korzystania z różnych metod statystycznych w harmonii, rozważ różne powody, dla których różni ludzie lubią te same filmy: np. Joe może lubić Topgun, ponieważ uwielbia filmy akcji z lat 80., a Jane lubi Topgun, ponieważ lubi filmy ze ścieżkami dźwiękowymi Kenny'ego Logginsa. Tak więc fakt, że obaj oglądali (i wysoko ocenili film) niekoniecznie oznacza, że ​​polubią inne filmy z dużym prawdopodobieństwem. Algorytm predykcji idealnie byłby w stanie uwzględnić te różnice, przynajmniej w pewnej mierze.

Może to sprawić, że rozwiązanie będzie wydawać się dość proste, ale równoważenie konkurencyjnych algorytmów i ustalanie priorytetów dla każdego przypadku zdecydowanie nie jest proste. Fakt, że Netflix oferował tak dużą nagrodę, powinien uczynić skalę wyzwania dość oczywistym.

Jeśli dopiero zaczynasz uczenie maszynowe, sprawdzenie powyższych zasobów może być pomocne w zależności od poziomu zainteresowań i tła matematycznego. Zatem regresja prawdopodobnie działałaby dobrze w porządku, ale możliwa jest znacznie lepsza wydajność.

d0rmLife
źródło
2
+1 do nagrody Netflix. Jak zauważyłeś, ta nagroda jest dobrym wskaźnikiem tego, jak ogromne jest to wyzwanie.
Cort Ammon,
11

Połowa wyzwań związanych z tymi problemami to wiedza, czego szukać.

Być może dodałeś tag, nie zdając sobie z tego sprawy, ale tak naprawdę szukasz informacji o systemach rekomendujących . Być może warto zacząć od wspólnego filtrowania , a jeszcze lepiej we wprowadzeniu do podręcznika Systemów rekomendujących Ricci, Rokach i Shapiry cytowanego na tej stronie.

Shadowtalker
źródło
Rzeczywiście przyjrzałem się temu znacznikowi i natknąłem głównie na przykłady wspólnego filtrowania. Problem, który mam z tą metodą, polega na tym, że zależy to od wkładu innych użytkowników, jeśli zrozumiałem pojęcie. Bardziej szukam metod w sytuacji jednego użytkownika, żadnych innych danych lub opcjonalnie innych danych. Spójrz na twoje inne referencje.
JohnAndrews,
1
@JohnAndrews: Myślę, że ssdecontrol daje ci najbardziej odpowiednie porady. Musisz zajrzeć do literatury dotyczącej systemów rekomendujących. W grę wchodzi wiele technik, np. NNMF , Funk SVD , wiele różnych wariantów klasyfikatorów najbliższych sąsiadów itp., Aby wymienić niektóre oczywiste. W końcu chcesz korzystać z filtrowania grupowego, ale nie możesz po prostu „zanurzyć się” bez żadnego tła.
usεr11852
@JohnAndrews CrossValidated jest zwykle złym miejscem do rozpoczęcia nauki na dany temat, szczególnie jeśli po prostu wyszukujesz według tagu. A może zamiast tego spojrzeć na referencje, które podłączyłem? Artykuły ze statystyk Wikipedii nie zawsze są wiarygodne, ale są całkiem dobre i przytaczają wiele referencji.
shadowtalker,
6

Powinieneś sprawdzić kurs Andrew Ng na Coursera: https://www.coursera.org/learn/machine-learning. Zawiera lekcję budowania systemów rekomendujących, które wydają się być tym, czego szukasz. Zasadniczo jest to forma regresji liniowej, która uczy się syntetycznych atrybutów filmów od osób, które oceniały filmy i używa ich do przewidywania rekomendacji dla osób, które nie oceniały / nie oglądały filmów.

Raphael Nikolaus
źródło
3
Witamy na naszej stronie! Dziękujemy za podanie informacji podsumowujących treść linku, a nie tylko „odsłonięcie” linku - doceniamy to.
Silverfish,
4

W Netflix Challenge (październik 2006 r. - wrzesień 2009 r.) Bardzo duży zespół (107 osobnych podmodeli) zdobył w końcu główną nagrodę w wysokości 1 mln USD, ale warto zauważyć, że pierwsze proste (niepołączone) algorytmy, które pokonały Netflix Cinematch punkt odniesienia oparto na uogólnionej (rzadkiej macierzy) SVD. Ten pierwszy kamień milowy pokonania Cinematch został osiągnięty zaledwie 6 dni po zawodach rozpoczętych przez zespół o nazwie WXYZConsulting.

SVD (Singular Value Decomposition) to algorytm faktoryzacji macierzy, w którym zaczynasz od [user, movie]macierzy 2d z oceną (1 do 5 gwiazdek) w każdej [u, m]pozycji (*) i dzielisz ją na 3 macierze, w których środkowa macierz jest macierzą kwadratową ukryte interakcje między użytkownikami a filmami.

Możesz zmniejszyć lub zwiększyć rangę macierzy kwadratowej, aby uwzględnić odpowiednio mniej lub więcej takich interakcji z utajonym czynnikiem.

Istnieje kilka implementacji darmowego oprogramowania szybkiego / wydajnego rzadkiego SVD. Na przykład redsvd lub wedpal-wabbit, więc zanim napiszesz własne, możesz je wypróbować.

(*) Większość z tych wpisów to zero, ponieważ większość użytkowników nie oceniło większości filmów. tj. matryca jest bardzo rzadka.

Bibliografia:

arielf
źródło
Czego używał Netflix wcześniej?
jona
2
Algorytm zwany „Cinematch”, który nie jest publiczny, ale został opisany jako „liniowa kombinacja różnych czynników udoskonalanych przez lata”, np. Ważona średnia globalna ocena (G) + średnia ważona ocena użytkownika [u] + średnia ważona film [m] ocena, ... itd.
arielf
Dziękuję za wypracowaną odpowiedź. Wkopię się w to. Jeśli chodzi o kombinacje liniowe, czyż nie jest to duży problem tej nad parametryzacji? To byłoby moje preferowane podejście. Ale SVD brzmi obiecująco.
JohnAndrews,
Nie stanowi problemu, jeśli dodasz tylko czynniki poprawiające błąd uogólnienia . Oczywiście musisz przetestować każdy taki dodatek na niewidocznych danych, aby uzyskać niezbędną pewność.
arielf