Frage:
Fragen zur Variablenauswahl für die Klassifizierung und zu verschiedenen Klassifizierungstechniken
ialm
2011-05-10 22:29:15 UTC
view on stackexchange narkive permalink

Ich habe eine Frage zur Merkmalsauswahl und -klassifizierung. Ich werde mit R zusammenarbeiten. Zunächst sollte ich sagen, dass ich mit Data Mining-Techniken nicht sehr vertraut bin, abgesehen von einem kurzen Einblick in einen Grundkurs über multivariate Analyse. Verzeihen Sie mir also, wenn mir Details zu meiner Frage fehlen. Ich werde mein Bestes geben, um mein Problem zu beschreiben.

Zunächst ein wenig zu meinem Projekt: Ich arbeite an einem Bildzytometrieprojekt, und der Datensatz besteht aus über 100 quantitativen Merkmalen histologischer Bilder von Zellkernen . Alle Variablen sind kontinuierliche Variablen, die Merkmale des Kerns wie Größe, DNA-Menge usw. beschreiben. Derzeit gibt es einen manuellen und einen automatischen Prozess zum Erhalten dieser Zellbilder. Der manuelle Vorgang ist (sehr) langsam, wird jedoch von einem Techniker durchgeführt und liefert nur Bilder, die für die weitere Analyse verwendet werden können. Der automatische Prozess ist sehr schnell, führt jedoch zu viele unbrauchbare Bilder ein - nur etwa 5% der Bilder sind für die weitere Analyse geeignet, und es gibt Tausende von Kernbildern pro Probe. Wie sich herausstellt, ist das Bereinigen der aus dem automatischen Prozess erhaltenen Daten tatsächlich zeitaufwändiger als der manuelle Prozess.

Mein Ziel ist es, eine Klassifizierungsmethode unter Verwendung von R zu trainieren, um zwischen guten und schlechten Objekten zu unterscheiden aus den Daten aus dem automatischen Prozess erhalten. Ich habe ein bereits klassifiziertes Trainingsset, das aus dem automatischen Prozess erhalten wurde. Es besteht aus 150.000 Zeilen, von denen ~ 5% gute und ~ 95% schlechte Objekte sind.

Meine erste Frage befasst sich mit der Auswahl von Features. Es gibt über 100 fortlaufende Erklärungsmerkmale, und ich möchte möglicherweise Rauschvariablen entfernen, um (hoffentlich) bei der Klassifizierung zu helfen. Welche Methoden gibt es zur Reduzierung der Dimensionalität mit dem Ziel, die Klassifizierung zu verbessern? Ich verstehe, dass die Notwendigkeit einer variablen Reduzierung abhängig von der verwendeten Klassifizierungstechnik variieren kann.

Was zu meiner zweiten Frage führt. Ich habe über verschiedene Klassifizierungstechniken gelesen, aber ich habe das Gefühl, dass ich die für mein Problem am besten geeignete Methode nicht angemessen bestimmen kann. Meine Hauptbedenken sind eine geringe Fehlklassifizierungsrate von guten Objekten gegenüber schlechten Objekten und die Tatsache, dass die vorherige Wahrscheinlichkeit der guten Objekte viel geringer ist als die vorherige Wahrscheinlichkeit der schlechten Objekte. Ein schlechtes Objekt als gut eingestuft zu haben, ist weniger mühsam als ein gutes Objekt aus dem Pool der schlechten Objekte wiederherzustellen, aber es wäre schön, wenn nicht zu viele schlechte Objekte als gut eingestuft würden.

Ich habe Lesen Sie diesen Beitrag und ich erwäge derzeit Random Forests gemäß der Antwort von chl. Ich möchte auch andere Methoden erforschen und die Vorschläge der guten Leute hier bei CV sammeln. Ich begrüße auch alle Lesungen zum Thema Klassifizierung, die hilfreich sein können, und Vorschläge für die Verwendung von R-Paketen.

Bitte fordern Sie weitere Details an, wenn mein Beitrag keine Details enthält.

Ich habe vergessen zu erwähnen, ich erkunde gerade das Caret-Paket in R.
@veol caret verfügt über eine Funktionsauswahlroutine namens rfe, die Sie möglicherweise nützlich finden. Sie können hier mehr lesen, aber achten Sie darauf, dass Sie es nicht für Algorithmen (wie z. B. glmnet) verwenden, in die eine Funktionsauswahl integriert ist. http://cran.r-project.org/web/packages/caret/vignettes/caretSelection.pdf
Haben Sie ein großes Budget, um dieses Problem zu untersuchen? Ist Ihr Datensatz einer, den Sie öffentlich teilen können?
@Zach Danke für den Link. Was den zweiten Kommentar betrifft, wurde ich tatsächlich eingestellt, um an diesem Projekt zu arbeiten (ich bin ein Genossenschaftsstudent der Universität), daher habe ich genügend Zeit, um an diesem Problem zu arbeiten. Der Datensatz darf nicht freigegeben werden, ich kann jedoch möglicherweise auf einige öffentlich zugängliche Artikel verweisen, die sich auf die Art der Analyse der Daten beziehen, wenn Sie darüber lesen möchten.
@veol Oh, ich verstehe. Dann sollte es eine gute Lernerfahrung für Sie sein. Es klang nach einer interessanten Analyse, ich würde gerne einen der Artikel sehen.
@Zach Leider konnte ich keine kostenlosen Versionen der Artikel finden, die ich lesen durfte. Hier ist ein Artikel über die Abbildung der Zellen und die Berechnung numerischer Merkmale, der der Art der Daten nahe kommt, mit denen ich mich befasse: [Link] (http://www.ncbi.nlm.nih.gov/pubmed/8570289) .
Zwei antworten:
#1
+14
Dikran Marsupial
2011-05-10 23:04:25 UTC
view on stackexchange narkive permalink

Die Auswahl von Merkmalen verbessert nicht unbedingt die Leistung moderner Klassifikatorsysteme und verschlechtert häufig die Leistung. Wenn nicht herausgefunden werden soll, welche Merkmale am wichtigsten sind, ist es oft besser, nicht einmal zu versuchen, die Regularisierung zu verwenden, um eine Überanpassung zu vermeiden (wählen Sie Regularisierungsparameter durch z. B. Kreuzvalidierung aus).

Der Grund für die Schwierigkeit der Merkmalsauswahl besteht darin, dass es sich um ein Optimierungsproblem mit vielen Freiheitsgraden handelt (im Wesentlichen einen pro Merkmal), bei dem das Kriterium von einer endlichen Stichprobe von Daten abhängt. Dies bedeutet, dass Sie das Merkmalauswahlkriterium überanpassen und am Ende eine Reihe von Merkmalen erhalten können, die für diese bestimmte Datenprobe gut funktionieren, jedoch nicht für andere (d. H. Sie verallgemeinern schlecht). Die Regularisierung hingegen optimiert zwar ein Kriterium auf der Grundlage einer endlichen Datenstichprobe, beinhaltet jedoch weniger Freiheitsgrade (normalerweise einen), was bedeutet, dass eine Überanpassung des Kriteriums schwieriger ist.

Es scheint Für mich hat die Idee "Funktionsauswahl bietet bessere Leistung" eher das Verfallsdatum überschritten. Bei einfachen linearen unregelmäßigen Klassifizierern (z. B. logistische Regression) wächst die Komplexität des Modells (VC-Dimension) mit der Anzahl der Merkmale. Sobald Sie die Regularisierung eingeführt haben, hängt die Komplexität des Modells eher vom Wert des Regularisierungsparameters als von der Anzahl der Parameter ab. Dies bedeutet, dass regulierte Klassifizierer auch in sehr hochdimensionalen Räumen nicht überanpassen können (vorausgesetzt, Sie stellen den Regularisierungsparameter richtig ein). Tatsächlich ist dies die Grundlage dafür, warum die Support-Vektor-Maschine funktioniert. Verwenden Sie einen Kernel, um die Daten in einen hohen (möglicherweise unendlichen) Dimensionsraum umzuwandeln, und verwenden Sie dann die Regularisierung, um die Komplexität des Modells zu steuern und somit eine Überanpassung zu vermeiden.

Nachdem dies gesagt wurde, gibt es keine kostenlosen Mittagessen; Möglicherweise liegt Ihr Problem darin, dass die Funktionsauswahl gut funktioniert. Der einzige Weg, dies herauszufinden, besteht darin, es auszuprobieren. Was auch immer Sie tun, stellen Sie sicher, dass Sie eine verschachtelte Kreuzvalidierung verwenden, um eine unvoreingenommene Schätzung der Leistung zu erhalten. Die äußere Kreuzvalidierung wird zur Leistungsbewertung verwendet, wiederholt jedoch in jeder Falte jeden Schritt der Anpassung des Modells (einschließlich der Merkmalsauswahl) erneut unabhängig. Ein häufiger Fehler besteht darin, die Merkmalsauswahl unter Verwendung aller Daten durchzuführen und dann eine Kreuzvalidierung durchzuführen, um die Leistung unter Verwendung der identifizierten Merkmale abzuschätzen. Es sollte offensichtlich sein, warum dies nicht das Richtige ist, aber viele haben es getan, da der richtige Ansatz rechenintensiv ist.

Mein Vorschlag ist, SVMs oder logistische Kernel-Regression oder LS-SVM usw. auszuprobieren. mit verschiedenen Kerneln, aber ohne Funktionsauswahl. Wenn nichts anderes, erhalten Sie eine aussagekräftige Grundlinie.

Vielen Dank für Ihre ausführliche Antwort. Ich bin nicht mit Support-Vektor-Maschinen vertraut, aber ich bin gespannt darauf, es zu versuchen. Nach einem kurzen Lesen auf Wikipedia versuche ich, lineares SVM mit den Standardeinstellungen in R für eine zufällige Teilmenge meiner Daten zu verwenden (es dauerte eine Weile mit dem gesamten Datensatz). Empfehlen Sie mir gute Artikel oder Lesungen, um mich mit SVMs vertraut zu machen?
@veol Eine lineare SVM ist ein guter Ausgangspunkt, aber verwenden Sie nicht nur die Standardeinstellungen. Der Schlüssel zu einer guten Leistung einer SVM liegt in der Auswahl eines guten Kernels und in der sorgfältigen Optimierung der Hyperparameter (des Regularisierungsparameters und aller anderen) Kernel-Parameter). Dies kann durch Minimieren des Kreuzvalidierungsfehlers oder einer Einschränkung der Generalisierungsleistung (z. B. der Grenzen "Radius-Rand" oder "Spanne") erfolgen. Ich verwende kein R, aber jedes anständige SVM-Paket sollte dieses Verfahren über einen Gradientenabstieg automatisieren oder Rastersuche.
@veol In Bezug auf Informationsquellen sowie die beiden Schlüsselpapiere zu SVMs (Boser Guyon und Vapnik sowie Cortes und Vapnik) gibt es viele gute Lehrbücher, die solche Dinge behandeln, wie zum Beispiel "Lernen mit Kerneln" von Scholkopf und Smola , "Kernel-Methoden zur Mustererkennung" von Shawe-Taylor und Christianini oder "Mustererkennung und maschinelles Lernen" von Bishop. Viel Glück bei Ihrem Projekt!
(+1) nette Erklärung der Grundlagen. Wieder ein Moment, in dem ich meinen Favoriten eine Antwort hinzufügen möchte (anstelle der gesamten Frage).
Danke für die tolle Antwort, ich habe viel gelernt. Wie mache ich eine logistische Kernel-Regression in R?
#2
+6
richiemorrisroe
2011-05-10 23:04:58 UTC
view on stackexchange narkive permalink

Bei der Reduzierung der Dimensionalität könnte eine gute erste Wahl die Hauptkomponentenanalyse sein.

Abgesehen davon muss ich nicht zu viel hinzufügen, außer wenn Sie dies getan haben Bei Interesse an Data Mining empfehle ich Ihnen dringend, die Elemente des statistischen Lernens zu lesen. Es ist sowohl streng als auch klar, und obwohl ich es noch nicht fertiggestellt habe, würde es Ihnen wahrscheinlich viel Einblick in die richtige Herangehensweise an Ihr Problem geben. Kapitel 4, lineare Klassifikatoren würden mit ziemlicher Sicherheit ausreichen, um Ihnen den Einstieg zu erleichtern.

Leider war PCA das erste, was ich versuchte, die Dimensionalität der Daten zu reduzieren. Es lieferte keine aussagekräftigen Ergebnisse, und mir wurde gesagt, ich solle vorsichtig sein, Transformationen zu erstellen, die möglicherweise nur auf das Trainingsset und nicht auf die zukünftigen Daten anwendbar sind. Vielen Dank für die Buchempfehlung - obwohl ich mit LDA vertraut bin, gibt es andere Methoden, die sich als nützlich erweisen können. Ich werde sehen, ob es in meinem Gebäude oder in der Universitätsbibliothek eine Kopie gibt.
Unter dem obigen Link steht eine PDF-Kopie zum Download zur Verfügung, wenn dies hilfreich ist.
Ah, hatte das nicht bemerkt. Ich ging direkt zum Inhaltsverzeichnis. Das zu lesen scheint ein guter Anfang zu sein.


Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...