Für die Aufgabe der Abwanderungsmodellierung habe ich Folgendes in Betracht gezogen:
- Berechnen Sie k Cluster für die Daten
- Erstellen Sie k Modelle für jeden Cluster einzeln.
Der Grund dafür ist, dass es nichts zu beweisen gibt, dass die Population der Abonnenten homogen ist, so dass es vernünftig ist anzunehmen, dass der Datengenerierungsprozess für verschiedene "Gruppen" unterschiedlich sein kann.
Meine Frage ist, ist es eine geeignete Methode? Verstößt es gegen irgendetwas oder wird es aus irgendeinem Grund als schlecht angesehen? Wenn ja warum?
Wenn nicht, würden Sie einige Best Practices zu diesem Thema mitteilen? Und zweitens - ist es im Allgemeinen besser oder schlechter, Preclustering als Modellbaum durchzuführen (wie in Witten, Frank definiert - Klassifizierungs- / Regressionsbaum mit Modellen an den Blättern. Intuitiv scheint es, dass das Entscheidungsbaumstadium nur eine andere Form des Clustering ist, aber idk, wenn es Vorteile gegenüber "normalem" Clustering hat.).
Zwei Punkte, die zu lang sind, um einen Kommentar abzugeben:
Reine Cluster (dh nur Fälle einer Klasse) sind an sich kein Problem: Sogenannte Ein-Klassen-Klassifikatoren modellieren jede Klasse unabhängig von allen anderen. Sie können perfekt damit umgehen.
Wenn die Datencluster jedoch so voneinander getrennt sind, dass die Klassen ziemlich getrennt sind, dh die Cluster eher rein sind, bedeutet dies, dass eine sehr starke Struktur vorhanden ist, eine Struktur, die die Clusteranalyse ohne Anleitung durch die Klassenbezeichnungen finden kann. Dies bedeutet, dass bestimmte Arten von Klassifizierern, wie z. B. Methoden für den nächsten Nachbarn, die auf demselben Abstandsmaß basieren, das von der Clusteranalyse verwendet wird, für die Daten geeignet sind.
Die andere Möglichkeit, Situationen, in denen die Cluster nicht rein sind, aber eine Kombination aus Cluster- und Klassifizierungsmethoden gut funktionieren kann, ist für Bäume geeignet. Der Baum übernimmt den Teil des Clusters (und reine Knoten werden nicht als Problem angesehen.) Hier ist ein künstliches Beispiel, eine 2-Cluster-Version des XOR-Problems:
Eine andere Möglichkeit, die Clusterinformationen einzubeziehen, ohne das Risiko von reinen Clustern einzugehen, besteht darin, das Clustering als Schritt zur Feature-Generierung zu verwenden: Fügen Sie das Ergebnis der Clusteranalyse als neue Variablen zur Datenmatrix hinzu.
Sie fragen, ob es aus irgendeinem Grund schlecht ist: Eine Gefahr besteht darin, dass dieser Ansatz zu Modellen mit vielen Freiheitsgraden führt. Sie müssen besonders vorsichtig sein, um nicht zu stark zu passen.
Werfen Sie einen Blick auf modellbasierte Bäume, z. B. die Antwort von mbq hier. Ich denke, sie implementieren ein Konzept, das dem sehr nahe kommt, wonach Sie suchen. Sie können auch als Gesamtstruktur implementiert werden: zB R-Paket mobForest .
quelle
Ich habe es heutzutage mit ähnlichen Problemen zu tun. Ich habe Hunderte von Funktionen, um Klassifikatoren zu erstellen. Nachdem ich verschiedene Modelle ausprobiert hatte (z. B. zufällige Wälder, Gradientenverstärkung usw.), bekam ich immer noch eine geringe Genauigkeit / Rückruf. Ich versuche also, Clustering durchzuführen und dann Klassifizierer in verschiedenen Gruppen zu erstellen. Mein Anliegen ist, wie Anony-Mousse sagt, wie kann ich mehr Informationen vom Klassifikator erhalten, wenn ich alle Informationen beim Clustering verwende? Also, was ich als nächstes tun werde:
Ich denke, es kann auch helfen, die Komplexität zu reduzieren, ich wünschte, es hilft.
quelle
Es ist absolut machbar, Cluster und dann entsprechende Modelle zu erstellen. Der in den Kommentaren erwähnte pathologische Fall, in dem die Cluster die Ergebnisvariablen perfekt trennen, würde für Klassifizierer Schwierigkeiten bereiten, ist ein theoretisches Problem, das ich jedoch für unwahrscheinlich halte (insbesondere in einem hochdimensionalen Fall). Wenn Sie solche Cluster erstellen könnten, könnten Sie diese Cluster auch nur zur Vorhersage verwenden!k k
Wenn der Prozess mit Stichproben beginnt , können die Klassifizierer außerdem nur Stichproben verwenden. Ein leistungsfähigerer Ansatz wäre daher die Verwendung der Cluster beim Aufbau eines einzelnen Klassifikators, der die Heterogenität in den Clustern unter Verwendung einer Mischung von Regressionen berücksichtigt. Beim modellbasierten Clustering wird angenommen, dass die Daten aus einer Mischungsverteilung wobei mit der Wahrscheinlichkeit und mit der Wahrscheinlichkeit und und . Eine Mischungsregression ist eine Erweiterung, mit der die Daten als abhängig von Co-Variablen modelliert werden können.N N/k Yi∼N(μi,σ2i) i=1 π i=2 1−π μ1≠ μ2 σ21≠σ22 μi is replaced with βiXi , where the βi have to be estimated. While this example is for a univariate, Gaussian case, the framework can accommodate many data (multinomial-logit would be appropriate for categorical variables). The flexmix package for R provides a more detailed description and of course a relatively easy and extensible way to implement this approach.
Alternatively, in a discriminative setting, one could try incorporating cluster assignments (hard or soft) as a feature for training the classification algorithm of choice (e.g. NB, ANN, SVM, RF, etc.)
quelle
Well, if your clusters are really good, your classifiers will be crap. Because they have not enough diversion in their training data.
Say your clusters are perfect i.e. pure. You can't even properly train a classifier there anymore. Classifiers need positive and negative examples!
Random Forest are very successful in doing the exact opposite. They take a random sample of the data, train a classifier on that, and then use all of the trained classifiers.
What might work is to use clustering, and then train a classifier on every pair of clusters, at least if they disagree enough (if a class is split into two clusters, you still cannot train a classifier there!)
quelle