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

現在作成中です。今後加筆修正してまいります。
スポンサーリンク
スポンサーリンク

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

ロジスティック回帰(Logistic Regression)は、分類問題において最も基本的でありながら、非常に強力なアルゴリズムの一つです。名前に「回帰」と含まれていますが、実際には2値分類(バイナリ分類)に利用されるアルゴリズムです。この記事では、ロジスティック回帰の基本的な概念とPythonでの実装について説明します。

ロジスティック回帰とは

ロジスティック回帰は、分類問題に適用される手法で、確率的な出力を提供します。予測される確率を0と1の間に制限し、その確率に基づいてクラスラベルを決定します。例えば、ある患者が病気にかかっているかどうかを予測する場合、ロジスティック回帰はその患者が病気にかかっている確率を返し、0.5以上の場合は「陽性」、0.5未満の場合は「陰性」と分類されます。

ロジスティック回帰の基本的な数式

ロジスティック回帰の基本式は、シグモイド関数を用いて次のように表されます:

y = 1 / (1 + exp(- (b0 + b1 * x1 + b2 * x2 + ... + bn * xn)))

ここで、yは予測される確率、b0は切片(バイアス)、b1bnは各特徴量の係数、x1xnは特徴量を表します。このシグモイド関数を使って、予測された確率が0〜1の間に収まります。

Pythonでのロジスティック回帰の実装

次に、scikit-learnライブラリを使用して、ロジスティック回帰をPythonで実装する方法を紹介します。

ライブラリのインストール

!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}")

このコードでは、ロジスティック回帰モデルを作成し、訓練データで学習を行います。その後、テストデータを用いて予測を行い、正解率を評価します。

モデルの評価

ロジスティック回帰モデルの評価には、正解率以外にもいくつかの方法があります。例えば、混同行列やROC曲線などがよく使用されます。

混同行列の表示

from sklearn.metrics import confusion_matrix
import seaborn as sns
import matplotlib.pyplot as plt

# 混同行列を作成
cm = confusion_matrix(y_test, y_pred)

# ヒートマップで可視化
sns.heatmap(cm, annot=True, fmt="d")
plt.xlabel('予測値')
plt.ylabel('実測値')
plt.show()

混同行列は、モデルの分類がどれだけ正確であるかを視覚的に示すための重要なツールです。ヒートマップとして表示することで、誤分類されたデータの数を把握しやすくなります。

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

ロジスティック回帰は、次のような様々な応用分野で使用されています。

  • スパムメールのフィルタリング
  • 顧客の購入予測
  • 医療診断における疾患の予測
  • マーケティングキャンペーンの効果予測

まとめ

ロジスティック回帰は、分類問題において非常に基本的でありながら強力なアルゴリズムです。シンプルな数式で扱いやすく、データの分類において多くの応用が可能です。また、Pythonのscikit-learnを使用することで、簡単に実装することができます。今回の例では、乳がんデータセットを用いた分類問題を解きましたが、他のデータセットでも同様の手法を適用することができます。