Filtrowanie kolaboratywne: oparte na użytkownikach i elementach
Podobieństwo użytkowników, podobieństwo elementów, metody sąsiedztwa, podobieństwo cosinusowe dla ocen.
Filtrowanie kolaboratywne: oparte na użytkownikach i elementach to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Czym jest filtrowanie kolaboracyjne?
Filtrowanie kolaboracyjne (CF) rekomenduje elementy na podstawie zachowań wielu użytkowników. Główna idea jest prosta: osoby, które miały podobne preferencje w przeszłości, prawdopodobnie będą miały je również w przyszłości. Metoda nie wymaga opisów elementów, a jedynie historii interakcji.
Macierz użytkownik–element
Filtrowanie kolaboracyjne rozpoczyna się od macierzy użytkownik–element, w której wiersze reprezentują użytkowników, kolumny elementy, a każda komórka zawiera ocenę lub pozostaje pusta, jeśli element nie został oceniony. Macierz ta jest zwykle bardzo rzadka, ponieważ każdy użytkownik ocenia niewiele elementów.
import pandas as pd
matrix = ratings.pivot_table(
index="user_id", columns="item_id", values="rating"
)Dwa rodzaje filtrowania kolaboracyjnego
- Oparte na użytkownikach: znajdź użytkowników podobnych do danego użytkownika i rekomenduj elementy, które im się podobały.
- Oparte na elementach: znajdź elementy podobne do tych, które podobały się danemu użytkownikowi, i zarekomenduj je.
Oba podejścia opierają się na mierze podobieństwa między wierszami (użytkownikami) lub kolumnami (elementami).
Podobieństwo cosinusowe
Podobieństwo cosinusowe mierzy kąt między dwoma wektorami ocen, ignorując ich długość. Wartości bliskie 1 oznaczają bardzo podobne preferencje, a wartości bliskie 0 — brak związku.
from sklearn.metrics.pairwise import cosine_similarity
filled = matrix.fillna(0)
user_sim = cosine_similarity(filled) # user x userPredykcja oparta na użytkownikach
Aby przewidzieć ocenę danego elementu, należy obliczyć średnią ważoną ocen wystawionych przez podobnych użytkowników, używając podobieństwa jako wagi. Oceny bardziej podobnych sąsiadów mają większy wpływ na wynik.
Wzór predykcji
Przewidywana ocena = suma (podobieństwo * ocena sąsiada) / suma (podobieństwo), obliczana dla sąsiadów, którzy ocenili dany element. Odjęcie średniej każdego użytkownika przed obliczeniem wyniku (centrowanie względem średniej) koryguje różnice między użytkownikami, którzy zazwyczaj wystawiają wysokie lub niskie oceny.
import numpy as np
def predict(sims, ratings_for_item):
mask = ~np.isnan(ratings_for_item)
if sims[mask].sum() == 0:
return np.nan
return np.dot(sims[mask], ratings_for_item[mask]) / sims[mask].sum()Wybór sąsiadów (k)
Zamiast uwzględniać wszystkich użytkowników, należy zachować tylko k najbardziej podobnych sąsiadów. Ogranicza to szum pochodzący od niepodobnych użytkowników i przyspiesza predykcję. k jest dostrajalnym hiperparametrem.
Podobieństwo oparte na elementach
Filtrowanie kolaboracyjne oparte na elementach oblicza podobieństwo między kolumnami elementów zamiast między wierszami użytkowników. Rekomendowane są elementy najbardziej podobne do tych, które dany użytkownik już polubił.
item_sim = cosine_similarity(filled.T) # item x itemDlaczego podejście oparte na elementach jest stabilniejsze
Relacje między elementami zmieniają się powoli: podobieństwo między dwoma filmami pozostaje w przybliżeniu stałe. Preferencje użytkowników i skład bazy użytkowników zmieniają się szybciej. Dlatego podobieństwa między elementami można obliczyć z wyprzedzeniem i wykorzystywać ponownie, uzyskując stabilniejsze i łatwiej skalowalne rekomendacje. Z tego powodu Amazon słynął z preferowania tego podejścia.
Problem zimnego startu
Filtrowanie kolaboracyjne ma trudności z obsługą nowych użytkowników lub elementów, dla których nie ma jeszcze ocen, ponieważ brakuje danych do porównania. Typowe rozwiązania obejmują poproszenie nowych użytkowników o wystawienie kilku ocen lub zastosowanie metod opartych na treści jako rozwiązania awaryjnego (omówionych później).
Generowanie rekomendacji
Należy obliczyć wynik dla każdego nieocenionego elementu użytkownika, posortować wyniki malejąco i zwrócić pierwszych N elementów jako rekomendacje.
scores = {item: predict_for(user, item)
for item in unrated_items(user)}
top_n = sorted(scores, key=scores.get, reverse=True)[:10]Szybki test
Sprawdź swoją wiedzę na temat filtrowania kolaboracyjnego.
Podsumowanie
Zbudowano system filtrowania kolaboracyjnego na podstawie macierzy użytkownik–element, obliczono podobieństwo cosinusowe, przewidywano oceny jako średnią ważoną podobieństw sąsiadów i wyjaśniono, dlaczego filtrowanie kolaboracyjne oparte na elementach jest stabilniejsze niż podejście oparte na użytkownikach. Następny temat: faktoryzacja macierzy za pomocą SVD.
Często zadawane pytania
Czy lekcja „Filtrowanie kolaboratywne: oparte na użytkownikach i elementach” jest bezpłatna?
Tak — pełny tekst „Filtrowanie kolaboratywne: oparte na użytkownikach i elementach” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Co nauczysz się w „Filtrowanie kolaboratywne: oparte na użytkownikach i elementach”?
Podobieństwo użytkowników, podobieństwo elementów, metody sąsiedztwa, podobieństwo cosinusowe dla ocen. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?
Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Filtrowanie kolaboratywne: oparte na użytkownikach i elementach”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?
Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Filtrowanie kolaboratywne: oparte na użytkownikach i elementach
- Faktoryzacja macierzy za pomocą SVD
- Filtrowanie oparte na treści
- Systemy hybrydowe i metryki oceny