6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

機械学習でビルの電力需要予測【RandomForest】

Last updated at Posted at 2017-10-27

前回、SARIMAモデルを用いて電力量の予測を行ったが、うまくいかなかった(とはいえRMSE20kWh未満)。そもそも突発的に変動する(時刻に関係なく)受電電力量を時系列モデルで評価することがそもそも間違いだったのか?
そこで今回は、機械学習(RandomForest)を用いて電力量の予測ができないかを検証した。

#概要

  • とあるビルから受電電力量データを受領
  • 機械学習を用いて2日先までの48時間分のデータを予測
  • RMSE(平均二乗誤差)を用いて予測精度を評価

#条件

  • 受領データ
    • 10min毎に計測
    • 計測データは受電電力量のみ
    • 土日祝日を除外
  • 目的変数
    • 受電電力量
  • 説明変数
    • 遅れデータ(48次,49次,50次遅れ)
    • 曜日データ
    • 時刻データ
説明変数
LagDF = pd.DataFrame(index=ForecastDF.index)
#1次遅れデータ
LagDF['Lag'] = ForecastDF.shift(48)
LagDF['Lag2'] = ForecastDF.shift(49)
LagDF['Lag3'] = ForecastDF.shift(50)

#曜日データ生成
DateDF = pd.DataFrame()
DateDF['Weekday'] = ForecastDF.index.weekday
DateDF['Time'] = ForecastDF.index
DateDF.index = ForecastDF.index

trainx = pd.concat([LagDF,DateDF['Weekday']],axis=1)

追記:2017/11/06
アホなことしてました。
説明変数に曜日データと時刻データもたせたつもりになってましたけど、基本的にダミーデータとして別データにしなきゃ意味ないんですね。。。後日ダミーデータ作成した後に検証します。

受領データを3期間それぞれから1日選択し、適度な学習期間で検証を行った。

期間名 学習期間 予測期間
夏期 1Week 2day
冬期 1Week 2day

#結果
検証結果としては、下記のようになっている。比較的良好な結果となったが、突発的に発生する外乱に対応ができていない。

期間 RMSE[kWh]
夏期 15.7
冬期 28.3

夏期

RandomForest00.jpg

冬期

RandomForest01.jpg

#まとめ

  • 現状では、使い物にならないが説明変数の選定で精度向上は期待できる。
  • 10%程度のずれでは、シビアな管理はできない。これが限界であれば移動平均だけでよい気もする。
6
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?