Azarashi Tech Blog

日常における日常的なことやテクノロジー的なこと

MFT2018向けダーツスキル解析(5) - データの特徴を再確認

MFT2018はついに明日ですね!

ダーツを投げた時の人の各種データを取る仕組みだけできてますが、 肝心のデータを解析して上手い下手判定をしてくれる部分が全然できてないのでやばいです笑

データ取りの仕組みは、それはそれで結構イイ感じにできたと思うので、そっちをメインにフィーチャする感じですかね。 まぁデータ解析は、ベストエフォートでできるところまで頑張ってみます。

今回

  • テキトーにデータをテキトーに作ったDNNに突っ込んで結果を見るのは一旦やめて、きちんとデータを見るところから始めます。
  • 各種スコアにおけるグラフを今一度チェックしてみます。

データ確認

スコアの対応表の再掲

  • ダーツのスコアは、以下のように0.0, 0.1, 0.6, 1.0の4種にわけることにしています。

f:id:surumetic-machine-83:20180801180459p:plain

生データを凝視してみる。

  • 何はともあれ、各種スコアのナマのデータを比較して、上手い下手が判別できるか見てみます。
  • 各スコアごとに、とりあえず意味の強そうな「親指の指圧=finger1」「親指の曲げ=finger0」「人差し指の曲げ=finger2」「中指の曲げ=finger4」を適当に6サンプルずつ拾ってグラフを比較してみます。

各スコアのグラフ

  • インブル(loss score=0.0)のときの例6個 f:id:surumetic-machine-83:20180803171521p:plain

  • ブル(loss score=0.1)のときの例6個 f:id:surumetic-machine-83:20180803171525p:plain

  • 内側シングル+トリプル(loss score=0.6)のときの例6個 f:id:surumetic-machine-83:20180803171528p:plain

  • 外側シングル+ダブル(loss score=0.0)のときの例6個 f:id:surumetic-machine-83:20180803171532p:plain

凝視してみたが・・・

  • なるほど、わからん
  • 例えばうまくインブルに入っているデータ同士でも、結構データにはばらつきがありそう。「インブルに入るべくして入ったケース」と「インブルにたまたま入ったケース」があるのだろうが、それを区別できないといけないようだなぁ。
  • クラスタリングしたら何か分かるかも?

生データをt-SNEで低次元に落として可視化してみる。

  • データの可視化手法でよく使わっるPCAとかt-SNEを使って、生データを低次元で可視化してみる。低次元に落とした時に、きちんとデータがスコアごとにグループ分けされるか確認したい。
  • なお、今のところ「ダーツの矢が刺さった2秒前までの指と体の動きの時系列データ」を記録してきたが、実質投げるのに関係していそうなのは1秒前までなので、1秒前までのデータのみ切り取って来て使うことにする。

PCAの結果

  • クラスごとに、うまくグループ分けできていない・・・。インブルだろうがダブルだろうが、近さが変わらない。 f:id:surumetic-machine-83:20180803172257p:plain

tSNEの結果

  • PCAよりも、うまく次元圧縮できると話題のt-SNEだが・・・
  • やっぱりうまくグループ分けできていない。インブルだろうがダブルだろうが、近さが変わらない。

  • t-SNEで2Dに次元圧縮

f:id:surumetic-machine-83:20180803172320p:plain

  • t-SNEで3Dに次元圧縮 (plotlyで描画)

まとめ

  • 今回は、ダーツを投げた時の指・体の時系列データが、スコアに応じて優位に差があるかどうかをチェックしてみました。
  • 結果、生データを純粋に見比べても、よくわからないし、次元圧縮をしてみてもグループ分けされていませんでした。
  • DNNとかで、うまく特徴抽出してやった結果をうまくt−SNEかけてプロットすれば、いい感じにグループ分けされるのかもしれません。
  • もう一回良いDNNを設計する方向性で頑張ろうかな。あとデータまし・・・。

余談

  • t-SNEもplotlyも始めた使ってみたけど、いいツールだなぁ。
  • あと一ヶ月時間がほしい・・・。