Welcher statistische Klassifizierungsalgorithmus kann wahr / falsch für eine Folge von Eingaben vorhersagen?

14

Bei einer gegebenen Folge von Eingaben muss festgestellt werden, ob diese Folge eine bestimmte gewünschte Eigenschaft hat. Die Eigenschaft kann nur wahr oder falsch sein, dh es gibt nur zwei mögliche Klassen, zu denen eine Sequenz gehören kann.

Die genaue Beziehung zwischen der Sequenz und der Eigenschaft ist unklar, aber ich glaube, dass sie sehr konsistent ist und sich für eine statistische Klassifizierung eignet. Ich habe eine große Anzahl von Fällen, in denen der Klassifikator trainiert werden muss, obwohl es in dem Sinne, dass mit einer geringen Wahrscheinlichkeit eine Sequenz in diesem Trainingssatz der falschen Klasse zugeordnet wird, leicht verrauscht sein kann.

Beispiel Trainingsdaten:

Sequence 1: (7 5 21 3 3) -> true
Sequence 2: (21 7 5 1) -> true
Sequence 3: (12 21 7 5 11 1) -> false
Sequence 4: (21 5 7 1) -> false
...

Grob ausgedrückt wird die Eigenschaft durch die Menge der Werte in der Sequenz bestimmt (z. B. bedeutet das Vorhandensein einer "11", dass die Eigenschaft mit ziemlicher Sicherheit falsch ist) sowie durch die Reihenfolge der Werte (z. B. "21 7 5) "erhöht die Wahrscheinlichkeit, dass die Eigenschaft wahr ist, erheblich).

Nach dem Training sollte ich in der Lage sein, dem Klassifikator eine zuvor nicht sichtbare Sequenz zuzuweisen (1 21 7 5 3) , und er sollte sein Vertrauen ausgeben, dass die Eigenschaft wahr ist. Gibt es einen bekannten Algorithmus zum Trainieren eines Klassifikators mit dieser Art von Ein- / Ausgängen?

Ich habe den naiven Bayes-Klassifikator in Betracht gezogen (der nicht wirklich an die Tatsache anpassbar ist, dass die Reihenfolge wichtig ist, zumindest nicht, ohne die Annahme, dass die Eingaben unabhängig sind, ernsthaft zu brechen). Ich habe auch den Ansatz des Hidden-Markov-Modells untersucht, der nicht anwendbar zu sein scheint, da nur eine Ausgabe statt einer Ausgabe pro Eingabe verfügbar ist. Was habe ich verpasst?

Roman Starkov
quelle
Können Sie den Abstand zwischen zwei Sequenzen messen? Ist die minimale und / oder maximale Sequenzlänge bekannt?
Craig Wright
@CraigWright Es gibt kein zutreffendes Entfernungsmaß, das mir einfällt. Eine maximale Länge in der Größenordnung von 12 und ein Minimum um 4 kann angenommen werden. Außerdem gibt es ungefähr 30 verschiedene Werte (es handelt sich nicht um unbegrenzte natürliche Werte, sondern nur um eine relativ kleine Menge von Möglichkeiten)
Roman Starkov,
Welche Mehrfachantwortvariablen erwähnen Sie? Ich habe Ihr Problem gelesen, da dies eine Binärausgabe ist und Sie möglicherweise einfach Dummy-Variablen Var1.1, Var1.12, ..., Var12.12
B_Miner
@B_Miner Ich verstehe vielleicht falsch, wie HMM funktioniert, aber es scheint, als ob es wie folgt funktioniert: Ich füttere es mit meiner Eingabesequenz (abcde) und es gibt eine verborgene Sequenz aus, die am besten zu dieser passt, nämlich (a 'b' c 'd' e ' ). Ich glaube nicht, dass die Dummy-Variablen dies lösen würden. Ich brauche eine True / False-Klassifikation für die gesamte Sequenz.
Roman Starkov
@romkyns, so funktioniert ein HMM nicht. Ein HMM ist ein probabilistischer Prozess. Wenn eine Sequenz und ein HMM M gegeben sind , können Sie die Wahrscheinlichkeit berechnen, mit der M s ausgibt (unter Verwendung dynamischer Programmierung; der Vorwärtsalgorithmus). Außerdem können Sie anhand einer Reihe von Trainingssequenzen das HMM M finden , bei dem die maximale Wahrscheinlichkeit besteht, dass diese Trainingssequenzen (unter Verwendung des Baum-Welch-Algorithmus) erstellt werden. HMMs könnten hier also durchaus probiert werden. Es wird jedoch einige Details geben, die ausgefüllt werden müssen. sMMsM
DW

Antworten:

9

Sie könnten probabilistische Ansätze ausprobieren, die dem naiven Bayes-Klassifikator ähneln, jedoch mit schwächeren Annahmen. Anstatt beispielsweise die Annahme einer starken Unabhängigkeit zu treffen, gehen Sie von einer Markov-Annahme aus:

p(xc)=p(x0c)tp(xtxt1,c)

ist Ihre Klassenbezeichnung, x ist Ihre Sequenz. Sie müssen zwei bedingte Verteilungen schätzen, eine für c = 1 und eine für c = 0cxc=1c=0 .

Nach der Bayes-Regel:

p(c=1x)=p(xc=1)p(c=1)p(xc=1)p(c=1)+p(xc=0)p(c=0).

Welche Verteilungen für p zu wählen sind ( x tx t - 1 , c )p(xtxt1,c) hängt von den anderen Annahmen ab, die Sie zu den Sequenzen treffen können, und davon, wie viele Daten Sie zur Verfügung haben.

Zum Beispiel könnten Sie verwenden:

p(xtxt1,c)=π(xt,xt1,c)iπ(xi,xt1,c)

Mit Distributionen wie diese, wenn es in Ihren vorkommenden Sequenzen 21 verschiedene Zahlen sind, würden Sie schätzen , haben Parameter π ( x t , x t , c ) zuzüglich 21 2 = 4221212=882π(xt,xt,c)212=42p(x0c)2p(c)

Wenn die Annahmen Ihres Modells nicht erfüllt werden, können Sie die Parameter direkt in Bezug auf die Klassifizierungsleistung optimieren, indem Sie beispielsweise den durchschnittlichen Protokollverlust minimieren

1#D(x,c)Dlogp(cx)

mit Gefälle.

Lucas
quelle
p(xt|xt1,c)
steffen
p(xtxt1,c)E[xtxt1,c]=xt1c
Lucas
6

Ich würde vorschlagen, dass Sie einige Features definieren und dann einen Algorithmus für maschinelles Lernen auswählen, der auf diese Features angewendet werden soll.

Features: Grundsätzlich sollte jedes Feature aus einer bestimmten Sequenz berechnet werden können und Ihrer Meinung nach relevant sein, ob die Sequenz die Eigenschaft hat oder nicht. Basierend auf Ihrer Beschreibung können Sie Funktionen wie die folgenden in Betracht ziehen:

  • "Sack voller Zahlen".ii(7 5 21 3 3)

  • (7 5 21 3 3)7 55 2121 33 3302302

  • "Tüte Trigramme." Sie können auch Trigramme in Betracht ziehen, bei denen es sich um eine Folge von drei aufeinanderfolgenden Zahlen aus der ursprünglichen Folge handelt. Sie können dasselbe tun wie oben.

d=30+302+303d

iichist mindestens einmal erschienen oder nicht. Dies kann zu besseren Ergebnissen führen oder auch nicht. Im Allgemeinen können Sie mit den von Ihnen verwendeten Funktionen experimentieren, um herauszufinden, welche die besten Ergebnisse liefern (zum Beispiel, wenn Sie die "Tüte mit Trigrammen" fallen lassen oder wenn Sie andere Ideen haben, die Sie ausprobieren möchten). .

Algorithmus für maschinelles Lernen: Ich bin nicht qualifiziert, Ihnen Ratschläge zur Auswahl eines Algorithmus für maschinelles Lernen zu geben. es gibt viele möglichkeiten. Im Allgemeinen wenden Sie den Lernalgorithmus jedoch auf Ihr Trainingsset (die Eingabe- / Ausgabe-Feature-Paare / Booleschen Werte) an und versuchen, anhand dessen vorherzusagen, welche Werte im Testset die Eigenschaft haben. Ihre Auswahl des Algorithmus für maschinelles Lernen hängt möglicherweise von mehreren Faktoren ab, einschließlich der Frage, mit welcher Größe der Trainingssatz verglichen wirdd(die Anzahl der Funktionen). Am besten probieren Sie mehrere Algorithmen für maschinelles Lernen aus, um herauszufinden, welche am besten funktionieren. Möglicherweise möchten Sie Support Vector Machines (SVMs) als einen der von Ihnen getesteten Algorithmen einbeziehen.

DW
quelle
Der erste Versuch, den ich tatsächlich unternahm, war eine "Tüte Trigramme" mit einer naiven Bayes'schen Klassifikation. Die Ergebnisse sind ermutigend, aber nicht großartig. Ich dachte, das könnte damit zusammenhängen, dass Trigramme überhaupt nicht unabhängig sind: Wenn ich "1 2 3" habe, dann habe ich sehr wahrscheinlich auch ein "2 3 *" - Trigramm. Vielleicht sollte ich noch etwas mehr mit den genauen Features experimentieren.
Roman Starkov
Es ist eine gute Idee, mehr zu experimentieren, sowohl mit unterschiedlichen Funktionssätzen als auch mit unterschiedlichen Lernalgorithmen. Basierend auf Ihrer Problembeschreibung möchten Sie möglicherweise Features für das Erscheinungsbild jeder einzelnen Zahl hinzufügen (eine Tüte Wörter, nicht nur eine Tüte Trigramme): Wenn Sie nur Trigramme verwenden, erschweren Sie dem Algorithmus für maschinelles Lernen das Lernen Fakten wie "Sequenzen, die 11 enthalten, haben mit ziemlicher Sicherheit nicht die Eigenschaft".
DW
2

Was Sie effektiv tun, ist das Testen von Hypothesen anhand von Zeitreihen. HMMs würden für Sie funktionieren, obwohl Sie sie an Ihren speziellen Fall anpassen müssten.

Ehrlich gesagt, wenn Sie keine mathematische Beschreibung dessen aufschreiben können, was Sie zu erkennen versuchen, werden Sie nicht sehr weit kommen. Vielleicht können Sie uns sagen, welche Art von Feature Sie erwarten?

user873
quelle
1
Maschinelles Lernen hat uns gezeigt, dass wir sehr weit kommen können, ohne eine Vorstellung davon zu haben, wonach wir suchen müssen.
Bayerj
1

Bei einer maximalen Länge von 12 in der Sequenz kann ein neuronales Netzwerk mit 12 Eingängen und einem Ausgang funktionieren, aber Sie müssten das Ende jeder Sequenz mit Nullen oder einem inerten Wert auffüllen.

Craig Wright
quelle
1

Have you tried using Bayesian networks? That's the first thing I think of when I need to fuse multiple pieces of data (coming in one at a time) to arrive at the probabilities of a random variable.

Bayesian networks don't rely on the independence assumption that naive Bayes does.

BTW, hidden Markov models are a special case of Bayesian networks.

DojoGojira
quelle