Shoeisha Technology Media

EnterpriseZine(エンタープライズジン)

EnterpriseZine(エンタープライズジン)

テーマ別に探す

売り上げデータと機械学習で予測モデルを作ろう(下準備編)

edited by DB Online   2015/11/17 14:00

 こんにちは。日本マイクロソフトの北川です。第 3 回からかなり間が空いてしまいました。Azure SQL Data Warehouse や Azure Data Lake のセミナーを実施したり、Power BI のセミナーを実施したり、シルバーウィークだったり、本社出張に行ったりしているうちに、いつの間にか 10 月も終わっていました。月日が経つのは早いですね。ちなみに海の家を題材として扱っておきながらもう季節は秋ですが、優れたミートテックを着用しているためまだ半袖でも活動可能な私はまだ海の家を引っ張ります。

 それでは本題に入りましょう。今回は機械学習(Azure Machine Learning)を使用して、海の家の実際の売り上げデータをもとに機械学習で予測モデルを作成するための下準備を行いたいと思います。

 3か月前のあの日、湘南の海は最高でした…。

 振り返りますが、第 3 回では、売り上げデータを俯瞰的に見てきました。その中で、海の家の売り上げデータは商品毎にみた場合、偏りがあることがわかりました。その偏りですが、カテゴリごとにまとめることにより、データがまんべんなく存在するようになります。

 では、この偏りの何が問題なのでしょうか。

 機械学習ではデータから規則性や、パターンを発見し、それを利用して将来の予測を行うことが可能ですが、モデルのトレーニング(学習)において無視できない条件があります。それがデータの件数とその多様性(パターン)です。まず、機械学習は一般的に同じ種類のデータであればデータ数の増加に伴い精度を向上させることができます。次に、多様性(パターン)です。説明変数として設定したい項目を学習させられるだけのパターンが必要になります。ただし、あんまりたくさんパターンを分けてしまうと、そのパターンでの件数が減ってしまいますので、注意が必要です。

 今回は海の家の売り上げデータを利用しますので、予測したい海の家の「売上」という目的変数に対して「天気」という説明変数は比較的簡単に思いつくと思います。ただし、海の家は 7月11日から8月31日までの神奈川県東部(横浜)の天気を確認すると、7月11日から8月31日までの間雨の日は 7月17日と7月25日の2日間のみとなっています。この状況では、

35日
15日
2日

 ……となってしまいます。さらに、雨が降ったか、降らないか、で分けてしまうと、

雨じゃない(晴か曇) 50日
2日

 ……となってしまい、このデータで学習を行うと「天気はほぼ雨ではない」という前提で売り上げの規則性やパターンを学習してしまいます。もちろん、雨の場合も学習していますが、そのデータ数は2件ですので精度に関してはあまり期待できないでしょう。

 さらに、海の家なのだから、気温が高いほど人が集まる可能性があるし、暑いと海の家でビールを飲みたくなるだろう、として気温を説明変数に加えるとします。特にビールは気温が28度を超えると大きく売り上げが伸びるといわれていますので、閾値を28度に設定するとします。ここでは同じく神奈川県東部(横浜)の最高気温(15時)を参考にしてみます。

最高気温28度以上 45日
最高気温28度未満 7日

 天気と同じように、このデータでも「最高気温は28度以上」という前提で売り上げの規則性やパターンを学習してしまいます。気温が低い場合の精度は期待できそうにありませんね。

 この組み合わせでどのようなデータの分布になるか見てみましょう。

  雨じゃない
最高気温28度以上 43日 2日
最高気温28度未満 7日 0日

 上記の分布では、基本的に「雨ではなく、最高気温は28度以上」という前提での学習になってしまいます。今シーズンに限っては天気(雨か雨じゃないか)と最高気温を説明変数に取り入れてもあまり適切ではなさそうです。

 次に人の動きを大きく左右するのが平日か否か、でしょうか。7月11日から8月31日までですので、世の学生の方は夏休みかもしれませんが、第3回に掲載したグラフからもわかるように、やはり週末の方が売り上げが伸びます。そこで説明変数として平日か休日か、を設定してみたいと思います。

   雨じゃない
平日  34日 2日
休日 16日 0日
   最高気温28度以上 最高気温28度未満
平日 31日 5日
休日 14日 2日

 あれ、気温よさそうに見えますね。

 とはいえ、雨だと海にはいかないでしょうし、第3回に掲載したグラフからも雨が降った7月17日と8月17日の売り上げは極めて低いので、天気の方が売り上げとの関係性が強いとして、天気の方を説明変数として採用したいと思います。

 もちろん機械学習ですので、3つとも説明変数にしても良いのですが、その場合データが分割されてパターンごとのデータ件数が減ってしまいます。

  最高気温28度以上 最高気温28度未満
平日で雨 2日  0日
平日で雨じゃない  29日 5日
休日で雨 0日 0日
休日で雨じゃない 14日 2日

 28度未満のケースで見ると、休日で雨じゃない日の精度は高くなさそうです。

※この続きは、会員の方のみお読みいただけます(登録無料)。


※この続きは、会員の方のみお読みいただけます(登録無料)。


著者プロフィール

  • 北川剛(キタガワツヨシ)

    日本マイクロソフト株式会社 日本マイクロソフトで Azure を含むサーバー製品を担当するプロダクトマネージャー。 大学時代にインターネットの洗礼を受け、研究室でデータベースを利用したウェブシステムを構築するというきっかけを得たことから、データベースの道に進むことに。現在はデータベースだけではなく...

バックナンバー

連載:マイクロソフト北川剛のイチからはじめるPower BI入門講座

もっと読む

All contents copyright © 2007-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5