0Pricing
Learn AI with Python · Lezione

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 user

Previsione 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 item

Perché 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

  1. Filtraggio collaborativo: basato sugli utenti e sugli elementi
  2. Fattorizzazione delle matrici con SVD
  3. Filtraggio basato sul contenuto
  4. Sistemi ibridi e metriche di valutazione
← Torna a Learn AI with Python