Sie haben Zeitreihendaten, mit denen die Beschleunigung gemessen wird. Sie identifizieren, wann sich die Maschine im Nennzustand (AUS) und im anomalen Zustand (EIN) befindet. Dieses Problem lässt sich am besten mit Anomalieerkennungsalgorithmen lösen. Es gibt jedoch so viele Möglichkeiten, wie Sie dieses Problem angehen können.
Daten vorbereiten
y= 0S.
S.= { s0, s1, . . . , sn}}
Dabei ist der Mittelwert der Baumproben in einem Fenster. ist definiert alssss
sich= 13∑ichk = i - 2xk
Dabei ist Ihre Beispielbeobachtung und .i ≥ 2xi ≥ 2
Sammeln Sie dann weitere Daten, wenn dies bei aktivem Gerät möglich ist, sodassy= 1 .
Jetzt können Sie auswählen, ob Sie Ihren Algorithmus auf einem Ein-Klassen-Datensatz trainieren möchten (reine Anomlay-Erkennung). Ein voreingenommener Datensatz (Anomalieerkennung) oder ein ausgewogener Datensatz. Der Saldo des Datensatzes ist das Verhältnis zwischen den beiden Klassen in Ihrem Datensatz. Ein perfekter Datensatz für einen 2-Klassen-Klassifikator wäre 1: 1. 50% der Daten gehören zu jeder Klasse. Sie scheinen einen voreingenommenen Datensatz zu haben, vorausgesetzt, Sie möchten nicht viel Strom verschwenden.
Beachten Sie, dass Sie nichts daran hindert, die benachbarten Stichproben als Instanz in Ihrem Dataset aufzuteilen. Zum Beispiel:
xich xi - 1 y ixi - 2yich
Dies würde einen dreidimensionalen Eingaberaum für eine bestimmte Ausgabe schaffen, der für die aktuell entnommene Probe definiert ist.
Ein voreingenommener Datensatz
Einfache Lösung
Der einfachste Weg, den ich vorschlagen würde. Angenommen, Sie verwenden eine einzelne Statistik, um zu definieren, was im gesamten 3-Beispielfenster geschieht. Ermitteln Sie aus den gesammelten Daten das Maximum Ihrer Nennpunkte ( ) und das Minimum Ihrer anomalen Punkte ( ). Nehmen Sie dann die halbe Markierung zwischen diesen beiden und verwenden Sie diese als Schwelle.y = 0 s y = 1sy= 0sy= 1
Wenn ein neues Testmuster größer als der Schwellenwert ist, weisen Sie . y=1s^y= 1
Sie können dies erweitern, indem Sie den Mittelwert für alle Ihre nominalen Stichproben berechnen . Berechnen Sie dann den Mittelwert für Ihre anomalen Stichproben . Wenn eine neue Stichprobe näher an den Mittelwert der anomalen Stichproben fällt, klassifizieren Sie sie als .y = 0 y = 1 y = 1sy= 0y= 1y= 1
Aber ich möchte Lust bekommen!
Es gibt eine Reihe anderer Techniken, mit denen Sie genau diese Aufgabe ausführen können.
- k-Nächste Nachbarn
- Neuronale Netze
- Lineare Regression
- SVM
Einfach ausgedrückt, ist fast jeder Algorithmus für maschinelles Lernen für diesen Zweck gut geeignet. Es hängt nur davon ab, wie viele Daten Ihnen zur Verfügung stehen und wie sie verteilt werden.
Ich möchte wirklich SVM verwenden
Wenn dies der Fall ist, halten Sie die drei Proben vollständig getrennt. Ihre Trainingsmatrix enthält 3 Spalten, wie oben beschrieben. Und dann haben Sie Ihre Ausgänge . Die Verwendung von SVM in Python ist sehr einfach: http://scikit-learn.org/stable/modules/svm.html .y
from sklearn import svm
X = [[0, 0, 0], [1, 1, 1], ..., [1, 0, 1]]
y = [0, 1, ..., 1]
clf = svm.SVC()
clf.fit(X, y)
Dies trainiert Ihr Modell. Dann möchten Sie das Ergebnis für eine neue Stichprobe vorhersagen.
clf.predict([[2., 2., 1]])