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



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. ロジスティック回帰とロジット


離散値をとる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 \) を更新していきます。

