Utilizzo degli attributi per classificare / raggruppare i profili utente


14

Ho un set di dati di utenti che acquistano prodotti da un sito Web.

Gli attributi che ho sono ID utente, regione (stato) dell'utente, ID categorie di prodotto, ID parole chiave del prodotto, ID parole chiave del sito Web e importo delle vendite speso del prodotto.

L'obiettivo è quello di utilizzare le informazioni di un prodotto e sito Web per identificare chi sono gli utenti, come "maschio giovane giocatore" o "rimanere a casa mamma".

Ho allegato un'immagine di esempio come di seguito:

inserisci qui la descrizione dell'immagine

Esistono tutti insieme 1940 categorie uniche e 13845 parole chiave uniche per i prodotti. Per il sito Web, ci sono 13063 parole chiave uniche. L'intero set di dati è enorme in quanto si tratta dei dati di registrazione giornalieri.

Sto pensando al raggruppamento, poiché quelli non sono controllati, ma quegli ID sono numeri ordinati senza significato numerico. Quindi non so come applicare l'algoritmo. Sto anche pensando alla classificazione. Se aggiungo una colonna di classe in base all'importo delle vendite del prodotto acquistato. Penso che il clustering sia più preferito. Non so quale algoritmo dovrei usare per questo caso poiché le dimensioni dell'id parole chiave potrebbero essere più di 10000 (ogni prodotto può avere molte parole chiave, così come il sito Web). Devo usare Spark per questo progetto.

Qualcuno può darmi una mano con alcune idee o suggerimenti?

Grazie mille!


1
Potete fornire maggiori informazioni? che cos'è "id categorie del prodotto A" e "id parole chiave della ricerca del prodotto A" della stessa lunghezza per tutte le voci? "le dimensioni dell'ID parole chiave di ricerca potrebbero essere più di 10000" perché? quali sono? Quanti campioni hai? è possibile rispondere a tutte le domande se pubblichi qui un campione dei tuoi dati. Allora potrei probabilmente suggerirti qualcosa.
Kasra Manshaei,

Il prodotto A e il prodotto B sono due prodotti acquistati dall'utente? La formulazione sembra suggerire che i prodotti A e B sono diversi per ciascun utente, poiché le parole chiave possono variare. È così? E ultimo commento, vuoi classificare o raggruppare? Sono tecniche abbastanza diverse :)
logc,

Grazie @kasramsh per le tue risposte. Ho aggiornato la descrizione e anche allegato un campione di dati. Spero di ricevere alcuni suggerimenti da te!
sylvia,

@logc sì, il prodotto (ho detto il prodotto A prima) e il sito Web (ho detto il prodotto B prima) sono diversi da ogni utente. Ogni prodotto ha alcune parole chiave e ogni sito Web ha anche alcune parole chiave. Il raggruppamento o la classificazione vanno bene, purché sia ​​possibile creare un profilo utente, ad esempio "giocatore giovane maschio"; "resta a casa mamma". Penso che il raggruppamento sia più preferibile. Grazie!!
sylvia,

@sylvia - Ho un problema simile da risolvere. L'avevo pubblicato come domanda separata. Potresti dare qualche suggerimento su come l'hai risolto? datascience.stackexchange.com/questions/12930/… L'altro mio dubbio è per K significa, hai raggruppato i record per cliente? Significato significa che ogni riga rappresentava una transazione o rappresentava acquisti aggregati di quel cliente fino alla data.
Neil,

Risposte:


11

In questo momento, ho solo tempo per una risposta molto breve, ma cercherò di ampliarlo in seguito.

Quello che vuoi fare è un cluster , poiché vuoi scoprire alcune etichette per i tuoi dati. (A differenza di una classificazione, in cui avresti le etichette per almeno alcuni dei dati e vorresti etichettare il resto).

Per eseguire un clustering sui tuoi utenti, devi averli come una sorta di punti in uno spazio astratto. Quindi misurerai le distanze tra i punti e dirai che i punti "vicini" sono "simili" e li etichetterai in base al loro posto in quello spazio.

Devi trasformare i tuoi dati in qualcosa che assomigli a un profilo utente, ovvero: un ID utente, seguito da un vettore di numeri che rappresentano le caratteristiche di questo utente. Nel tuo caso, ogni funzione potrebbe essere una "categoria di sito Web" o una "categoria di prodotto" e il numero potrebbe essere la quantità di dollari spesi in tale funzione. Oppure una funzionalità potrebbe essere una combinazione di web e prodotto, ovviamente.

Ad esempio, immaginiamo il profilo utente con solo tre funzioni:

  • dollari spesi in reti "tecnologiche",
  • dollari spesi per prodotti "di moda",
  • e dollari spesi per videogiochi "aggressivi" su reti "orientate alla famiglia" (chissà).

Per costruire quei profili, devi mappare le "categorie" e le "parole chiave" che hai, che sono troppo abbondanti, nelle caratteristiche che ritieni rilevanti. Analizza la modellazione di argomenti o la somiglianza semantica per farlo. Una volta costruita quella mappa, indicherà che tutti i dollari spesi in reti con parole chiave "gadget", "elettronica", "programmazione" e X altri, dovrebbero essere tutti aggregati nella nostra prima funzione; e così via.

Non aver paura di "imporre" le funzionalità! Dovrai perfezionarli e magari cambiarli completamente dopo aver raggruppato gli utenti.

Una volta che hai i profili utente, procedi a raggrupparli usando k-mean o qualsiasi altra cosa ritieni interessante. Qualunque sia la tecnica che usi, sarai interessato a ottenere il punto "rappresentativo" per ogni cluster. Questo è di solito il "centro" geometrico dei punti in quel cluster.

Traccia quei punti "rappresentativi", e trama anche come si confrontano con altri cluster. L'uso di una carta radar è molto utile qui. Ovunque vi sia una caratteristica saliente (qualcosa nel rappresentante che è molto marcato, ed è anche molto prominente nel suo confronto con altri cluster) è un buon candidato per aiutarti a etichettare il cluster con una frase accattivante ("nerd", "fashioniste" , "mamme aggressive" ...).

Ricorda che un problema di clustering è un problema aperto, quindi non esiste una soluzione "giusta"! E penso che la mia risposta sia già abbastanza lunga; controlla anche la normalizzazione dei profili e il filtro dei valori anomali.


Grazie così tanto! È molto utile. Inizierò dalla mappatura. Lo apprezzo molto!
sylvia,

Felice di aiutare. :)
logc

Ciao @logc, ho applicato LDA per selezionare le funzionalità. Ho considerato ogni user_id come un "documento" e le parole chiave sono le "parole" nel "documento", quindi applicando LDA ho ottenuto alcuni argomenti di parole chiave. Tuttavia, non so perché la maggior parte dei miei argomenti siano costituiti dalle stesse parole chiave. Significa che LDA non è il metodo giusto per il mio caso o ci sono degli errori? Grazie mille!
Sylvia,

@sylvia: vorrei suggerire di trasformare quella domanda in una nuova domanda su questo sito. Altrimenti, potremmo finire per scrivere un sacco di commenti, e questo non è il formato migliore per le domande e risposte. :)
logc,

Grazie per il suggerimento Ecco il link che ho pubblicato se hai tempo di dare un'occhiata a datascience.stackexchange.com/questions/5941/… Grazie!
sylvia,

-2

Per l'orientamento e l'esplorazione, posso raccomandare WeKa , che è un bellissimo toolkit per l'apprendimento automatico. Richiede un determinato formato di input (.ARFF), quindi potrebbe essere necessario esaminare anche quello.

Per quanto riguarda il dilemma delle parole chiave, raccomando di eseguire alcune selezioni di funzionalità al fine di eliminare parole chiave ridondanti o non indicative.


Grazie @Lennart Kloppenburg per la tua risposta. Come eseguire la selezione delle funzioni se l'attributo (keword_id) è un numero ordinato? Ho aggiornato un esempio di dati sopra. Potresti dare un'occhiata e darmi qualche suggerimento? Grazie!
sylvia,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.