順序回帰が使用できるケース
多クラス分類のうち、各クラス間に順番や関係性が存在する際に利用できる。
例えば、優先順位「低・中・高」の3クラスに分ける場合や、何らかの点数「1〜5点」という5クラスに分類する場合など。
順序回帰のアイディア
順序回帰では、惜しい間違いを学習に反映させたいというアイディアに基づいている。
つまり、上の3クラス分類で「クラス高」のものを「クラス低」と間違えた場合よりも、「クラス高」のものを「クラス中」と間違えた場合の方が正解に近く、同じ間違いでも損失の大きさが違うだろうということである。
順序回帰の方法
例えば3クラス分類の場合に正解クラスがクラス3なら、通常のクラス分類では[0, 0, 1]
のようなハードラベルを使って損失関数にターゲットベクトルを与える。
これを、順序回帰では[0.09003057317038046, 0.24472847105479764, 0.6652409557748218]
のようなソフトラベルで与える。
この時のベクトルの要素は、以下のようにクラス間の距離$|\bar{k}(正解クラス) – k(クラス)|$をマイナスした値をソフトマックス関数に代入することで得られる。
$$ d_k = \frac{exp(-|\bar{k}-k|)}{\sum_{i=1}^K exp(-|\bar{k}-i|)} $$なので、ネットワークは通常通りに組んで、損失を計算する際に与えるターゲットベクトルを差し替えれば、順序回帰が実現できる。