友だちPython ep5. さまざまな最適化
はじめに
友だちPython シリーズのご紹介
友だちPython シリーズは、Python の小ネタを短文でお届けします。
小さなエピソードを重ねてPythonと仲良しになれたら、と願ってシリーズ名を付けました。
話題
Pythonによる時系列分析: 予測モデル構築と企業事例
書籍「Pythonによる時系列分析: 予測モデル構築と企業事例」(オーム社)をご紹介いたします。
この書籍は、時系列データの一般的な分析手法から、売上・LTV・マーケティングROI・異常検知といった企業事例に沿ったシナリオまで、幅広く、わかりやすく解説しています。
そして何と言ってもPythonでサクッと動かせます!
Pythonの時系列モデルを試してみたい方、Pythonの経営管理/マーケティング活用をご検討されている方などにおすすめいたします!
この記事は2つの課題に取り組みます。
1つ目は大変悩ましいです。
今回の友だち
問題の概要
第5章、5.7「広告と販促効果を見える化し最適化するマーケティング・ミックスモデル(スポーツジム)」で次の2点の課題に遭遇しました。
1.3箇所の最適化処理に時間がかかりました。
2.「code 5-130 最適化」でエラーが発生しました。
実行環境
・ノートパソコン(普通のスペック、GPU非搭載)
・Anaconda 環境
・VS code の Jupyter Notebook で実行
問題と対処方法
1.時間のかかる最適化処理
次の3つの処理に時間がかかりました。
なお、書籍未記載のサンプルコードの中では、「振り返り」の最適化処理(scipy.optimize)に 67分 要しました。
回避策は分かりません。。。
(GPUで処理できるかどうか分かりません)
とにかく最適化処理を流しながら、平行して他の作業を進めたり、休憩を取ったりして、何とかやり過ごしました。
時間がかかることを前提にして予定を組み立ててくださいね。
2.「code 5-130 最適化」のエラー
書籍掲載のコードのとおり実行すると、「X_before」が存在しないエラーが発生します。
# code 5-130
# 最適化
# コスト全体
cost_all = X_before.values.ravel().sum()
このコードの前に「X_before」を定義・生成していないことが原因です。
■ 対策
実は、書籍未掲載のコードに秘密が隠されています。
ダウンロードしたサンプルコード、または、Notebook(実行例)サイト)には、「code 5-128 最適化する今後1年間(52週間)のデータフレーム作成」の前段階に、「振り返り(直近1年間(52週間))」が存在します。
この書籍未掲載のコードの中に「X_before」を定義・生成するコードが含まれているのです。
具体的には、次のコードです。
term = 52
X_before = X[-term:].copy()
データXの後ろ52レコードをコピーして、X_beforeを生成しています。
この2行を実行して書籍のコードを進めることができます。
せっかくの機会ですので、書籍未掲載のコードも実行して満喫してはいかがでしょう。
この章以外にも、いろんな章で書籍未掲載のコードがあります。
コードを実行することにより、時系列分析の理解をいっそう深められると思います。
「Notebook(実行例)サイト)」でサンプルコードと実行例を見ながら、書籍未掲載コードを見つけてみてください。
時系列分析を存分に堪能してください!
おわり
ブログの紹介
noteで3つのシリーズ記事を書いています。
ぜひ覗いていってくださいね!
1.のんびり統計
統計検定2級の問題集を手がかりにして、確率・統計をざっくり掘り下げるブログです。
雑談感覚で大丈夫です。ぜひ覗いていってくださいね。
統計検定2級公式問題集CBT対応版に対応しています。
2.Python機械学習プログラミング実践記
書籍「Python機械学習プログラミング PyTorch & scikit-learn編」を学んだときのさまざまな思いを記事にしました。
この書籍は、scikit-learnとPyTorchの教科書です。
よかったらぜひ、お試しくださいませ。
3.データサイエンスっぽいことを綴る
統計、データ分析、AI、機械学習、Pythonのコラムを不定期に綴っています。
「統計」「Python」「数学とPython」「R」のシリーズが生まれています。
最後までお読みいただきまして、ありがとうございました。