INDEX
ロジスティック回帰の基礎と実装
ロジスティック回帰(Logistic Regression)は、分類問題でよく使われる基本的な機械学習アルゴリズムです。名前に「回帰」とありますが、主に「陽性か陰性か」「購入するかしないか」などの2値分類に利用されます。
ロジスティック回帰では、入力された特徴量から「あるクラスに属する確率」を求め、その確率をもとに分類を行います。
ロジスティック回帰の仕組みを図で理解する

ロジスティック回帰とは
ロジスティック回帰は、あるデータが特定のクラスに属する確率を予測する手法です。
例えば、患者の検査データから「病気である確率」を計算し、その確率が一定のしきい値以上であれば「陽性」、それ未満であれば「陰性」と分類します。
- スパムメールかどうかを判定する
- 顧客が商品を購入するかを予測する
- 病気の可能性を判定する
- 退会する可能性を予測する
シグモイド関数による確率への変換
ロジスティック回帰では、線形回帰のように特徴量を重み付きで足し合わせた値を作り、それをシグモイド関数に通して0〜1の確率に変換します。
y = 1 / (1 + exp(-(b0 + b1 * x1 + b2 * x2 + ... + bn * xn)))
この式によって、どれだけ大きな値や小さな値が入力されても、出力は0〜1の範囲に収まります。
| 値 | 意味 |
|---|---|
| 0に近い | 陰性クラスである可能性が高い |
| 0.5付近 | 判断が分かれやすい |
| 1に近い | 陽性クラスである可能性が高い |
しきい値による分類
ロジスティック回帰の出力は確率です。そのため、分類を行うにはしきい値を設定します。
一般的には、しきい値を0.5として分類します。
| 予測確率 | 分類結果 |
|---|---|
| 0.5以上 | 陽性 |
| 0.5未満 | 陰性 |
ただし、医療診断や不正検知のように見逃しを避けたい場面では、しきい値を調整することもあります。
Pythonでのロジスティック回帰の実装
Pythonでは、scikit-learnを使ってロジスティック回帰を簡単に実装できます。
ライブラリのインストール
pip install scikit-learn
データセットの準備
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_breast_cancer
# 乳がんデータセットを読み込み
data = load_breast_cancer()
X = data.data
y = data.target
# 訓練データとテストデータに分割
X_train, X_test, y_train, y_test = train_test_split(
X,
y,
test_size=0.2,
random_state=42
)
この例では、乳がんデータセットを使って、診断結果を分類するモデルを作成します。
ロジスティック回帰モデルの作成と学習
from sklearn.linear_model import LogisticRegression
from sklearn.metrics import accuracy_score
# ロジスティック回帰モデルの作成
model = LogisticRegression(max_iter=10000)
# モデルの学習
model.fit(X_train, y_train)
# テストデータで予測
y_pred = model.predict(X_test)
# 正解率の評価
accuracy = accuracy_score(y_test, y_pred)
print(f"ロジスティック回帰の正解率: {accuracy:.3f}")
このコードでは、訓練データでモデルを学習し、テストデータに対して分類を行っています。
モデルの評価
ロジスティック回帰の評価では、正解率だけでなく、混同行列、再現率、適合率、F1スコアなども確認するとよいです。
混同行列の表示
from sklearn.metrics import confusion_matrix
import matplotlib.pyplot as plt
# 混同行列を作成
cm = confusion_matrix(y_test, y_pred)
print(cm)
混同行列を使うと、陽性・陰性の分類がどの程度正しく行われたかを確認できます。
ロジスティック回帰の特徴
| 特徴 | 内容 |
|---|---|
| 出力 | 0〜1の確率 |
| 主な用途 | 2値分類 |
| 解釈性 | 比較的高い |
| 計算コスト | 比較的低い |
| 向いているデータ | 線形に分離しやすいデータ |
ロジスティック回帰の応用例
- スパムメールの判定
- 顧客の購入予測
- 医療診断における疾患予測
- 広告クリック率の予測
- 退会や解約の予測
ロジスティック回帰を使う際の注意点
- 特徴量のスケールを揃えると学習が安定しやすい
- 線形に分離しにくいデータでは性能が出にくいことがある
- しきい値によって分類結果が変わる
- クラス不均衡がある場合は正解率だけで判断しない