技術者KのPython道場 5.データ解析
その1
こんにちは、技術者Kです。
前回までのPython道場の記事はご覧いただけたでしょうか?
前回は、Google ChromeやSafari等のブラウザ上でExcelファイルを操作するシステムをバージョンアップしたものをご紹介しました。
まだご覧になっていないという方は、ぜひご覧ください!
今回は、日々の商品の売上から未来の商品の売上を分析することに挑戦してみました。
近年、ビッグデータやAIといった言葉が注目されています。
ビッグデータを分析することで、顧客に最適なサービスを提供したり、商品の供給を効率化したりすることができるからです。
一方で、実際どのようにデータの分析を行うか知っている人は少ないのではないでしょうか。
今回の記事では、そんなデータ分析の流れが分かる内容となっています。
ビッグデータやAIを活用した売上向上や効率化、コスト削減に興味のある方は、ぜひ最後まで読んでみてください!
それでは見ていきましょう。
今回分析したデータ
今回、売上の分析に用いたデータはKaggle内のとあるコンペティションのデータです。
Kaggleとは、世界中のデータサイエンティストが企業や政府といった組織から与えられる課題に対しての予測精度を競い合うプラットフォームのことです。
この与えられる課題のことをコンペティションと言います。
今回挑んだコンペティションは、ロシアのソフトウェア会社1C Companyが提供した2013年1月~2015年10月の商品と店ごとの毎日の売上から、2015年11月の商品と店ごとの売上を予測する、という内容でした。
以下は実際のデータの一部です。
こちらが、分析対象である、2013年1月~2015年10月の商品と店ごとの毎日の売上の一部です。
約300万行にまでわたる膨大なデータです。
左から順に、
日付、年月を表す番号(2013年1月なら0、2013年2月なら1…2015年10月なら33)、店ごとのID、商品ごとのID、商品の販売価格、その日に売れた商品の個数
を表しています。
こちらが約20万行ほどある予測対象のデータの一部です。
左から順に、
ID(行番号)、店ごとのID、商品ごとのID
を表しています。
与えられた、店ごとのIDと商品ごとのIDに対する2015年11月の売上を予測することが今回のゴールです。
分析方法
これらのデータを分析した流れについてご紹介します。
まず、分析対象のデータの売上は毎日の売上、予測したいデータは月の売上でしたので、
同じ年月の同じ店の同じ商品の売上を合計して、月の売上データを作成しました。
次に、与えられた店ごとのIDと商品ごとのIDに対する2015年11月の売上を予測することがゴールでしたので、
売上に影響しそうな要素として、
- 商品を売る日付
- 商品を販売する店
- 販売している商品
の3つが挙げられると考えました。
分析対象のデータで言うと、
- 年月を表す番号(date_block_num)
- 店ごとのID(shop_id)
- 商品ごとのID(item_id)
の3つです。
分析対象のデータからこれらのデータと売上の関係を分析すれば、予測対称のデータを予測できるのではないかと考えました。
そこで重回帰分析という分析手法で分析しました。
重回帰分析とは、
ある結果を説明する際に、複数の結果に関連しそうな要素のなかで、どれがどれくらい結果に影響するかを関数として数値化して、それを使って予測する手法を指します。
今回で言えば、結果を売上、関連しそうな要素として商品を売る日付、商品を販売する店、販売している商品の3つとして重回帰分析を行うことにしました。
重回帰分析を行い、データから予測した結果がこちらです。
予測対象の行番号IDに対する、2015年11月の売上予測の一部です。
このようにして機械学習して分析し、予測したデータを取得することができます。
ちなみに、Kaggleでは予測結果のデータを送信することで順位を知ることができます。
予測精度が高いほど順位が良くなりますが、今回の分析結果は…
2021年6月24日時点で、11546位/12790人でした。
まだまだ分析の精度を高くする余地があるようです。
2021年6月28日 追記
分析の精度を大幅に高くすることができました!
2021年6月28日時点で、8192位/12841人です!
今回の分析精度を上げた取り組みや理論は以下の記事にまとめました。
まとめ
いかがでしたか?
今回は、データの分析の流れの一例をご紹介しました。
ビッグデータを分析することのイメージが少しでも鮮明になったでしょうか。
今回のデータで高い精度の予測ができれば、
売上が多いと思われる店に人員を多く配置したり、売上が多いと思われる商品を多く仕入れたりすることによる、
人員配置の効率化や売上向上が可能だと考えられます。
次回は、今回のデータの分析精度を上げるにはどうすればよいかをご紹介しようと思います。