Klassifizierung mit geordneten Klassen?


10

Angenommen, ich möchte einen Klassifikator trainieren, der ein Bild einer Person als jung , mittleren Alters oder alt zuweist .

Eine einfache Möglichkeit wäre, die Klassen als unabhängige Kategorien zu behandeln und einen Klassifikator zu trainieren. Aber anscheinend gibt es eine Beziehung zwischen den Klassen. Wie kann ich das nutzen, um besser zu werden?

Ich denke, vielleicht kann ich
1) den Verlust ändern, sagen wir den Verlust der Vorhersage von Jung so alt oder Alt wie jung erhöhen .
2) Verwandeln Sie es in ein Regressionsproblem. Jung , Mittelalter und Alt werden als 0, 1 und 2 dargestellt.


2
Suche nach ordinaler Regression: en.wikipedia.org/wiki/Ordinal_regression
Tim

Antworten:


8

1) Ändern Sie den Verlust, sagen Sie, erhöhen Sie den Verlust der Vorhersage von Jung so alt oder Alt wie jung.

Klingt nach einem vernünftigen Ansatz.

2) Verwandeln Sie es in ein Regressionsproblem. Jung, Mittelalter und Alt werden als 0, 1 und 2 dargestellt.

Dies hängt von dem Regressionslerner ab, den Sie beschäftigen, aber dies kann eine schlechte Idee sein (Bäume und Derivate wären wahrscheinlich dagegen sicher). Sind Sie sicher, dass der "Abstand" (was auch immer er bedeuten mag) zwischen Jung und Mittel gleich ist wie zwischen Mittel und Alt?


Da Sie nominelle Variablen lernen, empfehle ich Ihnen, dieses Problem als Klassifizierung zu behandeln. Genauer gesagt, wie Sie wissen, gibt es eine latente Beziehung zwischen Klassen, ordinale Klassifikation.

Sie können die von Frank & Hall [1] vorgeschlagene Strategie ausprobieren, bei der Sie Ihre Antwortvariable auf Binärprobleme codieren . Sie versuchen also, die Unterscheidung zwischen alt und nicht alt und jung und nicht jung zu lernen, und diese geben Ihnen tatsächlich Informationen über die drei Kategorien. Dies ist eine wirklich einfache Heuristik, die den naiven Ansatz mehrerer Klassen übertreffen kann und die unterstrichene Arbeitsweise der Lernenden nicht verändert.NN1


[1] Frank, E. & Hall, M. (2001, September). Ein einfacher Ansatz zur ordinalen Klassifizierung. In der Europäischen Konferenz über maschinelles Lernen (S. 145-156). Springer Berlin Heidelberg.


Untersuchen Sie die ordinale Regression.
kjetil b halvorsen

4

Ich habe mir das kürzlich mit einem Faltungsklassifikator für neuronale Netze angesehen, der mit sechs Ordnungsklassen arbeitet. Ich habe drei verschiedene Methoden ausprobiert:

Methode 1: Unabhängige Standardklassifizierung

Dies ist, was Sie als Basis in der Frage mit der Zuordnung erwähnt haben:

class 0 -> [1, 0, 0, 0, 0, 0]
class 1 -> [0, 1, 0, 0, 0, 0]
class 2 -> [0, 0, 1, 0, 0, 0]
class 3 -> [0, 0, 0, 1, 0, 0]
class 4 -> [0, 0, 0, 0, 1, 0]
class 5 -> [0, 0, 0, 0, 0, 1]

Wir würden normalerweise die Softmax-Aktivierung und damit den kategorialen Crossentropieverlust verwenden.

Dies berücksichtigt jedoch nicht, wie Sie sagen, die Beziehung zwischen den Klassen, so dass die Verlustfunktion nur davon abhängt, ob Sie die richtige Klasse treffen oder nicht, und nicht davon, ob Sie nahe kommen.

Methode 2: Ordinale Zielfunktion

Dies ist ein Ansatz, der von Cheng et al. (2008) , auf die hier und hier auch bei StackExchange Bezug genommen wurde . Das Mapping ist jetzt:

class 0 -> [0, 0, 0, 0, 0]
class 1 -> [1, 0, 0, 0, 0]
class 2 -> [1, 1, 0, 0, 0]
class 3 -> [1, 1, 1, 0, 0]
class 4 -> [1, 1, 1, 1, 0]
class 5 -> [1, 1, 1, 1, 1]

Dies wird mit einer Sigmoidaktivierung und einem binären Crossentropieverlust verwendet. Diese Zielfunktion bedeutet, dass der Verlust umso geringer ist, je näher Sie der richtigen Klasse kommen.

Sie können eine Klasse aus der Ausgabe dieses Klassifikators vorhersagen, indem Sie den ersten Index bei dem . gibt Ihnen dann die vorhergesagte Klasse.{yk}kyk<0.5k

Methode 3: Klassifizierung in Regression verwandeln

Dies ist die gleiche Idee wie Ihre zweite. Das Mapping hier wäre:

class 0 -> [0]
class 1 -> [1]
class 2 -> [2]
class 3 -> [3]
class 4 -> [4]
class 5 -> [5]

Ich habe dabei eine lineare Aktivierung und einen mittleren quadratischen Fehlerverlust verwendet. Wie beim vorherigen Ansatz erhalten Sie auch einen geringeren Verlust, je weniger Sie verpassen.

Wenn Sie eine Klasse basierend auf deren Ausgabe vorhersagen, können Sie die Ausgabe einfach auf die nächste Ganzzahl runden.

Einige Beispielergebnisse

Ich habe die verschiedenen Methoden mit demselben Datensatz bewertet. Die Metriken waren präzise Genauigkeit (Treffen der richtigen Klasse) und benachbarte Genauigkeit (Treffen der richtigen Klasse oder eines ihrer Nachbarn) in klassenunausgeglichenen und klassenausgeglichenen Versionen. Jeder unten gezeigte Metrikwert wird als Durchschnitt von drei Läufen ermittelt.

Für Methode 1 / Methode 2 / Methode 3 ergaben die Metriken:

  • Unausgeglichene genaue Genauigkeit: 0,582 / 0,606 / 0,564
  • Ausgewogene genaue Genauigkeit: 0,460 / 0,499 / 0,524
  • Unausgeglichene Nachbargenauigkeit: 0,827 / 0,835 / 0,855
  • Ausgewogene Nachbargenauigkeit: 0,827 / 0,832 / 0,859

Daher ist für meinen speziellen Datensatz und mein Netzwerk-Setup der Regressionsansatz im Allgemeinen am besten und der Standardansatz mit unabhängigen Klassen im Allgemeinen am schlechtesten. Ich weiß nicht, wie gut sich diese Ergebnisse auf andere Fälle übertragen lassen, aber es sollte nicht so schwierig sein, einen Ordnungsklassifikator anzupassen, um alle drei Methoden anwenden zu können, damit Sie selbst testen können.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.