Team I.A. Italia

5 min

Filtro collaborativo cos'è e come implementarlo con python

cos'è il Il filtraggio collaborativo ?

Il filtraggio collaborativo può essere considerato una tecnica per fornire consigli in un sistema o motore di suggerimenti. In sostanza, possiamo dire che è un modo per trovare somiglianze tra utenti e oggetti.

Filtro collaborativo cos'è e come implementarlo con python

I sistemi di raccomandazione hanno un'ampia gamma di applicazioni in tutti i domini.

Costruire un buon sistema di raccomandazione adatto alle esigenze aziendali è sempre una sfida. Un buon sistema può essere sviluppato solo quando c'è una buona comprensione del suo funzionamento. In questo articolo, discuteremo come creare da zero un sistema di raccomandazione , in particolare basato su filtri collaborativi. Inizieremo con i dati casuali e costruiremo un sistema di raccomandazione per generare raccomandazioni.

Indice

  1. Che cos'è il filtro collaborativo?

  2. Uso della correlazione

  3. Implementazione del filtraggio collaborativo basato sugli elementi

  4. Implementazione del filtraggio collaborativo basato sull'utente

Iniziamo con la comprensione del filtro collaborativo.

Che cos'è il filtro collaborativo?

Il filtraggio collaborativo può essere considerato una tecnica per fornire consigli in un sistema o motore di suggerimenti. In sostanza, possiamo dire che è un modo per trovare somiglianze tra utenti e oggetti. Utilizzandolo possiamo calcolare le valutazioni in base alle valutazioni di utenti simili o articoli simili.

I sistemi di raccomandazione basati sul filtraggio collaborativo possono essere classificati nei seguenti modi:

  • Basato sul prodotto: questo tipo di sistema di raccomandazione aiuta a trovare somiglianze tra gli articoli oi prodotti. Questo viene fatto generando dati sul numero di utenti che hanno acquistato due o più articoli insieme e se il sistema trova una correlazione elevata, presume la somiglianza tra i prodotti. Ad esempio, ci sono due prodotti X e Y che sono altamente correlati quando un utente acquista X, il sistema consiglia di acquistare anche Y.

  • Basato sull'utente: questo tipo di sistema aiuta a trovare utenti simili in base alla loro natura di selezione degli articoli. Ad esempio, un utente utilizza un casco, una ginocchiera e una protezione per i gomiti e il secondo utilizza solo un casco e una protezione per i gomiti al momento della guida in bicicletta, il sistema di raccomandazione basato sull'utente consiglierà al secondo utente di utilizzare una protezione per le ginocchia.

In questo articolo cercheremo di comprendere da zero il filtraggio collaborativo. Per prima cosa creeremo un esempio di dati e cercheremo di trovare somiglianze tra gli elementi. Trovare la somiglianza tra gli elementi è correlato alla ricerca della correlazione tra gli elementi in base ai dati che abbiamo. Prima di passare all'implementazione ci viene richiesto di capire qual è la correlazione.

Uso della correlazione

La correlazione può essere considerata come la relazione tra due variabili. Questo può essere di tre tipi positivo, negativo o neutro. Se due variabili sono correlate positivamente, possiamo dire che i cambiamenti in una variabile in direzione positiva o negativa possono fornire un cambiamento nella seconda variabile in direzione positiva o negativa.

Se la correlazione è negativa, un cambiamento in una variabile può causare un cambiamento nella direzione opposta. Se le variabili sono correlate in modo neutro, le modifiche in una variabile non provocano una modifica nell'altra. La misurazione della correlazione può essere effettuata utilizzando il coefficiente di correlazione.

Il calcolo del coefficiente di correlazione può essere effettuato calcolando prima la covarianza della variabile e poi dividendo per la quantità di covarianza per il prodotto delle deviazioni standard di tali variabili.

Matematicamente,

filtro collaborativo cos'è e come implementarlo con python

Dove,

r = coefficiente di correlazione

x i = valori di x variabile in un campione

x = media dei valori della variabile x

y i = valori della variabile y in un campione

y = media dei valori della variabile y

E' veramente molto semplice, potresti quasi calcolarla con un foglio di carta e una calcolatrice

Esistono molti tipi di coefficienti di correlazione utilizzati nell'analisi statistica, utilizziamo principalmente la correlazione di Pearson per i sistemi di raccomandazione perché è una misura della forza e della direzione della relazione lineare tra due variabili. Passiamo all'implementazione di un sistema di raccomandazione.

Implementazione del filtraggio collaborativo basato sui prodotti

1. Importiamo le librerie

#Importiamo le libreire
 
import pandas as pd
 
import numpy as np
 
import matplotlib.pyplot as plt
 

2. Set di dati

In questo articolo, implementeremo un sistema di raccomandazione utilizzando l'approccio di filtraggio collaborativo a tale scopo lavoreremo su dati semplici. Diciamo che abbiamo alcuni utenti, prodotti e valutazioni di quel prodotto fornite dall'utente. Possiamo creare un tale set di dati utilizzando il codice di seguito

#creiamo un dataset finto molto semplice per farti capire come funziona un filtro collaborativo,
 
#successivamente per te sarà facile implementarlo con i tuoi dati
 

 
data2 = {'user_id':[1, 2, 3, 1, 2],
 
'product_id':[1, 2, 1,2,3],
 
'product_name':['product_1', 'product_2', 'product_1','product_2','product_3'],
 
'rating':[3,3,3,2,2]
 
}
 

 
items_df = pd.DataFrame(data2)
 
items_df
 

 
Output:

filtro collaborativo cos'è e come implementarlo con python

3. Tabella pivot

Creiamo una tabella pivot utilizzando questi dati in base a user_id e product_name.

#Creiamo una tabella Pivot tra il voto e i prodotti
 
pivot = pd.pivot_table(items_df,values='rating',columns='product_name',index='user_id')
 
pivot
 

 
Output:

filtro collaborativo cos'è e come implementarlo con python

Qui nell'output sopra, possiamo vedere la nostra tabella pivot. Questo formato di tabella può essere utilizzato per calcolare la correlazione. Poiché la correlazione sarà maggiore, possiamo usarli come nostra raccomandazione.

Generazione di raccomandazione

Per comprendere chiaramente il processo, abbiamo utilizzato un set di dati molto semplice e possiamo dire, vedendo la tabella sopra, che i prodotti 1, 2 e 3 hanno valutazioni simili e il prodotto 1 ha due recensioni. Quindi potrebbe esserci la possibilità che i prodotti 2 e 3 siano consigliati con il prodotto 1. Verifichiamo i nostri risultati.

#generiamo una raccompandazione in base a prodotti e rating
 
print('Il prodotto da consigliare quando viene acquistato il product_2 è :')
 
print( pivot.corr()['product_2'].sort_values(ascending=False).iloc[1:2])
 

 
Output :
 
Il prodotto da consigliare quando viene acquistato il product_2 è : product_name product_1 NaN

Utilizzando le righe di codici sopra, calcoliamo la correlazione tra i prodotti e ordiniamo i valori. Quindi abbiamo stampato 1 valore e abbiamo scoperto che il nostro sistema ci consiglia di acquistare o utilizzare il prodotto 2 con il prodotto 1.

Implementazione del filtraggio collaborativo basato sull'utente

Nella sezione precedente, abbiamo esaminato il processo di creazione di dati e tabelle pivot. In questa sezione, utilizzeremo dati simili per implementare il filtraggio collaborativo basato sull'utente.

1. Tabella pivot

Iniziamo con la creazione di una tabella pivot per il filtraggio collaborativo basato sull'utente. A questo scopo, ci viene richiesto di invertire la nostra vecchia tabella pivot, il che significa che ora stiamo creando una tabella pivot basata sugli utenti come colonne.

#Creiamo una tabella Pivot tra il voto e gli utenti
 
pivot1 = pd.pivot_table(items_df,values='rating',columns='user_id',index='product_name')
 
pivot1
 

 
Output:

filtro collaborativo cos'è e come implementarlo con python

Nella tabella sopra, possiamo vedere che abbiamo user-id come colonna e prodotti come riga.

2. Generazione di raccomandazione

In questa sezione, troveremo utenti simili in base alle valutazioni fornite. In modo da poter filtrare gli utenti e fornire consigli simili su elementi diversi oppure possiamo anche fornire consigli a un utente in base a una cronologia utente simile.

#generiamo una raccompandazione in base a utenti e rating
 
print('Gli utenti simili a user_2 sono :')
 
print( pivot1.corr()[2].sort_values(ascending=True).iloc[1:2])
 

 
Output:
 
Gli utenti simili a user_2 sono :
 
user_id 1 NaN

Nell'output sopra, possiamo vedere che l'utente 1° è più simile all'utente 2°, ed è perché hanno fornito valutazioni quasi simili nel nostro set di dati principale.

Conclusione

In questo articolo, abbiamo esaminato le intuizioni di base alla base della creazione di sistemi di raccomandazione utilizzando tecniche di filtraggio collaborativo e abbiamo imparato questo approccio da zero.

Condividi l'articolo se ti è piaciuto :)