はじめに
回帰は連続数値を予測しますが、分類はラベルを予測します。ロジスティック回帰は、シンプルで高速で説明が容易であり、実際にも非常に役立つため、最良の入門分類モデルです。
レッスンの目標
- ロジスティック回帰が線形回帰とどのように異なるかを理解します。
- モデルの出力確率を読み取ります。
- しきい値を使用して確率を予測ラベルに変換する方法を理解します。
直線から確率へ
線形回帰では、負の無限大から正の無限大までの任意の値を生成できます。二値分類には 0 から 1 までの確率が必要です。ロジスティック回帰では、シグモイド関数を使用してこの問題を解決します。
$$ \sigma(z) = \frac{1}{1 + e^{-z}} $$
$z = w_1x_1 + ... + w_nx_n + b$ です。
しきい値は固定された真実ではありません
多くの新規ユーザーのデフォルトのしきい値は 0.5 です。これは、偽陽性と偽陰性のコストが等しい場合にのみ当てはまります。
たとえば、病気の予測では想起が優先されることがよくあります。顧客の離反により、離れようとしている顧客を逃すのではなく、冗長な電話を受け入れる可能性があります。
コード例
sklearn.linear_model から LogisticRegression をインポート
sklearn.metricsインポートclassification_reportから
モデル = ロジスティック回帰(max_iter=1000)
model.fit(X_train, y_train)
proba = model.predict_proba(X_test)[:, 1]
preds = (proba >= 0.5).astype(int)
print(classification_report(y_test, preds))
メリットとデメリット
利点: 迅速、ベースライン設定が簡単、説明が簡単。
欠点: クラス境界が非線形すぎる場合、特徴量エンジニアリングとスケールの影響を受けやすい場合は効果がありません。
よくある間違い
- データがクラス外の場合にのみ精度を確認してください。
- 異なるしきい値をテストしないでください。
- エンコードまたはスケーリングのステップでリークが発生します。
練習問題を練習する
- チャーンまたはスパムの問題に対するロジスティック回帰をトレーニングします。
- しきい値 0.3、0.5、0.7 での結果を比較します。
- コメントを書きます: どのしきい値が問題に適しているか、およびその理由を説明します。
完了基準
- シグモイドの役割を説明します。
- 出力が予測ラベルと異なる確率を理解します。
- ビジネス目標に応じてしきい値を変更する方法を理解します。
段階的に練習する (上級)
- わずかなクラスバイアスを伴うデータセット分類を使用します。
- デフォルトの class_weight および Balanced を使用してロジスティック回帰をトレーニングします。
- しきい値 0.3、0.5、0.7 で精度、再現率、F1 を比較します。
- 精度と再現率のトレードオフを導きます。
- 特定の製品シナリオに従ってしきい値を選択します。
アーティファクトを送信する必要があります
- しきい値に応じたメトリック テーブル。
- 明確に注釈が付けられた FP/FN を含む混同マトリックス。
- シミュレーションのために PM に送信される 1 ページの説明。
セルフテストの質問
- しきい値 0.5 が常に正しいとは限らないのはなぜですか?
- 精度よりも再現を優先する必要があるのはどのような場合ですか?
- ROC-AUC は高いが、ビジネス成果は依然として悪い。その理由は何でしょうか?