機械学習

ロジスティクス回帰分析の尤度関数の最適解を算出するクラスを作成してみた

以下の記事で、ロジスティック回帰分析に従う、アヤメがvirginicaである確率\(p\)の計算式を算出してきた。

(分類を行う)ロジスティック回帰分析の相乗モデルから発生確率を計算してみた 代表的な機械学習フレームワークであるscikit-learnに、アヤメのデータセットが含まれているため、これを利用したアヤメの分類を...

上記記事で算出した確率\(p\)の計算式は、petal length (cm)を\(\mathrm{pl}\)、petal width (cm)を\(\mathrm{pw}\)と記載すると、以下の通り。
\[
\begin{eqnarray}
p &=& \displaystyle \frac{1}{1 + \exp{ \{ -(b + {a_1}{x_1} + {a_2}{x_2}) \} }} \\\\
p &:& アヤメが\mathrm{virginica}である確率 \\
B &:& 条件0(\mathrm{pl}<5、かつ、\mathrm{pw}<1.7)のオッズ \\
A_1 &:& (条件0に対する)条件1(\mathrm{pl}≧5)のオッズ比 \\
x_1 &:& (条件1に対する)0か1の値 \\
A_2 &:& (条件0に対する)条件2(\mathrm{pw}≧1.7)のオッズ比 \\
x_2 &:& (条件2に対する)0か1の値 \\
b &:& \log B \\
a_1 &:& \log A_1 \\
a_2 &:& \log A_2
\end{eqnarray}
\]

また、以下の記事で、ロジスティクス回帰分析の対数尤度関数の偏微分を算出している。

ロジスティクス回帰分析の対数尤度関数を偏微分してみた 以下の記事で、ロジスティック回帰分析に従う、アヤメがvirginicaである確率\(p\)の計算式を算出してきた。 https...

今回は、ロジスティクス回帰分析の対数尤度関数の偏微分の式を利用して、確率\(p\)の最適解\(b\), \(a_1\), \(a_2\)を算出を行い、確率pからアヤメがvirginicaかどうか判定するクラスを作成してみたので、そのサンプルプログラムを共有する。

確率\(p\)の最適解\(b\), \(a_1\), \(a_2\)を算出を行うクラスの内容は、以下の通り。

上記クラスの「__logictic_reg」メソッドでは、以下の更新式を繰り返しているが、対数尤度関数\(\log L\)は上に凸のグラフになるため、\(η\)の前の符号は+になっている。

最急降下法
出所:最急降下法の仕組みをイラストでわかりやすく解説

また、上記OrigLogisticRegressionLineクラスのfitメソッドを呼び出して、確率\(p\)の最適解\(b\), \(a_1\), \(a_2\)を算出した結果は、以下の通り。

アヤメがvirginicaである確率pの最適解を算出するクラスのfitメソッド呼出

OrigLogisticRegressionLineクラスのfitメソッド呼出時に、入力データの変換を行った結果を出力している。また、「最終的に算出されたda_1,da_2,db」を確認すると、da_1,da_2,dbのいずれも、0に近い値に収束できていることが確認できる。



Code VillageはJavaScriptを中心としたサポート体制が充実したプログラミングスクールだったJavaScriptや、JavaScriptのフレームワーク「React」「Vue」を中心にオンラインで学習できるプログラミングスクール...

さらに、確率\(p\)の最適解\(b\), \(a_1\), \(a_2\)を算出を行うクラスに、確率\(p\)を算出し(\(p\)が\(0.5\)以上かどうかで)判定結果を返却するpredictメソッドを追加した結果は、以下の通り。

また、上記OrigLogisticRegressionLineクラスのfit・predictメソッドを呼び出して、確率pからアヤメがvirginicaかどうか判定した結果は以下の通りで、想定通りの判定結果が返却されていることが確認できる。

アヤメがvirginicaである確率pの最適解を算出するクラスのfit・predictメソッド呼出

要点まとめ

  • ロジスティック回帰分析の確率\(p\)の最適解は、対数尤度関数の偏微分を用いて、最急降下法により算出できる。