🎯 STEP 16: ロジスティック回帰入門
Yes/Noの2値分類問題を解決しよう
📋 このステップで学ぶこと
- ロジスティック回帰とは何か
- 2値分類問題の考え方
- オッズとオッズ比の解釈
- 実務例(成約確率、チャーン予測)
- PythonとExcelでの実装
学習時間の目安:3.5時間
🔍 1. ロジスティック回帰とは
2値分類問題
結果が「Yes/No」の2つだけの問題
ビジネスでの例:
・顧客が商品を購入する / しない
・顧客がサービスを継続する / 解約する
・メールを開封する / しない
・ローンを返済する / 延滞する
・広告をクリックする / しない
通常の回帰分析との違い:
・通常の回帰:目的変数が連続値(売上、価格など)
・ロジスティック回帰:目的変数が0か1(Yes=1、No=0)
なぜ通常の回帰ではダメなのか
目的変数が0か1なのに、通常の回帰を使うと…
- 予測値が0〜1の範囲外になる
例:予測値 = -0.3 や 1.5
→ 確率は0〜1のはずなのに、範囲外! - 誤差の分布が正規分布にならない
0か1の値なので、誤差は一様に分布しない
→ 回帰分析の前提が崩れる
解決策:ロジスティック回帰を使う!
ロジスティック回帰の仕組み
予測するのは「確率(0〜1)」
ステップ:
1. まず、通常の回帰式を作る
z = b₀ + b₁X₁ + b₂X₂ + …
2. zを「シグモイド関数」に通す
p = 1 / (1 + e^(-z))
3. pが「Yes(1)になる確率」になる
p = 0.8 → 80%の確率でYes
シグモイド関数の効果:
・どんなzでも、pは必ず0〜1の範囲になる
・z = -∞ → p = 0
・z = 0 → p = 0.5
・z = +∞ → p = 1
📊 2. オッズとオッズ比
オッズとは
「起きる確率」÷「起きない確率」
計算式:
オッズ = p / (1 – p)
例:
・p = 0.8(購入確率80%)→ オッズ = 0.8 / 0.2 = 4
意味:「購入する可能性が、しない可能性の4倍」
・p = 0.5(購入確率50%)→ オッズ = 0.5 / 0.5 = 1
意味:「購入する/しないが同じ確率」
・p = 0.2(購入確率20%)→ オッズ = 0.2 / 0.8 = 0.25
意味:「購入する可能性が、しない可能性の1/4」
| 確率(p) | オッズ | 解釈 |
|---|---|---|
| 90% | 9.0 | Yesの可能性がNoの9倍 |
| 80% | 4.0 | Yesの可能性がNoの4倍 |
| 67% | 2.0 | Yesの可能性がNoの2倍 |
| 50% | 1.0 | Yes/Noが同じ確率 |
| 33% | 0.5 | Yesの可能性がNoの半分 |
| 20% | 0.25 | Yesの可能性がNoの1/4 |
オッズ比とは
2つのグループのオッズを比較
計算式:
オッズ比 = オッズA / オッズB
例:メール開封率
・件名A:開封率70% → オッズ = 0.7 / 0.3 = 2.33
・件名B:開封率50% → オッズ = 0.5 / 0.5 = 1.00
・オッズ比 = 2.33 / 1.00 = 2.33
解釈:
件名Aは件名Bに比べて、開封されるオッズが2.33倍高い
オッズ比の読み方:
・オッズ比 = 1 → 影響なし
・オッズ比 > 1 → 正の影響(確率が上がる)
・オッズ比 < 1 → 負の影響(確率が下がる)
ロジスティック回帰とオッズ比の関係
オッズ比 = exp(係数)= e^係数
例:
・訪問回数の係数 = 0.5
・オッズ比 = e^0.5 = 1.65
・意味:訪問回数が1回増えると、購入のオッズが1.65倍になる
係数の符号とオッズ比:
・係数 > 0 → オッズ比 > 1 → 確率が上がる
・係数 = 0 → オッズ比 = 1 → 影響なし
・係数 < 0 → オッズ比 < 1 → 確率が下がる
💻 3. Pythonでの実装
基本的な例:顧客の購入予測
予測の実行
オッズ比の計算
📈 4. モデルの評価
評価指標
1. 正解率(Accuracy)
全予測のうち、正しく予測できた割合
計算式:(正解数)/(全データ数)
2. 適合率(Precision)
Yesと予測したもののうち、実際にYesだった割合
「予測の正確さ」を測る
3. 再現率(Recall)
実際にYesのもののうち、Yesと予測できた割合
「見逃しの少なさ」を測る
4. AUC(Area Under the Curve)
ROC曲線の下の面積(0.5〜1.0)
0.8以上なら良いモデル
混同行列の解釈
| 予測:No(0) | 予測:Yes(1) | |
|---|---|---|
| 実際:No(0) | TN(True Negative) 正しくNoと予測 |
FP(False Positive) 誤ってYesと予測 |
| 実際:Yes(1) | FN(False Negative) 誤ってNoと予測 |
TP(True Positive) 正しくYesと予測 |
計算式:
・正解率 = (TN + TP) / 全体
・適合率 = TP / (TP + FP)
・再現率 = TP / (TP + FN)
🎯 5. 実務での活用例
例1:顧客の解約予測(チャーン予測)
例2:メール開封予測
Excelでの確率計算
📝 STEP 16 のまとめ
1. ロジスティック回帰の基本
- Yes/Noの2値分類問題を解決
- シグモイド関数で0〜1の確率に変換
2. オッズとオッズ比
- オッズ = 起きる確率 / 起きない確率
- オッズ比 = exp(係数)
- オッズ比 > 1 → 正の影響
3. 評価指標
- 正解率、適合率、再現率
- AUC(0.8以上で良いモデル)
- 混同行列での詳細分析
4. 実務応用
- チャーン予測、開封予測、成約予測
- 施策効果のシミュレーション
ロジスティック回帰は、ビジネスで最もよく使われる分析手法の1つです!
使えるシーン:
・顧客が購入する/しないを予測
・顧客が解約する/しないを予測
・メールを開封する/しないを予測
・ローンを返済する/しないを予測
係数の解釈:
・係数が正(+)→ その変数が大きいと、Yesになりやすい
・係数が負(-)→ その変数が大きいと、Noになりやすい
・オッズ比 = exp(係数) → 影響の大きさを数値化
次のSTEP 17では、仮説検定の実務での使い方を学びます!
STEP 17では、「仮説検定の実務での使い方」を学びます。統計的な根拠を持ってビジネス判断を行う方法を習得しましょう!
📝 練習問題
ロジスティック回帰と通常の回帰分析の違いを説明してください。
| 通常の回帰分析 | ロジスティック回帰 | |
|---|---|---|
| 目的変数 | 連続値(売上、価格など) | 2値(0か1) |
| 予測するもの | 具体的な数値 | 確率(0〜1) |
| 予測値の範囲 | -∞ 〜 +∞ | 0 〜 1 |
| 使用例 | 売上予測、需要予測 | 解約予測、成約予測 |
重要なポイント:
ロジスティック回帰は、シグモイド関数を使って、どんな値でも0〜1の範囲の確率に変換します!
購入確率が60%の顧客のオッズを計算してください。また、その意味を説明してください。
オッズの計算:
= 0.6 / (1 – 0.6)
= 0.6 / 0.4
= 1.5
意味:
この顧客が商品を「購入する可能性」は「購入しない可能性」の1.5倍
別の言い方:
・購入する:購入しない = 3:2
・10人いたら、6人が購入、4人が購入しない
ロジスティック回帰で「訪問回数」の係数が0.5でした。オッズ比を計算し、ビジネス的に解釈してください。
オッズ比の計算:
ビジネス的解釈:
訪問回数が1回増えるごとに、購入のオッズが1.65倍になる。
つまり、顧客に何度もサイトを訪問してもらうことで、購入確率が大幅に上がる。
施策への応用:
・リターゲティング広告で再訪問を促す
・メールマガジンでサイトへの誘導を増やす
・アプリのプッシュ通知で訪問を促す
混同行列が以下の結果でした。正解率と適合率を計算してください。
予測:No
予測:Yes
実際:No 80 20
実際:Yes 10 90
| 予測:No | 予測:Yes | |
|---|---|---|
| 実際:No | 80 | 20 |
| 実際:Yes | 10 | 90 |
正解率(Accuracy):
= (80 + 90) / (80 + 20 + 10 + 90)
= 170 / 200
= 85%
適合率(Precision):
= 90 / (90 + 20)
= 90 / 110
= 81.8%
以下のロジスティック回帰の結果を解釈してください。
モデル:メール開封予測
切片: -2.5
件名の長さの係数: 0.1
送信時刻の係数: -0.05
(1) 係数の符号から何がわかりますか?
(2) 件名の長さが10文字の場合と20文字の場合で、オッズはどう変わりますか?
(1) 係数の解釈:
件名の長さ(係数 = +0.1):
・係数が正(+)→ 件名が長いほど、開封されやすい
・オッズ比 = exp(0.1) = 1.105
・件名が1文字長くなると、開封のオッズが1.105倍になる
送信時刻(係数 = -0.05):
・係数が負(-)→ 送信時刻が遅いほど、開封されにくい
・オッズ比 = exp(-0.05) = 0.951
・つまり、早朝に送る方が開封されやすい
(2) オッズの変化:
件名10文字の場合:
オッズへの影響 = exp(0.1 × 10) = exp(1) = 2.72
件名20文字の場合:
オッズへの影響 = exp(0.1 × 20) = exp(2) = 7.39
変化:
件名を10文字から20文字にすると、オッズが 7.39 / 2.72 = 2.72倍になる
実務的な意味:
件名を長くする(ただし長すぎない範囲で)と、メール開封率が大幅に改善する可能性がある!
❓ よくある質問
標準的な閾値:
・p ≥ 0.5 → Yes(1)と予測
・p < 0.5 → No(0)と予測
閾値を調整する場合:
例1:メールマーケティング
・閾値 = 0.3(低めに設定)
・理由:誤って送信しても、コストは低い
・多くの顧客にリーチできる
例2:融資審査
・閾値 = 0.7(高めに設定)
・理由:誤って融資すると、大きな損失
・確実な顧客にだけ融資
決め方:
False Positive(誤ってYesと判定)とFalse Negative(誤ってNoと判定)のコストを考慮して設定します。
代わりに使う指標:
1. 正解率(Accuracy)
・全予測のうち、正しく予測できた割合
・計算式:(正解数)/(全データ数)
2. AUC(Area Under the Curve)
・ROC曲線の下の面積
・0.5〜1.0 の範囲
・0.8以上なら良いモデル
3. 疑似R²(Pseudo R²)
・McFadden’s R²など
・通常のR²とは異なる計算方法
・0.2〜0.4 でも良いモデルとされる
推奨:
ロジスティック回帰では、正解率とAUCを使うのが一般的です!
例:利用月数の係数が -0.693
・オッズ比 = exp(-0.693) = 0.5
解釈:
・利用月数が1ヶ月増えると、解約のオッズが半分になる
・つまり、長く使っている顧客ほど、解約しにくい
別の見方:
・オッズ比 = 0.5 = 1/2
・「2倍解約しにくい」とも言える
一般的なルール:
・オッズ比 > 1 → 正の影響(確率が上がる)
・オッズ比 = 1 → 影響なし
・オッズ比 < 1 → 負の影響(確率が下がる)
多重共線性の影響:
・係数が不安定になる
・標準誤差が大きくなる
・p値が大きくなる(有意でなくなる)
対処法:
1. VIFをチェック(VIF ≥ 10 なら削除)
2. 相関の高い変数のペアを見つける
3. どちらか1つを削除
4. 必要に応じて、Ridge回帰やLasso回帰を使う
重要:
STEP 15で学んだ多重共線性の対処法は、ロジスティック回帰でもそのまま使えます!
ロジスティック回帰の種類:
1. 二項ロジスティック回帰
・2つのカテゴリ(Yes/No)
・このSTEPで学んだ内容
2. 多項ロジスティック回帰
・3つ以上のカテゴリ(高/中/低)
・各カテゴリになる確率を予測
3. 順序ロジスティック回帰
・順序がある場合(満足度:1〜5)
・順序を考慮したモデル
Pythonでの実装:
model = LogisticRegression(multi_class='multinomial')注意:
多項ロジスティック回帰は、二項より複雑になります。まずは二項ロジスティック回帰をしっかり理解しましょう!
代替方法:
1. Pythonで係数を求めて、Excelで予測
・係数だけPythonで求める
・予測式をExcelに貼り付けて使う
・z = 切片 + 係数×変数
・p = 1/(1+EXP(-z))
2. ソルバーを使う(上級者向け)
・最尤推定でパラメータを求める
・設定が複雑なので非推奨
3. 統計ソフトを使う
・SPSS、SAS、Rなどの専門ソフト
推奨:
ロジスティック回帰はPythonを使うのが最も簡単です!Google Colab(無料)なら、すぐに使えます。
学習メモ
ビジネスデータ分析・意思決定 - Step 16