Pour la tâche de modélisation de l'attrition, je considérais:
- Calculer k clusters pour les données
- Construisez k modèles pour chaque cluster individuellement.
La raison en est, qu'il n'y a rien à prouver, que la population des abonnés est homogène, il est donc raisonnable de supposer que le processus de génération de données peut être différent pour différents "groupes"
Ma question est, est-ce une méthode appropriée? Cela viole-t-il quelque chose ou est-il considéré comme mauvais pour une raison quelconque? Si oui, pourquoi?
Sinon, pourriez-vous partager quelques bonnes pratiques sur cette question? Et 2e chose - est-il généralement préférable ou pire de faire du préclustering que l'arbre du modèle (comme défini dans Witten, Frank - arbre de classification / régression avec des modèles aux feuilles). idk s'il présente des avantages par rapport au clustering "normal".).
Deux points trop longs pour être un commentaire:
les clusters purs (c'est-à-dire contenant des cas d'une seule classe) ne sont pas un problème en soi: les classificateurs dits à une seule classe modélisent chaque classe indépendamment de toutes les autres. Ils peuvent parfaitement gérer cela.
Cependant, si les clusters de données d'une manière que les classes sont assez séparées, c'est-à-dire que les clusters sont plutôt purs, cela signifie qu'il existe une structure très solide, une structure que l'analyse de cluster est capable de trouver sans guide par les étiquettes de classe. Cela signifie que certains types de classificateurs tels que les méthodes du plus proche voisin basées sur la même mesure de distance utilisée par l'analyse de cluster sont appropriés pour les données.
L'autre possibilité, les situations où les grappes ne sont pas pures, mais une combinaison de grappes et de méthodes de classification peuvent bien faire, est appropriée pour les arbres. L'arbre fera la partie du clustering (et les nœuds purs ne sont pas considérés comme un problème.) Voici un exemple artificiel, une version à 2 clusters du problème XOR:
une autre façon d'inclure les informations de cluster sans courir le risque d'avoir des clusters purs serait d'utiliser le clustering comme une étape de génération de fonctionnalités: ajouter le résultat de l'analyse de cluster en tant que nouvelles variantes à la matrice de données.
Vous vous demandez si elle est mauvaise pour une raison quelconque: un écueil est que cette approche conduit à des modèles avec de nombreux degrés de liberté. Vous devrez faire particulièrement attention à ne pas trop vous habiller.
Jetez un oeil aux arbres basés sur des modèles, par exemple la réponse de mbq ici, je pense qu'ils implémentent un concept qui est très proche de ce que vous recherchez. Ils peuvent également être implémentés en forêt: par exemple, le package R mobForest .
la source
Je fais face à un problème similaire ces jours-ci. J'ai des centaines de fonctionnalités pour construire un classificateur. Après avoir essayé différents modèles (ex: forêts aléatoires, gradient boost, etc ...), j'ai quand même obtenu une faible précision / rappel. J'essaie donc de faire un clustering puis de construire des classificateurs dans différents groupes. Ma préoccupation est, tout comme Anony-Mousse le dit, comment puis-je obtenir plus d'informations du classificateur si j'utilise toutes les informations dans le clustering? Alors, voici ce que je vais faire ensuite:
Je pense que cela peut également aider à réduire la complexité, je souhaite que cela aide.
la source
Alternativement, dans un cadre discriminant, on pourrait essayer d'incorporer des affectations de grappe (matérielles ou logicielles) comme une caractéristique pour la formation de l'algorithme de classification de choix (par exemple NB, ANN, SVM, RF, etc.)
la source
Eh bien, si vos grappes sont vraiment bonnes, vos classificateurs seront de la merde. Parce qu'ils n'ont pas suffisamment de diversion dans leurs données d'entraînement.
Dites que vos grappes sont parfaites, c'est-à-dire pures. Vous ne pouvez même plus y former correctement un classificateur. Les classificateurs ont besoin d'exemples positifs et négatifs!
Random Forest réussit très bien à faire exactement le contraire. Ils prennent un échantillon aléatoire des données, forment un classificateur à ce sujet, puis utilisent tous les classificateurs formés.
Ce qui pourrait fonctionner est d'utiliser le clustering, puis de former un classificateur sur chaque paire de clusters, du moins s'ils sont assez en désaccord (si une classe est divisée en deux clusters, vous ne pouvez toujours pas former un classificateur là-bas!)
la source