ロジスティック回帰の基礎と実装 | 分類アルゴリズム | Pythonによる機械学習を学ぶ

スポンサーリンク
スポンサーリンク
amazon
スマイルSALE
--:--:--
~
ad. 価格範囲を指定して商品を探せます

ロジスティック回帰の基礎と実装

ロジスティック回帰(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値分類
解釈性 比較的高い
計算コスト 比較的低い
向いているデータ 線形に分離しやすいデータ

ロジスティック回帰の応用例

  • スパムメールの判定
  • 顧客の購入予測
  • 医療診断における疾患予測
  • 広告クリック率の予測
  • 退会や解約の予測

ロジスティック回帰を使う際の注意点

  • 特徴量のスケールを揃えると学習が安定しやすい
  • 線形に分離しにくいデータでは性能が出にくいことがある
  • しきい値によって分類結果が変わる
  • クラス不均衡がある場合は正解率だけで判断しない