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.