線形回帰とロジスティック回帰 | 教師あり学習のアルゴリズム | モデルのアルゴリズムと学習方法 | 機械学習入門

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

線形回帰とロジスティック回帰

線形回帰とは?

線形回帰(Linear Regression)は、与えられた入力変数と出力変数の間に線形な関係がある場合に使用される回帰アルゴリズムです。このアルゴリズムは、目的変数(出力)を説明変数(入力)によって予測することを目的とします。モデルは次のように表されます。

Y = w0 + w1X1 + w2X2 + … + wnXn

ここで、Y は予測される出力、X1, X2, …, Xn は入力変数、w0, w1, …, wn はモデルが学習するパラメータです。このモデルは、最も誤差が少ないように重みパラメータを調整します。

線形回帰の損失関数

線形回帰では、モデルの性能を評価するために、予測値と実際の値の差を最小化する必要があります。これは損失関数を最小化することで達成されます。最も一般的な損失関数は「平均二乗誤差(Mean Squared Error, MSE)」で、次のように定義されます。

MSE = (1/n) Σ (Yi – Ŷi)2

ここで、Yi は実際の値、Ŷi はモデルが予測した値、n はデータの数です。この誤差を最小化することで、モデルの予測精度が向上します。

ロジスティック回帰とは?

ロジスティック回帰(Logistic Regression)は、分類問題に使用される教師あり学習のアルゴリズムです。特に、二値分類(データを2つのクラスに分類する)でよく使われます。ロジスティック回帰の目的は、与えられたデータが特定のクラスに属する確率を予測することです。モデルは次の形式で表されます。

P(Y=1|X) = 1 / (1 + e-z)

ここで、z = w0 + w1X1 + … + wnXn は線形結合された入力です。P(Y=1|X) は、入力データ X がクラス1に分類される確率を表しています。この形式はシグモイド関数と呼ばれ、確率が0から1の間に正規化されます。

ロジスティック回帰の損失関数

ロジスティック回帰では、正しいクラスに分類される確率を最大化するための損失関数として「交差エントロピー(Cross-Entropy)」が使用されます。この損失関数は次のように定義されます。

L(Y, Ŷ) = – (1/n) Σ [Yi log(Ŷi) + (1 – Yi) log(1 – Ŷi)]

ここで、Yi は実際のラベル、Ŷi は予測された確率です。交差エントロピーは、予測された確率と実際のクラスラベルがどれだけ一致しているかを評価し、この損失を最小化することで分類精度が向上します。

線形回帰とロジスティック回帰の違い

線形回帰とロジスティック回帰は、どちらも回帰という名称が付いていますが、目的や適用範囲が異なります。

  • 目的の違い: 線形回帰は連続値の予測を行い、ロジスティック回帰は確率に基づく二値分類を行います。
  • 出力の違い: 線形回帰では予測値が任意の連続値となる一方、ロジスティック回帰では予測は0から1の間の確率となります。
  • 損失関数: 線形回帰では平均二乗誤差(MSE)を最小化し、ロジスティック回帰では交差エントロピーを最小化します。

線形回帰とロジスティック回帰の可視化

次のグラフは、線形回帰とロジスティック回帰の予測結果をそれぞれグラフとして可視化するものです。

線形回帰

青い点がデータ点を示し、赤い線が線形回帰モデルによる予測結果を示しています。

ロジスティック回帰

青い点がデータ点を示し、赤い線がロジスティック回帰モデルによる予測確率を示しています。

参考:pythonによるコード


import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression, LogisticRegression

# 線形回帰データの生成
X = np.array([[1], [2], [3], [4], [5]])
y_linear = np.array([1, 2, 3, 3.5, 5])
linear_model = LinearRegression()
linear_model.fit(X, y_linear)
y_pred_linear = linear_model.predict(X)

# ロジスティック回帰データの生成
y_logistic = np.array([0, 0, 0, 1, 1])
logistic_model = LogisticRegression()
logistic_model.fit(X, y_logistic)
y_pred_logistic = logistic_model.predict_proba(X)[:, 1]

# 線形回帰の可視化
plt.scatter(X, y_linear, color='blue', label='Data')
plt.plot(X, y_pred_linear, color='red', label='Linear Regression')
plt.title('Linear Regression')
plt.legend()
plt.show()

# ロジスティック回帰の可視化
plt.scatter(X, y_logistic, color='blue', label='Data')
plt.plot(X, y_pred_logistic, color='red', label='Logistic Regression')
plt.title('Logistic Regression')
plt.legend()
plt.show()

まとめ

線形回帰は、連続的な値を予測するために使用されるシンプルな回帰モデルで、データの線形な関係を捉えます。一方、ロジスティック回帰は、分類問題に適用され、特に二値分類に優れたモデルです。どちらのモデルも、与えられたデータに基づいて最適なパラメータを学習し、損失関数を最小化することで性能を向上させます。

注意点

  • 線形回帰は、データが線形な関係にある場合にのみ適切です。データに非線形な関係がある場合、モデルの精度が低下します。
  • ロジスティック回帰は、クラス間のデータが完全に分離されている場合にうまく動作しないことがあります。データが完全に分離されている場合、モデルが極端な重みを学習するためです。
  • どちらのモデルも、適切な正則化やデータ前処理を行うことで、より良い性能を発揮します。