概要
スマートホームのセンサデータから日常行動認識をやってみます.
今回対象とするセンサは,ドアやいろいろな家具,器具に取り付けられた動きセンサで,そこから取得されるオンオフデータから行動のラベルを推定します.
Yala氏の手法を参考にしました.
https://hal.archives-ouvertes.fr/hal-01202168/file/Inista_Yala_Session5B.pdf
コードも拙いですが,公開しました.(何かしら問題があればコメントなどいただけると幸いです.)
jupyterを使ってpython3で書いてます.pandas,sklearnなどのライブラリを使っております.
https://github.com/LittleWat/ActivityRecognitionInSmartHome
データセット
ワシントン州大学で取得されたデータセット( http://ailab.wsu.edu/casas/datasets/ )をありがたく使わせていただきます.
ここの研究室(?),活動が2014年で止まっているようで残念です.
今回はこのうち,17番のArubaデータセットを用います.
Arubaデータセットのセンサ配置
Raw Data
行動認識のパイプライン
DataSegmentation
実際は,上手のように,activityごとに,時間幅やセンサ数幅など異なっており,うまく扱う必要がありそうですが,
今回は,単純にRaw Dataの一定数行(10行)ごとに(センサ数幅で)データを切り分けました.
Feature Extraction
Feature Engineeringをするわけですが,今回はYala氏の手法のうちベースラインの方法と最終状態のON/OFFを特徴量とする手法の2つのみ試してみました.
ベースラインの手法
最終状態を特徴量とする手法
時刻がスカラー値になっておりますが,どうスカラー値にencodigするか不明だったため,1日24時間ということで24次元のone-hot-vectorにencodingしました.
結果
ベースラインの手法(Accuracy: 0.913)
最終状態を特徴量とする手法(Accuracy: 0.920)
どちらも特にパラメータチューニングなどやったわけではないですが,高い精度が出ました.
簡単すぎる問題設定だったようです,
まとめ
Yala氏の手法を実装して,それなりの結果が出ることを確認しました.
jupyter + pandas + seaborn
の組み合わせはやはり便利ですね^^