こんにちは。
ベガコーポレーション所属エンジニアの篠原です。
今日は弊社でデータ分析に使用しているSAP Predictive Analyticsをご紹介したいと思います。
SAP Predictive Analytics(以後SAP PA)はHANAで有名なドイツSAP社の予測分析ツールで、分類/回帰、クラスタ、アソシエーションなどの分析を行うことができます。
今回は分類/回帰分析について解説いたします。
分類/回帰分析は教師あり機械学習で、目的変数がカテゴリの場合は分類、数値の場合は回帰となります。
SAP PAでは、目的変数の型で自動的に決められます。
テキストファイルやExcelファイルあるいはデータベースでデータを用意し、学習を行うことで予測を行うことができるモデルを作成することができます。
弊社ではデータ加工の都合上、テキストファイルで行なっています。
テキストファイルの場合はCSVでもTSVでも大丈夫です。
(自動判別してくれます。)
では実際にモデル作成と予測を行います。
今回は最大電力を予測し、電力会社の予想結果と比較・勝負したいと思います。
データの用意
電力会社によりますと、予想最大電力は天候・予想気温、曜日、節電効果、景気動向などを考慮して予想しているそうです。
節電効果や景気動向はデータが手元にないため、電力会社で考慮されているパラメータの内、気温と曜日(及び休日)を説明変数として採用します。
天候は1日の内での決定が難しいために採用せず、気温は最高気温を使用します。
その他のパラメータとして、時期(季節)を特定するための年間通算日(1月1日を1とする)を用います。
予測には用いませんが、ラベルとして日付と比較用の電力会社の予想が入っています。
データはこんな感じになります。↓
データがある2012年1月から2017年7月を学習期間とし、2017年8月の予測を行います。
SAP PAでのモデル作成
SAP PAを開き、分類/回帰モデルの作成を選択します。
データソースの選択で用意したテキストファイルを読み込みます。
変数記述ではデータの保存形式(数値や文字列など)や値の形式(連続値や断続値など)を指定します。
以前行ったことがあるデータと同じカラムで変数記述ファイルが保存してあったり、変数記述を作成してあれば読み込むだけでOKですが、今回は変数記述ファイルがないので、解析し、必要であれば保存形式や値の形式を指定します。
変数の選択では目的変数と除外する変数を選択します。
年月日と電力会社の予測値は予測に使用しないので除外します。
モデル作成の設定画面です。モデルの自動保存や詳細設定が行えますが、デフォルトのまま進めます。
モデル作成が行われます。説明変数の数やレコード数にもよりますが、数秒で終わります。
(1000の説明変数の場合でも数十秒から数分で終わります。)
モデルができたら、モデルの情報を見ることができます。
↓のグラフは実測値と予測値の比較で、緑の理想線と青の検証線が近く、誤差範囲が少ないものが理想です。
モデルの適用と評価
モデルの適用をすると、説明変数から目的変数の予測を行うことができます。
今回は検証用に8/16までのデータに対して適用を行います。
実際の最大電力と電力会社の予想、SAP PAの予測結果をプロットしました。↓
電力会社RMSE | SAP PA RMSE | |
8/10まで | 91.71 | 49.25 |
8/16まで | 78.07 | 93.92 |
8/10まではSAP PAで行ったモデルの予測結果が当たっているようです。
RMSE※を計算しても8/10までのRMSEは電力会社が91.71に対し、SAP PAが49.25とSAP PAの予測が当たっていますが、8/17までのRMSEは電力会社が78.07に対し、SAP PAが93.92と逆転されました。
原因としましては、休日設定は日本の祝日としたためにお盆休みが休日となっていなかったことや、8/11の山の日が2016年に導入されたため2015年までの学習データと状況が異なったことが考えられます。
※RMSE(Root Mean Square Error)
予測値が正解から乖離を示す。モデルの予測精度の悪さを表すため0 に近い値であるほど良い。
残念ながら電力会社に後半逆転され負けてしまいましたが、20分ほどで電力会社に匹敵する予測を行うことができました。
今回はSAP PAのGUIでの操作がメインでしたが、SAP PAの分類/回帰分析ではJavaやJavaScriptなどのソースもエクスポートすることが可能です。
次回以降に作成したモデルのソースエクスポートとその実行を行いたいと思います。
↑の合同勉強会でもSAP PAについて発表する予定です。
興味がある方はぜひお越しください。