Probabilistic Programming: Softmax Regression

Ref: Baysian Analysis with Python by Osvaldo Martin
?????????????????-
これまでのロジスティック回帰では、0か1かという2クラスを扱ってきたが、3つ以上のクラスを扱うソフトマックス回帰。
機械学習の分類に用いられてるやつだ!

ソフトマックス関数は、
softmax_i(μ) = exp(μ_i)/Σ exp(μ_k)
で、この関数のi番目の要素を和した左辺の合計は1となる(つまりK=1の場合は、ロジステック回帰!)。
ソフトマックス回帰では、ロジスティック回帰におけるベルヌイ分布(コイン投げ)への当てはめを、カテゴリカル分布(サイコロ投げ)に置き換える。
再び、IRISデータを用いる。3つのspecies(setosa, vesicolor, virginica)と、4つの特徴(sepal_length, sepal_width, petal_length, petal_width)を使って分析するが、データを平均値の差をとって標準化しておく。

このあと、import theano.tensor as ttで呼び出されているTheanoライブラリのソフトマックス関数を用いる。
αはそれぞれのspecies用に3つ確保。βは、それぞのれspecies3種と4つの特徴で3×4=12個。

データの精度を、結果と観測値の比較において評価してみる。

およそ98%の精度で分類できていることが解る。
ソフトマックス回帰モデルで、分類の一つは、他の分類にはまらないものとしてパラメータを固定した場合