Filtraggio collaborativo: basato sugli utenti e sugli elementi
Similarità tra utenti, similarità tra elementi, metodi basati sul vicinato, similarità coseno per le valutazioni
Filtraggio collaborativo: basato sugli utenti e sugli elementi è una lezione Learn AI with Python gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Learn AI with Python, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Learn AI with Python include 4 lezioni in totale.
Che cos'è il filtraggio collaborativo?
Il filtraggio collaborativo (CF) consiglia elementi apprendendo dal comportamento di molti utenti. L'idea di base è che le persone che hanno espresso preferenze simili in passato tendono a farlo anche in futuro. Non richiede descrizioni degli elementi, ma solo la cronologia delle interazioni.
La matrice utente-elemento
Il filtraggio collaborativo parte da una matrice utente-elemento in cui le righe rappresentano gli utenti, le colonne gli elementi e ogni cella contiene una valutazione (oppure è vuota se l'elemento non è stato valutato). Questa matrice è generalmente molto sparsa, poiché ogni utente valuta pochi elementi.
import pandas as pd
matrix = ratings.pivot_table(
index="user_id", columns="item_id", values="rating"
)Due varianti del filtraggio collaborativo
- Basato sugli utenti: individua gli utenti simili a Lei e consiglia ciò che hanno apprezzato.
- Basato sugli elementi: individua gli elementi simili a quelli che Le sono piaciuti e consiglia questi ultimi.
Entrambi si basano su una misura di similarità tra righe (utenti) o colonne (elementi).
Similarità coseno
La similarità coseno misura l'angolo tra due vettori di valutazioni, ignorandone il modulo. Valori vicini a 1 indicano gusti molto simili, mentre valori vicini a 0 indicano gusti non correlati.
from sklearn.metrics.pairwise import cosine_similarity
filled = matrix.fillna(0)
user_sim = cosine_similarity(filled) # user x userPrevisione basata sugli utenti
Per prevedere la Sua valutazione di un elemento, calcoli una media ponderata delle valutazioni assegnate da utenti simili, usando la similarità come peso. I vicini più simili hanno un peso maggiore.
Formula della previsione
Valutazione prevista = somma(similarità * valutazione_del_vicino) / somma(similarità), considerando i vicini che hanno valutato l'elemento. Sottrarre prima la media di ciascun utente (centratura sulla media) corregge le differenze tra utenti che tendono a valutare generalmente in modo alto o basso.
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()Scelta dei vicini (k)
Invece di utilizzare tutti gli utenti, mantenga solo i k vicini più simili. In questo modo riduce il rumore prodotto dagli utenti dissimili e accelera la previsione. k è un iperparametro regolabile.
Similarità basata sugli elementi
Il filtraggio collaborativo basato sugli elementi calcola la similarità tra le colonne degli elementi anziché tra le righe degli utenti. Consiglia gli elementi più simili a quelli che un utente ha già apprezzato.
item_sim = cosine_similarity(filled.T) # item x itemPerché il filtraggio basato sugli elementi è più stabile
Le relazioni tra elementi cambiano lentamente: la similarità tra due film rimane all'incirca costante. I gusti degli utenti e la base di utenti cambiano più rapidamente. Per questo le similarità tra elementi possono essere precalcolate e riutilizzate, offrendo raccomandazioni più stabili e scalabili; ecco perché Amazon lo ha notoriamente favorito.
Il problema del cold start
Il filtraggio collaborativo ha difficoltà con i nuovi utenti o elementi che non hanno ancora valutazioni: non c'è nulla con cui confrontarli. Tra le soluzioni comuni vi sono chiedere ai nuovi utenti alcune valutazioni oppure ricorrere a metodi basati sul contenuto, descritti più avanti.
Generazione delle raccomandazioni
Assegni un punteggio a ogni elemento non ancora valutato dall'utente, ordini i risultati in ordine decrescente e restituisca i primi N come raccomandazioni.
scores = {item: predict_for(user, item)
for item in unrated_items(user)}
top_n = sorted(scores, key=scores.get, reverse=True)[:10]Verifica rapida
Verifichi le Sue conoscenze sul filtraggio collaborativo.
Riepilogo
Ha creato un sistema di filtraggio collaborativo su una matrice utente-elemento, calcolato la similarità coseno, previsto le valutazioni come media ponderata in base alla similarità dei vicini e osservato perché il filtraggio collaborativo basato sugli elementi è più stabile di quello basato sugli utenti. Prossimo argomento: fattorizzazione di matrici con SVD.
Domande Frequenti
La lezione «Filtraggio collaborativo: basato sugli utenti e sugli elementi» è gratuita?
Sì — il testo completo di «Filtraggio collaborativo: basato sugli utenti e sugli elementi» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Learn AI with Python, passa a CoddyKit PRO. Il corso Learn AI with Python include 4 lezioni in totale.
Cosa imparerò in «Filtraggio collaborativo: basato sugli utenti e sugli elementi»?
Similarità tra utenti, similarità tra elementi, metodi basati sul vicinato, similarità coseno per le valutazioni Eserciti Learn AI with Python con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Learn AI with Python?
Non è richiesta alcuna esperienza precedente. Learn AI with Python su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Filtraggio collaborativo: basato sugli utenti e sugli elementi»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Learn AI with Python?
Sì. Ogni lezione Learn AI with Python include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Filtraggio collaborativo: basato sugli utenti e sugli elementi
- Fattorizzazione delle matrici con SVD
- Filtraggio basato sul contenuto
- Sistemi ibridi e metriche di valutazione