Was ist der Unterschied zwischen ANN, SVM und KNN-Klassifikatoren?
Ich weiß, das ist eine sehr Allgemeine Frage, ohne Einzelheiten zu meinem eigentlichen Projekt, aber meine Frage ist:
Mache ich remote sensing image classification. Ich bin mit dem Objekt-orientierte Methode: zuerst habe ich segmentiert das Bild in verschiedene Regionen, dann extrahiere ich die Merkmale von Regionen, wie etwa Farbe, Form und textur. Die Anzahl aller Merkmale in einer region 30 und Häufig gibt es 2000 Regionen im all, und ich werde wählen 5 Klassen mit 15 samples für jede Klasse.
In der Zusammenfassung:
- Sample-Daten 1530
- Testdaten 197530
Wie wähle ich den passenden Klassifikator? Wenn es gibt 3 Klassifizierungen (ANN, SVM und KNN), welche soll ich wählen für eine bessere Einstufung?
Was toolset / Sprache verwenden Sie ? SGDClassifier in scikits.erfahren, schnell, siehe libsvm-training-very-slow-on-100k-rows-suggestionsaber es klingt, als sei Sie wollen die Einfachheit, nicht die Geschwindigkeit. In jedem Fall klein anfangen.
jeff7 ,dein Vorschlag ist gut ,aber ich möchte einige Theorie Antworten !
Denis, in meinem Projekt verwende ich C++
Wenn Sie möchten, sprechen Theorie, Sie würden besser tun, auf CompSci.
InformationsquelleAutor user909691 | 2011-09-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn Ihr "sample data" ist das Zug-set, es scheint sehr klein. Ich würde zunächst vorschlagen, mit mehr als 15 Beispiele pro Klasse.
Wie gesagt in den Kommentaren, es ist am besten match-Algorithmus für das problem, kann man ja einfach testen, um zu sehen, welcher Algorithmus besser funktioniert. Aber mit zu beginnen, würde ich vorschlagen, SVM: es funktioniert besser als KNN mit kleinen Zug-sets, und in der Regel einfacher zu trainieren, dann ANN, da weniger Entscheidungen zu treffen.
Nach Ihrer Frage, hat jede Instanz 2000-Gebieten * 30 Besonderheiten/region = 60000 features. 15 Fällen zu lernen sind trotzig eine kleine Nummer... Sie haben 2000 tagged Instanzen (d.h., für die Sie wissen, die richtige Klasse)? wenn dem so ist, warum nicht verwenden die meisten von Ihnen (etwa 60-70%) für die Weiterbildung?
denn was ich Tue, ist remote-image-Klassifikation ,nach der ssegmentation Bild im ersten , wenn ich wählen, mehr als 15, es wird ein großer Beispiele youy wissen !
InformationsquelleAutor etov
KNN ist die basic machine-learning-Algorithmus paramtise und zu implementieren, aber wie angedeutet von @etov, würde wahrscheinlich übertroffen werden durch die SVM aufgrund der geringen Trainingsdaten Größen. ANNs beobachtet worden zu sein beschränkt durch Unzureichende Trainingsdaten auch. Allerdings KNN macht der geringsten Anzahl von Annahmen in Bezug auf Ihre Daten, außer, dass genaue Trainingsdaten bilden sollten relativ diskreten Clustern. ANN und SVM sind notorisch schwierig zu paramtise, vor allem, wenn Sie möchten, wiederholen Sie den Vorgang mit mehreren datasets und basieren auf bestimmten Annahmen, wie z.B., dass die Daten Linear trennbar werden (SVM).
Ich würde auch empfehlen, die Random Forests-Algorithmus dies ist einfach zu implementieren und ist relativ unempfindlich gegen Trainingsdaten Größe, aber ich würde raten gegen die Anwendung von sehr kleinen Trainingsdaten Größen.
Die scikit-learn-Modul enthält diese algorithmen und ist in der Lage zu bewältigen mit großen Trainingsdaten Größen, so können Sie erhöhen die Anzahl der Trainingsdaten Proben. der beste Weg, sicher zu wissen, wäre zu untersuchen Sie sich selbst, wie vorgeschlagen von @etov
InformationsquelleAutor Nathan Thomas
Haben Sie einen Blick auf die unten mind map
KNN: KNN gut funktioniert, wenn die sample-Größe < 100K Datensätze, für nicht-textuelle Daten. Wenn die Genauigkeit nicht hoch ist, sofort zu bewegen, um SVC ( Support Vector Classifier von SVM)
SVM:, Wenn die sample size > 100K Datensätze, gehen Sie für die SVM mit SGDClassifier.
ANN: ANN hat sich überstunden, und Sie sind mächtig. Sie können sowohl ANN und SVM in Kombination zu klassifizieren Bilder
Mehr details sind verfügbar @semanticscholar.org
InformationsquelleAutor Ravindra babu