最終課題
「講座で学んだ技術を利用する独自プロジェクトに取り組み、その結果をレポートせよ」
ということで、私は卸電力価格(スポット価格)の変化点検知と予測に取り組みました。
背景と目的
電力スポット市場(一日前市場)とは
卸電力取引所が開催する最もポピュラーな電力取引市場の一つであり、翌日に発電または販売する電気を前日までに入札し、売買を成立(マッチング)させるものです。https://pps-net.org/glossary/5072
スポット市場の約定価格(以下、スポット価格)は発電事業者にとっては電気の卸販売価格、小売電気事業者等にとっては調達価格として重要なものとなっています。
スポット価格の一般的な特徴
・日変動(昼間、夜間などの時間帯による変動)
・季節変動
・平日・休日による差
・需要・供給力による変動
・気温による変動

スポット価格1週間の変動例
上記の一般的な特徴のほかに、中長期でトレンドが変化しています。最近では太陽光発電が増加したことなどの影響で特に西日本で昼間のスポット価格の低下が大きくなってきました。

ススポット価格 時間別平均値の変化
今回のスポット価格の変化点検知の目的は、変化を早めに察知することで戦略見直しの必要性を明確にするということです。また、政策立案者にとっては介入効果の検証やある事象による影響を知ることもできるかと思います。
目標:スポット価格のトレンドの変化(変化点)を検出する。
変化点検知の手法
変化点を検出するにあたり、LSTMで特定の時点までの時系列データのモデルを作成し、その後の時点での実測値と予測とのずれをトレンドの変化とすることとしました。
異常検知として外れ値を検出するという手法が取り上げられていますが、瞬間的にスポット価格が高騰することはよくあります。このため、外れ値だけではなく変化は比較的小さくても一定期間続く傾向を検出したいことから、予測誤差の集合による異常度の判定としました。

データ
日本卸取引所(JEPX)のスポット市場取引結果(2005年~2019年12月 エリアプライス)
気象データ:気象庁過去データより代表1地点の気温、日射量の1時間値
スポット市場は対象期間の1日前に取引を行うため、本来は天気予報のデータを用いるべきですが、過去の予報データが手に入らなかったため過去気象の実測値を用いました。
変数候補としては供給力、需要、連系線の混雑状況、燃料価格など様々考えられますが、今回は気温、日射量、平日・休日フラグ、時間のみを使っています。
異常度は1週間単位の予測誤差の平均値の二乗としました。
モデル・学習
モデルの構築はPython Kerasを使いました。下記を参考にしています。
深層学習を用いた時系列データにおける異常検知 Kabuku Developers Blog
https://www.kabuku.co.jp/developers/time_series_anomaly_detect_deep_learning
スポット市場では前日10時を締め切りに翌日の24時間分を取引します。このため、学習データのスポット価格は48時間前の価格としました。24時間分のデータから1時間値を予測します。

trainデータで実測値と予測値の誤差が正規分布に近くなるまで(過学習気味になるまで)学習を行い、testデータで前述誤差の差から異常度を計算します。
結果
<結果1:train:2005年4月~2010年12月、test:2011年1月~2019年12月>

2005年4月~2010年12月までを学習し、2011年から2018年までの変化点を見た結果です。青色がスポット価格の実測値、オレンジが予測値、緑色が異常度(右軸)です。
2011年3月の東日本大震災後、2012年1月に異常度が非常に高くなり、2015年まで高い状態が継続しています。2016年ごろからは元の傾向(2010年まで)に近くなったことがわかります。
<結果2:train:2005年4月~2010年12月、test:2011年1月~2019年12月>

こちらは2005年4月~2018年を学習し、2019年1月~12月の変化点を見た結果です。
2019年2月から4月中ごろに異常度が比較的高くなっており、太陽光発電の増加により晴れた昼間にスポット価格が大きく下落するようになった時期と一致しています。結果1の2012年ごろと比べると異常度は小さくなっていて、変化の大きさも反映されています。
考察など
簡易的でありますが、LSTMによるモデルと誤差集合を用いることでトレンドの変化を検知することができました。ただし、気象データを予報値ではなく実測値を使っていること、ごく限られた変数のみを用いていることなどからあくまで参考という形です。また、異常度の判定方法や評価指標としてはもっと一般的な方法があるかと思います。
先にも述べましたが、変化点とその度合いを見ることで事業戦略転換の判断をしやすくなったり、政策等の介入効果、状態変化による影響などを明確にすることができ、適用範囲は広いと思います。最近ではコロナの影響で電力需要の減少が言われていますが、同様の手法で影響を図ることができそうです。
以前行った、エネルギー基本計画での新語・複合語を探すというのも政策での変化を見たかったという動機でした。自然言語処理を用いた変化点検知というのもやってみたいと思っています。
参考
東京大学松尾研 DeepLearning実践開発講座「DL4US」3rd
https://deeplearning.jp/lectures/dl4us_3rd
DL4US コンテンツ公開ページ
https://weblab.t.u-tokyo.ac.jp/dl4us/
東京大学松尾研ディープラーニング講座 DL4USを修了しました。
https://eneprog.blogspot.com/2020/06/dl4us.html
ReNom:LSTMによる時系列データの異常検知
https://www.renom.jp/ja/notebooks/tutorial/time_series/lstm-anomalydetection/notebook.html
Kabuku Developers Blog :深層学習を用いた時系列データにおける異常検知
https://www.kabuku.co.jp/developers/time_series_anomaly_detect_deep_learning
日本卸電力取引所(JEPX)
http://www.jepx.org/
新電力ネット スポット市場
https://pps-net.org/glossary/5072
JEPX プライスチェッカー
https://enechange.jp/jepx_checker/
日本経済新聞 :電力スポット価格、土日昼間は「ほぼ0円」
https://www.nikkei.com/article/DGKKZO58525810X20C20A4TJ3000/
エネルギー基本計画の特徴を見てみる。その4 複合語を考慮してwordcloud
https://eneprog.blogspot.com/2018/09/4-wordcloudpythonjanome.html
エネルギー基本計画から新語・複合語を探す。その2 複合語を判定する
https://eneprog.blogspot.com/2018/08/2-pythonjanome.html
謝辞
DL4USの運営スタッフのみなさま、大変有用な講座を(無料で!)提供し、サポートしていただき本当にありがとうございました。ご一緒いただいた受講者のみなさまとの交流も大変励みになりました。感謝です。

