tl;dr
- Ich habe eine App zur Schätzung des Muskeltrainings erstellt
--Qore verwendet einen Algorithmus namens Reservoir Computing
- Eine Aufgabe zum Klassifizieren von Zeitreihendaten aus Beschleunigungsdaten ausgeführt, die mit einem Smartphone erfasst werden können.
- Code
- Die Genauigkeit ist ziemlich gut
- Testdaten, Genauigkeit 99,6%
――Du solltest ein Muskelingenieur sein
Strategie
- Sammeln Sie Beschleunigungssensordaten mit einem Smartphone (iPhone)
- Sie können Zeitreihendaten mit 3 Komponenten der x-, y- und z-Achse abrufen
- Lernen mit 4 Arten von Muskeltraining: Armstand, Bauchmuskel, Kniebeugen, Bauchmuskelrolle
――Sie können sehen, welche Art von Muskeltraining Sie nur mit Ihrem Smartphone durchgeführt haben
Datensammlung
- Muskeltraining mit Ihrem Smartphone in der Hosentasche
――Stellen Sie diesmal bei jedem Muskeltraining das Smartphone in die gleiche Richtung in die Tasche
――Es scheint schwieriger zu sein, abzuschätzen, ob Sie es in eine andere Richtung drehen.
――Ich habe die folgende App verwendet, um die Beschleunigung zu messen.
- ["Logger für Beschleunigung / Gyroskop / Magnetsensor"](https://apps.apple.com/jp/app/%E5%8A%A0%E9%80%9F%E5%BA%A6-%E3% 82% B8% E3% 83% A3% E3% 82% A4% E3% 83% AD% E3% 82% B9% E3% 82% B3% E3% 83% BC% E3% 83% 97-% E7% A3 % 81% E5% 8A% 9B% E3% 82% BB% E3% 83% B3% E3% 82% B5% E3% 83% BC% E3% 83% AD% E3% 82% AC% E3% 83% BC / id448070865)
- Das Messintervall beträgt 0,1 Sekunden
- Anzahl der durchgeführten Muskeltrainings
- Armstand: 21 Mal (~ 35 Sek.)
- Bauchmuskel: 20 Mal (~ 66 Sek.)
- Quat: 20 Mal (~ 51 Sek.)
- Bauchmuskelrolle (Sitzrolle): 12 Mal (~ 50 Sek.)
――Um die Datenmenge zu erhöhen, müssen Sie mehr Muskeltraining durchführen
――Sie sollten irgendwann Macho werden können
――Das Folgende sind die Rohdaten der tatsächlich gemessenen Beschleunigung.
--Bauchmuskel
--Hocken
- Bauchmuskelrolle (Sitzrolle)
――Es ist periodisch und ich habe schönere Daten als ich erwartet hatte.
Datenvorverarbeitung
- Ich habe versucht, qore_sdk.utils von QoreSDK zu verwenden.
- sliding_window
- Teilen Sie die Zeitreihen in mehrere kleine Zeitreihen auf
- Vorverarbeitung erforderlich, um Daten an die API zu übergeben (3D erstellen)
- under_sample
- Richten Sie die Anzahl der Proben pro Klasse aus
- Die Anzahl der tatsächlich gemessenen Daten war verzerrt
―― Normalerweise wird beim maschinellen Lernen die Genauigkeit von Daten mit einer großen Anzahl von Daten gezogen, daher haben wir sie an die Anzahl der Daten in der Klasse mit der kleinsten Anzahl angepasst.
- Die Größe der Eingabedaten beim Lernen ist begrenzt
- N*T*V < 150,000 && N*T < 10,000
―― Zuerst habe ich die Bedeutung jedes Alphabets nicht verstanden (ich dachte, es wäre ein kanonisches Ensemble, weil es ursprünglich ein biophysikalisches System war !?), Aber es scheint wie folgt zu sein.
--N: Anzahl kleiner Zeitreihendaten
--T: Kleine Zeitreihenlänge (Zeit?)
--V: Anzahl der Merkmale (in diesem Fall x, y, z Beschleunigung 3)
Lernen und Denken
- Zum Lernen und Denken [Beispielcode](https://github.com/qcore-info/advent-calendar-2019/blob/master/Qore%E3%82%B5%E3%83%B3%E3%83 % 97% E3% 83% AB1_with_UCI.ipynb) Genau das gleiche
- Richten Sie unten Ihre Kontoinformationen ein
client = WebQoreClient(username=username,
password=password,
endpoint=endpoint)
res = client.classifier_train(X=X_train, Y=y_train)
print(res)
# {'res': 'ok', 'train_time': 7.2200915813446045}
――Das Lernen wurde in ca. 7,2 Sekunden abgeschlossen
--Ziemlich früh
res = client.classifier_test(X=X_test, Y=y_test)
print(res)
{'accuracy': 0.9964285714285714, 'f1': 0.9964301018846474, 'res': 'ok'}
- Die Genauigkeit beträgt 0,9964
- hoch!
Lineare Regression, Vergleich mit einfachem Deep Learning
- Dies ist auch der Beispielcode
--Lineare Regression
- Lernzeit: 0.28547000885009766 \ [sec ]
- Genauigkeit: 0,9964285714285714
- MLP (Using Sklearn)
- Lernzeit: 0,7626857757568359 \ [sec ]
- Genauigkeit: 0,9928571428571429
- Beide sind etwas niedriger als das Qore SDK, aber immer noch genauer
- Ist das Problem zu einfach?
Impressionen habe ich ausprobiert
- SDK war einfach und leicht zu bedienen
――Die Genauigkeit war hoch, aber auch lineare Regression und MLP ergaben eine ausreichende Genauigkeit.
- Das Problem war möglicherweise zu einfach
- Ich möchte eine schwierigere Schätzaufgabe versuchen
- Ich möchte überprüfen, was passiert, wenn ich qore_sdk.featurizer verwende, das ich dieses Mal (diesmal) nicht ausprobieren konnte. Wenn da ist)
Unten, was ich untersucht und organisiert habe
Qores Algorithmus
Der folgende Artikel (1. Tag des Adventskalenders) enthält eine kurze Erklärung.
[Die Welt des Reservoir-Computing ~ With Qore ~ --Qiita](https://qiita.com/ryoppippi/items/f607c8828238094eade0#qore%E3%81%AB%E3%81%A4%E3%81%84%E3% 81% A6)
Es ist eine Anwendung des Reservoir Computing und wurde leicht modifiziert.
Erzielen Sie auch bei kleinen Reservoirgrößen ein hochgenaues Modell, indem Sie es wiederholt unabhängig voneinander verbessern und einen einzigartigen Mechanismus nicht nur für das Innere des Reservoirs, sondern auch für die Vor- und Nachbehandlung entwickeln.
Es scheint, dass.
Scheint es auf dem folgenden Papier zu basieren?
Van der Sande, Guy & Brunner, Daniel & Soriano, Miguel. (2017). Advances in photonic reservoir computing. Nanophotonics. 6. 561-576. 10.1515/nanoph-2016-0132.
Ich möchte es lesen, wenn ich Zeit habe.
Spezifischer Prozedurcode
Das Jupyter-Notizbuch wurde im folgenden Repository veröffentlicht.
Anweisungen finden Sie in den Skripten README und Notebook.
GitHub - hnishi/muscle_QoreSDK_AdvCal2019
Was Sie mit dem Qore SDK tun können
--Klassifizierung Klassifizierungsaufgabe
- classifier_train
--regression Regressionsaufgabe
- regression_train
- Merkmalsextraktion durch Zeitreihenfrequenzzerlegung (ich möchte mit und ohne Verwendung vergleichen)
- Featurizer
- Teilen Sie die Zeitreihen in mehrere kleine Zeitreihen auf (einfach zu verwenden)
- sliding_window
- Funktion zur Anpassung an die Anzahl der Etiketten (einfach zu bedienen)
- under_sample
――Ich wollte die volle Funktionalität des Qure SDK nutzen.
――Ich möchte, dass Sie Änderungspunkte und Anomalien erkennen können.
Offizieller Dokumentlink
advent repo
GitHub --qcore-info / advent-calendar-2019: Maschinelles Lernen und andere angewandte Technologien als Deep Learning von QuantumCore Advent Calendar 2019
QoreSDK doc
QoreSDK 0.1.0 documentation
Postskriptum 2019/12/22
Featurizer macht es noch genauer
Die Merkmalsextraktion wird durch Frequenzzerlegung durchgeführt, so dass die Anzahl der Klassen 40 beträgt.
n_filters = 40
featurizer = Featurizer(n_filters)
X = featurizer.featurize(X, axis=2)
Die QoreSDK-Genauigkeit für Testdaten ist unten angegeben
acc= 1.0
f1= 1.0
elapsed_time:52.20956110954285[sec]
Das Ergebnis ist eine Genauigkeit von 1.
Im Gegenteil, logistische Regression und MLP sind weniger genau als zuvor mit Featurizer.
===LogisticRegression(Using Sklearn)===
elapsed_time:0.2480778694152832[sec]
acc= 0.6291666666666667
f1= 0.630372638509498
===MLP(Using Sklearn)===
elapsed_time:8.673331499099731[sec]
acc= 0.95
f1= 0.9502859082452324
Fügte den Zustand ohne Muskeltraining hinzu
Der Status "Nicht-Muskeltraining" wurde zur Klassifizierungsaufgabenklasse hinzugefügt.
(Daten wurden als Kontrolle während der Vorbereitung des Mittagessens gesammelt.)
Wieder war die Genauigkeit 1.
Klicken Sie hier, um das für die Arbeit verwendete Notizbuch anzuzeigen.
https://github.com/hnishi/muscle_QoreSDK_AdvCal2019/blob/master/muscle_QoreSDK_v2.ipynb
Validieren Sie mit neu erfassten Daten
Erstellen Sie einen anderen Datensatz als den, der zum Zeitpunkt des Lernens mit der Bauchmuskelrolle verwendet wurde.
Mit diesen Daten wurde geschlossen.
Klicken Sie hier, um das für die Arbeit verwendete Notizbuch anzuzeigen.
https://github.com/hnishi/muscle_QoreSDK_AdvCal2019/blob/master/muscle_QoreSDK_v2.ipynb
Infolgedessen ist die Genauigkeit für diese Verifizierungsdaten wie folgt
- QoreSDK
- acc= 0.6855791962174941
- f1= 0.8134642356241235
- LogisticRegression(Using Sklearn)
- acc= 0.20094562647754138
- f1= 0.3346456692913386
- MLP(Using Sklearn)
- acc= 0.27423167848699764
- f1= 0.43042671614100186
Mit dem QoreSDK lag die korrekte Antwortrate bei etwa 70%.
Um die Genauigkeit zu verbessern, scheint es notwendig zu sein, verschiedene Muster von Lerndaten für jeden Gegenstand des Muskeltrainings zu erweitern und zu lernen.