Cos’è e a cosa serve il classificatore NNC nel contesto Big Data

NCC sta per Nearest Neighbor Classifier. È il più semplice dei classificatori ed è particolarmente indicato per predire il comportamento di un utente nei sistemi che raccomandano cosa fare, comprare, leggere, ascoltare, vedere.

Pubblicato il 04 Feb 2020

ebig-data-analytics-commerce-carrello-cloud

NCC (Nearest Neighbor Classifier) è il più semplice dei classificatori. Il “classificatore più vicino” è un metodo eccellente per predire il comportamento di un utente in sistemi di AI, come ad esempio i sistemi che raccomandano cosa fare, comprare, leggere, ascoltare, vedere.

Quando gli viene dato un oggetto da classificare, il classificatore cerca l’oggetto preso dal training set più “vicino” e, trovatolo, classifica il nuovo oggetto con l’etichetta che appartiene a quella del vicino.

Un esempio semplice da realizzare e di facile comprensione è quello che segue.

In uno spazio a due dimensioni, date X e Y come metriche in unità è abbastanza semplice calcolare il più vicino. Se si parla ad esempio di latitudine e longitudine, calcolare la distanza in chilometri è abbastanza semplice. Nel caso specifico inoltre le “label” sono solo due: verde o blu. Oppure immaginiamo che la X sia l’età e la Y il livello di glicemia: la signora Maria (la stella in alto a destra, che ha 50 anni e 107 di glicemia) e il signor Mario (che ha 82 anni e 105 di glicemia) sono a rischio diabete (verde)? Da quanto visto sopra sembra di si.

Ci sono due aspetti che complicano il problema: se il problema non è bidimensionale, ma multidimensionale e la definizione di “vicino”.

Nel primo caso, all’aumentare delle dimensioni, aumenta la complessità. Ma se le dimensioni sono tutte metriche, è facile calcolare la distanza. Diventa più difficile calcolare la distanza se le dimensioni non sono metriche (ad esempio sono un testo). Quindi il concetto di vicino va specializzato su ogni dataset.

L’idea alla base è molto semplice: utenti con un comportamento passato simile, avranno probabilmente un comportamento futuro simile.

Esempi pratici di utilizzo del classificatore NNC

Immaginiamo un sistema che raccomanda che musica ascoltare, che raccoglie i dati delle scelte degli utenti. Ipotizziamo di aver ascoltato musica dance anni ‘80 e ‘90. Un bel giorno, il fornitore di servizi musicali riesce a ottenere di poter aggiungere al catalogo un pezzo molto raro del genere dance anni ‘90. Il sistema deve quindi prevedere se consigliartelo oppure no. Il metodo “vecchio” sarebbe decidere in base ai metadata del brano (genere, artista, casa discografica …). Chiaramente questi metadata sono pochi e non aiutano molto a capire se il nuovo pezzo ti piacerà.

Quello che usano i sistemi di “raccomandazione/consiglio”, invece dei metadata sopra indicati, sono dei metodi di collaborative filtering. L’aspetto collaborativo deriva dal fatto che vengono usati i dati di altri utenti per prevedere il nostro comportamento. Il termine filtro deriva dal fatto che ci viene consigliato solo quanto passa attraverso un filtro di scelta: contenuti che probabilmente ti piacciono passano, contenuti che non ti piacciono non passano). Ecco perché si parla di filter bubble quando le proprie ricerche, dando appunto “risultati che ci piacciono” continuano ad alimentare le nostre credenze e idee.

Tornando alla musica anni ‘90, ipotizziamo che altri amanti della musica dance anni ‘80 e ‘90 abbiano ascoltato il nuovo brano e l’abbiano trovato eccezionale (ascoltandolo ripetutamente). È chiaro che il nuovo bravo passerà il cooperative filter e verrà presentato anche a noi, visto che ha funzionato con utenti che hanno preferenze simili alle nostre. Se invece in una realtà parallela lo stesso brano fosse stato poco gradito dai nostri “simili” musicali, allora non ci verrebbe proposto e sarebbe filtrato dal filtro collaborativo.

Un altro esempio tipico, è dato dai “consigli per gli acquisti” che capitano sui siti di acquisto online. Costruire un “sistema di raccomandazione di acquisti su un sito online” non è particolarmente complesso. Il sistema mano a mano che gli utenti comprano, memorizza le loro scelte, salvando dati (ecco perché si parla di big data, perché ogni nostra scelta è memorizzata e mantenuta per classificare il comportamento e creare cooperative filter).

Ipotizziamo di avere i dati di acquisto di 6 utenti:

UtenteStoria degli acquisti (big data)Ultimo acquisto

Andrea

guanti da boxMoby Dick (libro)

cuffie

occhiali da sole

caffettiera

Luca

t-shirt

caffettiera

frigorifero

peluche

palla da rugby
Marco

occhiali da sole

sneakers

t-shirt

sneakers

palle da tennis
Alice2001: A Space Odyssey (dvd)

cuffie

t-shirt

guanti da box

smartwatch

Veronica

t-shirt

smartwatch

occhiali da sole

Moby Dick (libro)

cuffie

AnnaMoby Dick (libro)caffettiera2001: A Space Odyssey (dvd)cuffiette

caffettiera

L’ultimo acquisto è quello sulla destra. Quindi l’ultimo acquisto di Luca, dopo aver comprato una t-shirt, una caffettiera, un frigorifero e un peluche, è stata una palla da rugby.

Per applicare il metodo del”più vicino” dobbiamo definire cosa è vicino, non avendo metriche numeriche. La più semplice metrica numerica rappresenta il numero di oggetti comprati nei primi 4 acquisti che sono uguali. Ad esempio la “vicinanza” di Veronica e Alice è: 1, perché nei primi 4 acquisti (escluso l’ultimo) hanno comprato solo la t-shirt in comune.

Il nostro obiettivo è immaginare cosa comprerà Tommaso:

UtenteStoria degli acquisti (big data)Ultimo acquisto
Tommasoborraccet-shirtocchiali da solesmartwatch

?

Tommaso è il nostro utente di test (test set) e gli utenti sopra (Anna, Alice, Luca, Andrea, Marco) il nostro dataset di training. Calcoliamo quindi le vicinanze di Tommaso agli altri.

Andrea 1 Luca 1 Marco 2 Alice 1 Veronica 3 Anna 0

Questo vuol dire che, probabilmente, Tommaso come prossimo acquisto comprerà delle cuffie, quindi vale la pena di presentargli qualche cuffia nei consigli per gli acquisti e nelle pubblicità associate al sito.

Immaginate se il training set fosse dinamico (continui acquisti e utenti che appaiono e scompaiono, ovvero big data in continua evoluzione) come migliorerebbe la probabilità di intercettare comportamenti equivalenti a quelli di Tommaso e scrivergli “utenti che hanno comprato X hanno anche comprato Y!”

Valuta la qualità di questo articolo

La tua opinione è importante per noi!

Articoli correlati

Articolo 1 di 2