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?
quelle
Antworten:
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:
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 = 0c x c=1 c=0 .
Nach der Bayes-Regel:
Welche Verteilungen für p zu wählen sind ( x t ∣ x t - 1 , c )p(xt∣xt−1,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:
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 = 4221⋅21⋅2=882 π(xt,xt,c) 21⋅2=42 p(x0∣c) 2 p(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
mit Gefälle.
quelle
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".i i
(7 5 21 3 3)
(7 5 21 3 3)
7 5
5 21
21 3
3 3
"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.
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.
quelle
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?
quelle
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.
quelle
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.
quelle