J'ai un ensemble de données d'utilisateurs qui achètent des produits sur un site Web.
Les attributs que j'ai sont l'ID utilisateur, la région (état) de l'utilisateur, l'ID catégories du produit, l'ID mots clés du produit, l'ID mots clés du site Web et le montant des ventes dépensées pour le produit.
L'objectif est d'utiliser les informations d'un produit et d'un site Web pour identifier qui sont les utilisateurs, tels que «jeune joueur masculin» ou «rester à la maison maman».
J'ai joint un exemple d'image comme ci-dessous:
Il y a au total 1940 catégories uniques et 13845 mots-clés uniques pour les produits. Pour le site, il y a 13063 mots-clés uniques. L'ensemble de données est énorme car il s'agit des données de journalisation quotidiennes.
Je pense au clustering, car ceux-ci ne sont pas supervisés, mais ces identifiants sont des numéros ordonnés sans signification numérique. Ensuite, je ne sais pas comment appliquer l'algorithme. Je pense aussi à la classification. Si j'ajoute une colonne de classe en fonction du montant des ventes du produit acheté. Je pense que le clustering est plus préféré. Je ne sais pas quel algorithme je devrais utiliser dans ce cas, car les dimensions de l'ID des mots clés pourraient être supérieures à 10000 (chaque produit peut avoir de nombreux mots clés, tout comme le site Web). J'ai besoin d'utiliser Spark pour ce projet.
Quelqu'un peut-il m'aider avec quelques idées ou suggestions?
Merci beaucoup!
Réponses:
Pour l'instant, je n'ai que le temps pour une réponse très brève, mais je vais essayer de la développer plus tard.
Ce que vous voulez faire, c'est un clustering , car vous voulez découvrir des étiquettes pour vos données. (Par opposition à une classification, où vous auriez des étiquettes pour au moins certaines des données et vous aimeriez étiqueter le reste).
Pour effectuer un clustering sur vos utilisateurs, vous devez les avoir comme une sorte de points dans un espace abstrait. Ensuite, vous mesurerez les distances entre les points, et direz que les points qui sont "proches" sont "similaires", et les étiqueterez en fonction de leur place dans cet espace.
Vous devez transformer vos données en quelque chose qui ressemble à un profil utilisateur, c'est-à-dire: un ID utilisateur, suivi d'un vecteur de nombres qui représentent les fonctionnalités de cet utilisateur. Dans votre cas, chaque fonctionnalité peut être une "catégorie de site Web" ou une "catégorie de produit", et le nombre peut correspondre au montant dépensé pour cette fonctionnalité. Ou bien, une fonctionnalité pourrait être une combinaison de Web et de produit.
À titre d'exemple, imaginons le profil utilisateur avec seulement trois fonctionnalités:
Pour créer ces profils, vous devez mapper les "catégories" et "mots-clés" que vous avez, qui sont trop nombreux, dans les fonctionnalités que vous jugez pertinentes. Examinez la modélisation de sujet ou la similitude sémantique pour le faire. Une fois cette carte construite, elle indiquera que tous les dollars dépensés sur des sites Web avec des mots-clés "gadget", "électronique", "programmation" et X autres, devraient tous être regroupés dans notre première fonctionnalité; etc.
N'ayez pas peur "d'imposer" les fonctionnalités! Vous devrez les affiner et peut-être les modifier complètement une fois que vous aurez regroupé les utilisateurs.
Une fois que vous avez des profils d'utilisateurs, procédez à leur regroupement à l'aide de k-means ou de tout autre élément que vous jugez intéressant. Quelle que soit la technique utilisée, vous souhaiterez obtenir le point "représentatif" pour chaque cluster. Il s'agit généralement du "centre" géométrique des points de cette grappe.
Tracez ces points «représentatifs», et tracez également comment ils se comparent à d'autres grappes. L'utilisation d'un graphique radar est très utile ici. Partout où il y a une caractéristique saillante (quelque chose dans le représentant qui est très marqué et qui est également très important dans sa comparaison avec d'autres clusters) est un bon candidat pour vous aider à étiqueter le cluster avec une phrase accrocheuse ("nerds", "fashionistas" , "mamans agressives" ...).
N'oubliez pas qu'un problème de clustering est un problème ouvert, il n'y a donc pas de «bonne» solution! Et je pense que ma réponse est déjà assez longue; vérifiez également la normalisation des profils et le filtrage des valeurs aberrantes.
la source
Pour l'orientation et l'exploration, je peux recommander WeKa , qui est une très belle boîte à outils pour l'apprentissage automatique. Cela prend un certain format d'entrée (.ARFF), vous devrez donc peut-être également y réfléchir.
En ce qui concerne le dilemme des mots clés, je recommande d'effectuer une sélection de fonctionnalités afin d'éliminer les mots clés redondants ou non indicatifs.
la source