派遣で働くエンジニアのスキルアップを応援するサイト

PRODUCED BY RECRUIT

【第8話】ロジスティック回帰で、翌月の購買実績を予測してみよう!実践編【漫画】未経験なのに、機械学習の仕事始めました

f:id:itstaffing:20211020101914j:plain
f:id:itstaffing:20211020101917j:plain
f:id:itstaffing:20211020101919j:plain

★この記事で利用するサンプルコードは、こちらで確認できます。

モデル構築ライブラリ「scikit-learn」とは?

ロジスティック回帰の概要を第7話で紹介しました。ロジスティック回帰とは、簡単にいうと、データが与えられたときにAかBのどちらに属するのかを予測する方法です。

今回は、機械学習において最も有名なライブラリの一つである、scikit-learn(サイキット・ラーン)を用いて、ロジスティック回帰でモデルを構築します。

このライブラリはPythonから利用可能で、さまざまな機械学習手法を一貫したインタフェースで利用できます。つまり、一度ロジスティック回帰で予測モデルを構築する方法を学んだら、他の予測モデルも同じようにして作ることができるというメリットがあるのです。

▼ロジスティック回帰(LogisticRegression)以外にも、モデルを作るための他の機械学習手法が大量に用意されている

f:id:itstaffing:20211020101922j:plain

https://scikit-learn.org/stable/modules/classes.html#module-sklearn.linear_model

>> 拡大表示

f:id:itstaffing:20210113102529j:plain
ロジスティック回帰以外の手法でも、たくさん用意されている……だと…?自由度が高すぎて、使い方がむずかしそうなんですけど。
f:id:itstaffing:20210113102532j:plain
大丈夫!scikit-learnの使い方を紹介する技術書やブログって、とっても多いんです。つまずいてしまった場合も、役立つ記事や書籍に出会いやすいですよ。
f:id:itstaffing:20210113102524j:plain
よく使われているライブラリだから、本やブログで情報を集めやすいんだ!手順やサンプルコードが豊富に用意されているのは、初心者には助かるなぁ。
f:id:itstaffing:20210113102532j:plain
公式ドキュメントが充実していることも魅力の一つですね。

たとえばこちらのページでは、ロジスティック回帰を数式レベルから解説しています。このドキュメントの数式通りにライブラリが実装されているので、数式とコードの両面から手法を学べます。

f:id:itstaffing:20211020101924j:plain

https://scikit-learn.org/stable/modules/linear_model.html#logistic-regression

>> 拡大表示

f:id:itstaffing:20210113102532j:plain
私個人の感想ですが、scikit-learnの実装は綺麗に書かれていると思うんですよね。 なので、Python自体の学習にも役立つと思います!
f:id:itstaffing:20210113102524j:plain
オープンソースで公開されてるんだ!個人、商用に関わらず、誰でも無料で使えるのはありがたいですね。

モデル構築ライブラリ「scikit-learn」を使ってみよう

f:id:itstaffing:20210113102532j:plain
それではさっそく、scikit-learn を使ってみましょう。次のようにコマンドを実行してくださいね。

・scikit-learn をインストールする

pip install scikit-learn

※Pythonの環境構築の手順は割愛します。

・ロジスティック回帰を利用する場合、次のようにしてクラスを読み込む

from sklearn.linear_model import LogisticRegression

・予測モデル構築の準備をする

model = LogisticRegression()

f:id:itstaffing:20210113102532j:plain
ロジスティック回帰をするには、sklearn.linear_model の中に LogisticRegressionモデルというのが用意されているので、上のコマンドのようにインポートして使うといいですよ。公式ドキュメントはこちらです。

さて、モデルを構築するための学習データは model.fix(X, y)で適用できます。

Xは特徴量と呼ばれるデータです。今回の例では、第6話で紹介したRFM分析の際に計算したデータを使います。

Recency(直近いつ)、Frequency(頻度)、Monetary(購入金額)を列に持ち、行方向にそれぞれの顧客が並んでいるデータです。

1番目の顧客のRFMは、 286, 0.002994, 77183.60
2番目の顧客のRFMは、 0, 0.017964, 4085.18

といったように、データが顧客数の数だけ並んでいるといった具合です。

yは翌月の購入実績の有無です。購入していた場合は True、購入していない場合はFalseとなる配列です。このデータについても、第6話で紹介したとおりです。

ロジスティック回帰で予測するには、次のように実行します。

・ロジスティック回帰で予測する

from sklearn.linear_model import LogisticRegression
model = LogisticRegression()
model.fit(X, y)
model.predict(X)

最後のmodel.predict(X)を実行すると、予測結果を得られます。

それぞれの顧客に対して、翌月に購入すると予測した場合はTrue、購入しないと予測した場合はFalse が返ってきます。モデルの予測精度を確認する方法の一つとして分割表があります。実績値と予測値の集計で、それぞれの項目に名前がついています。

f:id:itstaffing:20211020101931j:plain

新型コロナウイルスの PCR 検査に関連して、偽陽性(False Positive、略して FP)という言葉を聞いたことがあるかもしれません。感染していないにもかかわらず、検査結果が陽性と判定されてしまうケースです。機械学習においても偽陽性が発生します。翌月に購入しないにもかかわらず、購入すると予測してしまったケースです。予測通りに顧客が商品を購入した場合真陽性(True Positive、略して TP)、逆に予想通りに購入しなかった場合は真陰性(True Negative、略して TN)と言います。

Pandasで分割表を計算する場合はcrosstabを利用します。

  pd.crosstab(
    y,
    model.predict(X),
    rownames=["購入実績"],
    colnames=["予測結果"],
  )

f:id:itstaffing:20211020101933j:plain

全件に対して予測が的中した割合を正解率(Accuracy)と呼びます。これは、予測モデルの精度を比較する指標のひとつとして有名です。正解率は、(TN+TP)/(TN+FP+FN+TP) で計算します。今回のケースでは、正解率は(2515+287)/(2515+118+1054+287)≒0.705 となります。

f:id:itstaffing:20211020101927j:plain

次回は、予測モデルの精度を計算する方法であるクロスバリデーションを紹介します。お楽しみに!

第1話 機械学習の仕事内容って?実はコードを書くだけじゃない!
第2話 人工知能、機械学習、ディープラーニングの違いとは?
第3話 機械学習の活用事例!建設機械や回転寿司屋でも活用されている!?
第4話 機械学習したいのにデータがない!?
第5話 集計と可視化:pandasでデータの加工をしてみよう
第6話 続!集計と可視化:Plotlyでデータをグラフ化して傾向をとらえよう
第7話 ロジスティック回帰ってなあに?紹介編

【筆者】
早川 敦士さん
株式会社FORCASの分析チームにてリーダーを務める傍らで、株式会社ホクソエムで執行役員として従事。新卒でリクルートコミュニケーションズに入社しWeb広告やマーケティングオートメーションなどのB2Cマーケティングを経験し、FORCASではB2Bマーケティングプラットフォームのデータ分析および開発を担当している。大学在学中に『データサイエンティスト養成読本』(技術評論社刊)を共著にて執筆。その後も『機械学習のための特徴量エンジニアリング』(オライリー・ジャパン刊)や『Pythonによるはじめての機械学習プログラミング』(技術評論社刊)などで執筆活動を続けている。国内最大級のR言語コミュニティであるJapan.Rを主催。Youtubeチャンネル『データサイエンティストgepuro』で動画を投稿。
・Twitterアカウント

湊川 あいさん
フリーランスのWebデザイナー・漫画家・イラストレーター。マンガと図解で、技術をわかりやすく伝えることが好き。 著書『わかばちゃんと学ぶ Git使い方入門』『わかばちゃんと学ぶ Googleアナリティクス』『わかばちゃんと学ぶ Webサイト制作の基本』『運用ちゃんと学ぶ システム運用の基本』『わかばちゃんと学ぶ サーバー監視』が発売中のほか、マンガでわかるGit・マンガでわかるDocker・マンガでわかるRuby・マンガでわかるScrapbox・マンガでわかるLINE Clova開発・マンガでわかる衛星データ活用といった分野横断的なコンテンツを展開している。
・Amazon著者ページ
・Twitterアカウント

わかばちゃんが登場する書籍いろいろ

イメージ イメージ
イメージ イメージ

わかばちゃんと学ぶシリーズ(Amazonページ)