機械学習せずに「機械学習賞」を取って10万円もらった話

2016/03/06

Tweet

背景

ENEX 2016 で,「生活デザインアプリコンテスト」なるコンテストが開催された. 主催は神奈川工科大学,企画はソニーコンピュータサイエンス研究所,IIJである.

コンテストには以下の二つのカテゴリーがあり,この文書は2に関してである.

  1. スマートハウス用Webアプリケーション
  2. 電力ログを利用し,直近一日の電力利用予測を行うアルゴリズム

やること

カテゴリー名そのままで「電力ログを利用し,直近一日の電力利用予測を行うアルゴリズム」を開発する. 資料はPDFとして詳しく与えられている.

入力

例えば,以下のようなデータが与えられる.なお,欠損がある場合がある.

1. 30分ごとにスマートメータから取得された累積電力量 (kWh)

[{"measured_at":"2015-08-03T:00:00:00.000+09:00","missing":false,"value":0},
 {"measured_at":"2015-08-03T:00:30:00.000+09:00","missing":false,"value":0.4},
 {"measured_at":"2015-08-03T:01:00:00.000+09:00","missing":false,"value":0.7},
 {"measured_at":"2015-08-03T:01:30:00.000+09:00","missing":false,"value":1.1},
 {"measured_at":"2015-08-03T:02:00:00.000+09:00","missing":true, "value":0},
 {"measured_at":"2015-08-03T:02:30:00.000+09:00","missing":false,"value":1.7},
 {"measured_at":"2015-08-03T:03:00:00.000+09:00","missing":false,"value":1.9},
 ...
 {"measured_at":"2015-09-03T23:30:00.000+09:00","missing":false,"value":300}]

2. 30秒ごとの瞬時値 (W)

[{"measured_at":"2015-08-03T00:00:00.000+09:00","value":115},
 {"measured_at":"2015-08-03T00:00:30.000+09:00","value":112},
 {"measured_at":"2015-08-03T00:01:00.000+09:00","value":223},
 {"measured_at":"2015-08-03T00:01:30.000+09:00","value":132},
 {"measured_at":"2015-08-03T00:02:00.000+09:00","value":123},
 {"measured_at":"2015-08-03T00:02:30.000+09:00","value":323},
 ...
 {"measured_at":"2015-09-03T23:59:30.000+09:00","value":300}]

出力

入力1,30分ごとにスマートメータから取得された累積電力量 (kWh) と同じフォーマットである.

[{"measured_at":"2015-09-04T00:00:00.000+09:00","missing":false,"value":300.4},
 {"measured_at":"2015-09-04T00:30:00.000+09:00","missing":false,"value":300.8},
 ...
 {"measured_at":"2015-09-04T23:30:00.000+09:00","missing":false,"value":310}]

本番データ

本番データは公開されていない. サンプルとして表示しているデータは今井が人為的に作成したものであり, コンテスト中に入力として与えられたデータとは異なる.

アプローチ

結論としては,

のが圧倒的に最適であった.これは一日を48要素のベクトルとしたとき,一週間のベクトルの平均である. 以下の表から,ほとんどのデータで今井のアルゴリズムが最適であることがわかる.

他の参加者との比較 (公式サイトより)
他の参加者との比較 (公式サイトより)

このアルゴリズムに辿りついたのは,偶然である (適当に書いたら他のものより圧倒的に良かった) 上,理由も良くわかっていない.しかし,他の参加者がうまくいかなかった理由を予測する.

特殊な日の存在

一年には,あきらかに特殊な日というものが存在する.例えば,以下がある.

コンテストの開催時期は,1/18-1/25 であり,これらの特殊な日が入力として与えられる. これは入力を全てそのまま使うことが危険であることを意味し,入力として使えるものは実際には一ヶ月よりも少ないことがわかる.

機械学習

結果から見ると,今回のコンテストは機械学習が難しい,あるいは不利である.

実際に,他の参加者の機械学習実装でも今井のアプローチに追いつけるはずであるが,追いつくことができなかった. (一日を48要素ベクトルとすれば自然にそうなると思う)

時系列データ

今井は不勉強であり,time series に関する予測ができなかった. 今後の課題である.

周期性

データが公開されていないので,結果のみ述べる.

これらはデータの精度 (有効数字1ケタ) がそもそもわるいのか,どうかはよくわかっていない.

データの量

入力は一ヶ月のデータであり,明らかに不足している. これは週に着目した場合には4週間しかない.また,前述した特殊な日もある. 実際にどれほどのデータが必要かはわからないものの,現実的には特殊な日も考慮して,数年のデータが必要かと思われる.

他のアプローチ

今井はいくつかアプローチを作成した.例えば

等である.以下にその解析を載せる.ここでも一週間平均が群を抜いて良いことがわかる.

他の方法との比較
他の方法との比較

実装

Scalaによる実装がSonyCSLのgithub に公開されている. いくつかの実装を比較,検討するための機能が含まれている.

関連研究

今井の知る限り,スマートメータからの情報だけでの予測に関する研究はなかった. しかし,いくつかの関連研究はある.

感想

エビデンス (2016-05-03 追記)

もらった賞状
もらった賞状