Die Daten haben viele Funktionen (z. B. 100) und die Anzahl der Instanzen liegt bei 100.000. Die Daten sind spärlich. Ich möchte die Daten mit logistischer Regression oder SVM anpassen. Woher weiß ich, ob Features linear oder nicht linear sind, sodass ich den Kernel-Trick verwenden kann, wenn er nicht linear ist?
Es gibt verschiedene Methoden, um festzustellen, ob die Daten linear trennbar sind. Einige davon werden in diesem Artikel hervorgehoben (1). Mit der Annahme von zwei Klassen in der Datenmenge werden im Folgenden einige Methoden beschrieben, um festzustellen, ob sie linear trennbar sind:
Lineare Programmierung: Definiert eine Zielfunktion, die Einschränkungen unterliegt, die die lineare Trennbarkeit erfüllen. Details zur Implementierung finden Sie hier .
Perceptron-Methode: Ein Perceptron konvergiert garantiert, wenn die Daten linear trennbar sind.
Quadratische Programmierung: Die Zielfunktion für die Optimierung der quadratischen Programmierung kann mit Einschränkungen wie in SVM definiert werden.
Clustering-Methode: Wenn mit einigen Clustering-Methoden wie k-means zwei Cluster mit einer Clusterreinheit von 100% gefunden werden können, sind die Daten linear trennbar.
(1): Elizondo, D., "The linear separability problem: some testing methods", in Neural Networks, IEEE Transactions on, Band 17, Nr. 2, S. 330-344, März 2006, doi: 10.1109 / TNN. 2005.860871
Bitte geben Sie einen Verweis (Links können verrotten) und zumindest eine kleine Erklärung, welche Methoden abgedeckt sind.
Scortchi - Wiedereinsetzung von Monica
2
Vielen Dank. Gute Antwort (+1). Das R-Paket safeBinaryRegressionimplementiert auch den linearen Programmieransatz.
Scortchi - Wiedereinsetzung von Monica
Welche (der LP-Ansatz) ist leicht zu interpretieren, rechentechnisch effizient und allgemein verfügbar (wie LP-Routinen).
user603
3
Ich gehe davon aus, dass Sie über ein 2-Klassen-Klassifizierungsproblem sprechen. In diesem Fall gibt es eine Linie, die Ihre beiden Klassen trennt, und jeder klassische Algorithmus sollte sie finden können, wenn sie konvergiert.
In der Praxis müssen Sie dieselben Daten trainieren und testen. Wenn es eine solche Linie gibt, sollten Sie sich einer Genauigkeit von 100% oder einer AUC von 100% nähern. Wenn es keine solche Linie gibt, führt das Trainieren und Testen mit denselben Daten zumindest zu einigen Fehlern. Aufgrund des Volumens der Fehler kann es sich lohnen, einen nichtlinearen Klassifikator zu verwenden.
+1 Dies ist die geometrische Intuition hinter der im R-Paket implementierten MethodesafeBinaryRegression
user603
-2
Sie versuchen es mit logistischer Regression und sehen, wie es funktioniert. Wenn es nicht klappt, gibt es unendlich viele Kernel, die Sie ausprobieren können, und es könnte immer noch nicht klappen.
safeBinaryRegression
implementiert auch den linearen Programmieransatz.Ich gehe davon aus, dass Sie über ein 2-Klassen-Klassifizierungsproblem sprechen. In diesem Fall gibt es eine Linie, die Ihre beiden Klassen trennt, und jeder klassische Algorithmus sollte sie finden können, wenn sie konvergiert.
In der Praxis müssen Sie dieselben Daten trainieren und testen. Wenn es eine solche Linie gibt, sollten Sie sich einer Genauigkeit von 100% oder einer AUC von 100% nähern. Wenn es keine solche Linie gibt, führt das Trainieren und Testen mit denselben Daten zumindest zu einigen Fehlern. Aufgrund des Volumens der Fehler kann es sich lohnen, einen nichtlinearen Klassifikator zu verwenden.
quelle
quelle
safeBinaryRegression
Sie versuchen es mit logistischer Regression und sehen, wie es funktioniert. Wenn es nicht klappt, gibt es unendlich viele Kernel, die Sie ausprobieren können, und es könnte immer noch nicht klappen.
quelle