To jest część 2 mojej serii o systemach rekomendacyjnych. Ostatni post był wprowadzeniem do RecSys. Dzisiaj wyjaśnię bardziej szczegółowo trzy rodzaje filtrowania kolaboracyjnego: User-Based Collaborative Filtering (UB-CF) oraz Item-Based Collaborative Filtering (IB-CF).
Zacznijmy.
Wyobraźmy sobie, że chcemy polecić film naszemu przyjacielowi Stanleyowi. Możemy założyć, że podobne osoby będą miały podobny gust. Załóżmy, że ja i Stanley widzieliśmy te same filmy i oceniliśmy je wszystkie prawie tak samo. Ale Stanley nie widział „Ojca chrzestnego: Część II”, a ja tak. Jeśli ja uwielbiam ten film, to logiczne jest, że on też to zrobi. W ten sposób stworzyliśmy sztuczną ocenę opartą na naszym podobieństwie.
Dobrze, UB-CF używa tej logiki i poleca przedmioty poprzez znalezienie podobnych użytkowników do aktywnego użytkownika (któremu próbujemy polecić film). Szczególnym zastosowaniem tego jest algorytm Nearest Neighbor oparty na użytkowniku. Algorytm ten wymaga wykonania dwóch zadań:
1.Znajdź K-najbliższych sąsiadów (KNN) użytkownika a, używając funkcji podobieństwa w do pomiaru odległości między każdą parą użytkowników:
PROS:
- Łatwe do zaimplementowania.
- Niezależna od kontekstu.
- W porównaniu z innymi technikami, takimi jak content-based, jest dokładniejsza.
CONS:
- Sparsity: Odsetek osób, które oceniają przedmioty jest naprawdę niski.
- Skalowalność: Im więcej K sąsiadów weźmiemy pod uwagę (pod pewnym progiem), tym lepsza powinna być moja klasyfikacja. Niemniej jednak, im więcej użytkowników jest w systemie, tym większy będzie koszt znalezienia najbliższych K sąsiadów.
- Cold-start: Nowi użytkownicy nie będą mieli żadnych lub niewiele informacji o nich, aby można było ich porównać z innymi użytkownikami.
- Nowy element: Podobnie jak w ostatnim punkcie, nowym elementom będzie brakowało ocen, aby stworzyć solidny ranking (Więcej o tym w 'Jak sortować i szeregować elementy’).
Item-Based Collaborative Filtering (IB-CF)
Back to Stanley. Zamiast skupiać się na jego przyjaciołach, moglibyśmy skupić się na tym, które pozycje ze wszystkich opcji są bardziej podobne do tego, co wiemy, że lubi. To nowe skupienie znane jest jako Item-Based Collaborative Filtering (IB-CF).
Możemy podzielić IB-CF na dwa pod-zadania:
1.Obliczanie podobieństwa między elementami:
- Cosine-Based Similarity
- Correlation-Based Similarity
- Adjusted Cosine Similarity
- 1-Jaccard distance
2.Calculation of Prediction:
Różnica pomiędzy UB-CF a tą metodą polega na tym, że w tym przypadku bezpośrednio wstępnie obliczamy podobieństwo pomiędzy współocenianymi elementami, pomijając wyszukiwanie K-neighborhood.
Slope One
Slope One jest częścią rodziny Item-Based Collaborative Filtering, wprowadzoną w pracy Daniela Lemire i Anny Maclachlan z 2005 roku o nazwie Slope One Predictors for Online Rating-Based Collaborative Filtering.
Główna idea tego modelu jest następująca:
Załóżmy, że mamy dwóch różnych użytkowników: A i B. Ponadto mamy przedmiot I i przedmiot J. Użytkownik A ocenił przedmiot I na 1 gwiazdkę, a przedmiot J na 1,5. Jeśli użytkownik B ocenił przedmiot I z 2. Możemy przyjąć założenie, że różnica między oboma przedmiotami będzie taka sama jak użytkownika A. Mając to na uwadze, użytkownik B oceniłby przedmiot J jako: 2+ (1,5-1) = 2,5
Główna idea stojąca za Slope One
Autorzy skupiają się na 5 celach:
1. Łatwy do wdrożenia i utrzymania.
2. Aktualizowalny online: nowe oceny powinny szybko zmieniać przewidywania.
3. Wydajny w czasie konsultacji: przechowywanie jest głównym kosztem.
4. Działa z niewielką ilością informacji zwrotnych od użytkowników.
5. Rozsądnie dokładny, w pewnych zakresach, w których niewielki przyrost dokładności nie oznacza wielkiego poświęcenia prostoty i skalowalności.
Recap
Widzieliśmy User-Based i Item-Based Collaborative Filtering. Pierwszy z nich skupia się na wypełnianiu macierzy użytkownik-pozycja i rekomendowaniu w oparciu o użytkowników bardziej podobnych do aktywnego użytkownika. Z drugiej strony, IB-CF wypełnia macierz Item-Item i rekomenduje w oparciu o podobne elementy.
Trudno jest krótko wyjaśnić wszystkie te tematy, ale ich zrozumienie jest pierwszym krokiem do zagłębienia się w RecSys.
.