ロジスティック回帰と分類問題・流れ・ロジット・偏回帰係数について

はるか
はるか
ロジスティック回帰って、クラスの確率を予測する。
ふゅか
ふゅか
そうそう!例えばメールがスパムかどうかを予測するみたいに、2つのクラスに分ける問題で使えるわ!

1. ロジスティック回帰

ロジスティック回帰(Logistic Regression)は、分類問題に用いられる統計モデルで、特に二値分類(2つのクラスに分類する問題)に適しています。このモデルは、入力データからクラスの所属確率を予測するために使用されます。例えば、電子メールがスパムかスパムでないかを判定する場合などに用いられます。

ロジスティック回帰の基本的なアイデアは、次のとおりです。

まず、線形回帰と同様に、説明変数(特徴量)と重み(係数)を使って線形結合を行います。

\[ z = w_1 x_1 + w_2 x_2 + \dots + w_n x_n + b \]

ここで、\(w_1, w_2, \dots, w_n\) はモデルのパラメータ(偏回帰係数)、\(x_1, x_2, \dots, x_n\) は入力特徴量、\(b\) はバイアス項です。

線形結合の結果 \(z\) を、そのままクラスを予測するために使うのではなく、シグモイド関数を通して、0から1の範囲に変換します。

\[ \hat{y} = \frac{1}{1 + e^{-z}} \]

ここで、\(\hat{y}\) はクラスが「1」である確率を表します。

予測確率 \(\hat{y}\) が0.5以上ならクラス「1」、それ未満ならクラス「0」として分類します。

1.1. 例:カレーの辛さを予測するロジスティック回帰モデル

あなたは、カレーの辛さが「辛口」か「甘口」かを予測したいとします。モデルの特徴量として、スパイスの量とココナッツミルクの量を使います。

特徴量:

  • \(x_1\) = スパイスの量(g)
  • \(x_2\) = ココナッツミルクの量(ml)

モデルのパラメータ:

  • 重み(係数): \(w_1 = 0.8\), \(w_2 = -0.5\)
  • バイアス: \(b = -0.2\)

例えば、スパイスの量が10g、ココナッツミルクが200mlのカレーがあったとします。この場合、次のように線形結合を計算します。

\[ z = w_1 x_1 + w_2 x_2 + b = 0.8 \times 10 + (-0.5) \times 200 + (-0.2) = 8 - 100 - 0.2 = -92.2 \]

次に、この結果をシグモイド関数に通して、「辛口」である確率を求めます。

\[ \hat{y} = \frac{1}{1 + e^{-z}} = \frac{1}{1 + e^{92.2}} \approx 0 \]

予測確率 \(\hat{y} \approx 0\) は0.5未満なので、クラス「0」(カレーは甘口)と予測されます。

ココナッツミルクが多い場合、カレーは「甘口」である可能性が高いと予測されます。

2. ロジスティック回帰のモチベーション

2.1. ロジスティック回帰とロジット

ふゅか
ふゅか
次はlogit関数について触れてるわね。これがロジスティック回帰のモチベーションになってるんだ!
はるか
はるか
logit関数は、確率pを無限の範囲に変換する。

離散値をとる2値分類の問題において、連続的な予測値を扱えるようにしたい。ここで、クラスが離散値の0か1に分類される状況を考えます。この場合、logit関数を使うことで、0から1の間にある確率\( p \)を無限の範囲に変換できます。

logit関数は以下の式で定義されます。

\[ \text{logit}(p) = \log\left(\frac{p}{1 - p}\right) \]

この関数は、確率\( p \)を無限の範囲に変換します。具体的には、\( p = 0 \)のときlogit関数は\(-\infty\)になり、\( p = 1 \)のときには\(\infty\)になります。

ロジスティック回帰は、このlogit関数を線形和で表現することで、説明変数と出力の関係をモデル化します。次のような式で表せます。

\[ \log\left(\frac{p}{1 - p}\right) = w_1 x_1 + w_2 x_2 + \dots + w_n x_n + b \]

ここで、\( w_1, w_2, \dots, w_n \)はそれぞれの説明変数に対応する重み(偏回帰係数)で、\( x_1, x_2, \dots, x_n \)は説明変数、\( b \)はバイアス項です。この式は、説明変数の線形結合が確率のlogitに対応していることを示しています。

次に、このlogit関数の逆関数を求めてみましょう。logit関数の逆関数は、与えられた線形結合から確率\( p \)を直接計算するために使われます。

\[ z = w_1 x_1 + w_2 x_2 + \dots + w_n x_n + b \]

この\( z \)を使って、logit関数の両辺を変形していきます。

\[ \log\left(\frac{p}{1 - p}\right) = z \]

\[ \frac{p}{1 - p} = e^z \]

ここから、\( p \)を解いていきます。まずは両辺を整理して、

\[ p = (1 - p)e^z \]

\[ p(1 + e^z) = e^z \]

\[ p = \frac{e^z}{1 + e^z} \]

最終的に、分子分母を$e^z$で割ると、\( p \)は次のように表せます。

\[ p = \frac{1}{1 + e^{-z}} \]

これがlogit関数の逆関数であり、ロジスティック変換と呼ばれるものです。この逆関数を使うことで、線形和から直接、クラス1に属する確率\( p \)を求めることができます。

2.2. 偏回帰係数の推定

説明変数に対応する重み(偏回帰係数)として、\( w_1, w_2, \dots, w_n \)がありますが、これらの係数を推定する必要があります。偏回帰係数を推定するためには、最尤法を使用します。

ここで、データが \( n \) 個あると仮定します。各データ点に対して、確率 \( p_i \) を設定し、出力 \( y_i \) が \( 0 \) または \( 1 \) であるとします。具体的には、以下のような場合を考えます。

  • \( y_i = 0 \) のとき、その確率は \( 1 - p_i \) となります。
  • \( y_i = 1 \) のとき、その確率は \( p_i \) となります。

このような場合、全体の確率の積(尤度) \( L \) は次のように表されます。

\[ L = \prod_{i=1}^{n} p_i^{y_i} (1 - p_i)^{(1 - y_i)} \]

この式の意味をもう少し確認する。

出力 \( y_i \) が \( 0 \) のとき、式中の \( p_i^{y_i} \) は \( p_i^0 = 1 \) となり、\( (1 - p_i)^{(1 - y_i)} \) は \( (1 - p_i)^1 = 1 - p_i \) となります。

一方で、\( y_i = 1 \) のときは、\( p_i^{y_i} = p_i \) となり、\( (1 - p_i)^{(1 - y_i)} = (1 - p_i)^0 = 1 \) となります。

これによって、尤度はデータ全体の確率の積として表現できるのです。

次に、この尤度 \( L \) を最大化するためには、対数を取った対数尤度 \( \log L \) を考えます。対数尤度は次のように表されます。

\[ \log L = \log \prod_{i=1}^{n} p_i^{y_i} (1 - p_i)^{(1 - y_i)} \]

この積の対数を展開すると、次の式になります。

\[ \log L = \sum_{i=1}^{n} y_i \log p_i + (1 - y_i) \log (1 - p_i) \]

この式は、各データ点 \( y_i \) に対する確率の寄与を加算する形で表されています。

はるか
はるか

最後に、確率 \( p_i \) は次の式で計算されます。この式はロジスティック回帰モデルに基づいており、説明変数 \( x_1, x_2, \dots, x_n \) の線形結合をもとに \( p \) を計算します。

\[ p = \frac{1}{1 + e^{-(w_1 x_1 + w_2 x_2 + \dots + w_n x_n + b)}} \]

ここで、\( w_1, w_2, \dots, w_n \) は偏回帰係数、\( b \) は切片項です。この確率を計算した後、ニュートン法などの最適化手法を用いて、対数尤度 \( \log L \) を最大化するように重み \( w \) を更新していきます。

ふゅか
ふゅか
偏回帰係数の推定には最尤法を使うのも重要だわ。データに対して確率を最大にするように重みを調整するの。
はるか
はるか
対数尤度を最大化して、重みを更新。
PR