Wählen Sie den richtigen Klassifikationsalgorithmus. Lineare oder nicht-linear? [geschlossen]

StackOverflow https://stackoverflow.com/questions/2414030

  •  19-09-2019
  •  | 
  •  

Frage

Ich finde diese Frage ein wenig schwierig. Vielleicht kennt jemand einen Ansatz, um diese Frage zu beantworten. Stellen Sie sich vor, dass Sie einen Datensatz (Trainingsdaten), die Sie nicht wissen, worum es geht. Welche Funktionen von Trainingsdaten würden Sie schauen, um Klassifikationsalgorithmus zu schließen, diese Daten zu klassifizieren? Können wir etwas sagen, ob wir eine nichtlineare oder lineare Klassifikationsalgorithmus verwendet werden soll?

By the way, ich bin mit WEKA die Daten zu analysieren.

Irgendwelche Vorschläge? Danke.

War es hilfreich?

Lösung

Wow, so dass Sie einige Trainingsdaten haben und Sie nicht wissen, ob Sie an Funktionen suchen Wörter in einem Dokument darstellt, oder genese in einer Zelle und benötigen einen Klassifikator zu stimmen. Nun, da Sie keine semantischen Informationen haben, Sie gehen zu müssen, um dieses soley tun, indem sie auf statistischen Eigenschaften der Datensätze an.

Als erster das Problem zu formulieren, ist dies mehr als nur vs nicht-linear linear. Wenn Sie wirklich suchen, um diese Daten zu klassifizieren, was Sie wirklich brauchen, zu tun, ist eine Kernfunktion für den Klassifikator auszuwählen, die linear sein können, oder nicht-linear (Gaussian, Polynom, hyperbolische, etc. Darüber hinaus jede Kernfunktion übernehmen kann ein oder mehrere Parameter, die eingestellt werden müßten. eine optimale Kernfunktion und Parametersatz für ein gegebenes Klassifikationsproblem ist Problem nicht wirklich ein gelöste Bestimmung gibt es nur sinnvoll, Heuristik und wenn Sie google oder ‚wählt Kernel‚eine Kernfunktion der Auswahl‘ Funktion‘, werden Sie schlägt viele Forschungsarbeiten behandelt und verschiedene Ansätze getestet werden. Zwar gibt es viele Ansätze, eine der grundlegendsten und weit gereist ist ein Gradientenabfallsaktualisierung auf dem parameters-- zu tun versuchen Sie im Grunde eine Kernel-Methode und ein Parametersatz, Zug auf die Hälfte Ihrer Datenpunkte und sehen Sie, wie Sie. Dann versuchen Sie einen anderen Satz von Parametern und sehen Sie, wie Sie das tun. Sie bewegen sich die Parameter in Richtung der besten Verbesserung der Genauigkeit, bis Sie Satisfac erhalten Tory Ergebnisse.

Wenn Sie nicht brauchen, durch all diese Komplexität zu gehen, um eine gute Kernfunktion zu finden, und wollen einfach eine Antwort auf lineare oder nicht-linear. dann kommt die Frage in erster Linie auf zwei Dinge: Nicht-lineare Klassifizierer ein höheres Risiko für Überanpassung (undergeneralizing) haben werden, da sie mehr Dimensionen der Freiheit haben. Sie können leiden unter dem Klassifikator nur Sätze von guten Datenpunkten auswendig zu lernen, anstatt mit einer guten Verallgemeinerung kommen. Auf der anderen Seite hat eine lineare Klassifizierer weniger Freiheit zu passen, und im Fall von Daten, die nicht linear trennbaren ist, wird fehlschlagen, eine gute Entscheidung Funktion und leidet unter hohen Fehlerraten zu finden.

Leider weiß ich nicht eine bessere mathematische Lösung, um die Frage zu beantworten „Diese Daten sind linear trennbare“ anderen als nur den Klassifikator selbst versuchen und sehen, wie er ausführt. Dafür wirst du eine intelligentere Antwort als meine müssen.

Edit: Diese Forschungsarbeit beschreibt einen Algorithmus, wie es aussieht, sollte in der Lage zu bestimmen, wie nahe ein bestimmter Datensatz kommt linear trennbare zu sein

.

http://www2.ift.ulaval.ca/~mmarchand/ Publikationen / wcnn93aa.pdf

Andere Tipps

Dies ist in der Tat zwei Fragen in einem; -)

  • Die Featureauswahl
  • Linear oder nicht

hinzufügen „-Algorithmus Auswahl“, und Sie wahrscheinlich drei grundlegende Fragen des Klassifikator Designs haben.

Als Nebenwirkung beachten Sie, es ist ein gute Sache , die Sie haben keine Domain-Know-how, die Ihnen die Auswahl von Merkmalen zu führen erlaubt hätte und / oder die Linearität des Merkmalsraum zu behaupten. Das ist der Spaß an dem Data-Mining: solche Informationen zu schließen, ohne a priori Know-how. (BTW, und während Domain Know-how ist gut doppelt überprüft das Ergebnis des Klassifikator, zu viel von vornherein Einsicht können Sie vermissen macht gute Bergbaumöglichkeiten). Ohne ein solches Vorwissen werden Sie Klang Methoden zu etablieren gezwungen und sorgfältige Prüfung der Ergebnisse gelten.

Es ist schwer zu liefern spezifische Führung, zum Teil, weil viele Details sind in der Frage ausgelassen, und auch, weil ich etwas BS-Ing meinen Weg durch diese ;-). Nichts desto trotz hoffe ich die folgenden allgemeinen Ratschläge hilfreich sein

  • Für jeden Algorithmus Sie versuchen (oder genauer gesagt für jeden Satz von Parametern für einen bestimmten Algorithmus), müssen Sie auf laufen viele Tests . Theorie kann sehr hilfreich sein, aber es wird eine Menge von „trial and error“ bleiben. Sie werden Cross-Validation eine wertvolle Technik finden.
    Auf den Punkt gebracht, [und in Abhängigkeit von der Größe des zur Verfügung stehenden Trainingsdaten], teilen Sie zufällig die Trainingsdaten in mehreren Teilen und trainieren den Klassifikator auf der einen [oder mehrere] dieser Teile, und dann den Klassifikator auf seine Leistung auf eine andere bewerten [oder mehr] Teile. Für jeden solchen Lauf messen Sie verschiedene Leistungsindikatoren wie Mis-Klassifizierung Error (MCE) und abgesehen von Ihnen, wie der Klassifikator führt, diese Metriken, oder besser gesagt ihre Variabilität Hinweise auf die Relevanz der ausgewählten Funktionen und / oder ihr Mangel an Umfang oder Linearität.

  • Unabhängig von der Linearitätsannahme, ist es sinnvoll, normalisieren die Werte von numerisch Funktionen. Dies hilft bei den Features, die einen ungeradeen Bereich haben usw.
    Innerhalb jeder Dimension, die Festlegung der Bereich innerhalb etwa 2,5 Standardabweichungen auf beiden Seiten des mittleren und wandeln die Merkmalswerte auf einen bestimmten Prozentsatz auf der Basis dieses Bereichs.

  • Konvertieren nominale Attribute in binäre Einsen , wodurch so viele Dimensionen gibt es sind verschiedene Werte des Nenn Attribut. (Ich denke, viele Algorithmus Optimizern wird dies für Sie tun)

  • Wenn Sie ein oder ein paar Klassifizierer mit einer relativ ordentliche Leistung (etwa 33% MCE) identifiziert haben, führen die gleiche Testreihe mit einem solchen Klassifikator durch nur einen Parameter zu einem Zeitpunkt, zu modifizieren. Zum Beispiel entfernen Sie einige Funktionen, und sehen, ob der resultierende niedrigere Dimensionalität Klassifizierer oder degradiert verbessert.

  • Die Verlustfaktor ist ein sehr sensibler Parameter . Versuchen Sie und halten mit einem „reasonnable“, aber möglicherweise suboptimal Wert für den Großteil der Tests, Feinabstimmung der Verlust am Ende.

  • Lernen Sie die "dump" info von den SVM-Optimierer zur Verfügung gestellt zu nutzen. Diese Ergebnisse liefern sehr nützliche und wertvolle Informationen darüber, was das Optimierungsprogramm „denkt“

  • Denken Sie daran, dass das, was funktionierte sehr gut wih einen gegebenen Datensatz in einer bestimmten Domäne durchführen kann sehr schlecht mit Daten aus einer anderen Domain ...

  • Kaffee ist gut, nicht zu viel. Wenn alle versagt, es Irish machen; -)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top