データサイエンスがやりたいSEの備忘録

機械学習とかPythonに興味があります。アウトプットをどうしようか悩んでとりあえず試験的に始めてみた。

第3章:ベイズの識別規則_03

ベイズの識別規則による分類と条件付きベイズの誤り率

事後確率が大きい方に分類する
つまり条件付きベイズの誤り率は分類されなかった方の事後確率となる。

識別 識別の判断 事後確率 条件付きベイズ誤り率
f:id:fenruru:20190303233850p:plain f:id:fenruru:20190303232920p:plain f:id:fenruru:20190303233020p:plain f:id:fenruru:20190303233107p:plain
f:id:fenruru:20190303233914p:plain f:id:fenruru:20190303233006p:plain f:id:fenruru:20190303233033p:plain f:id:fenruru:20190303233127p:plain

要するに条件付きベイズの誤り率は下記のように表現できる。
f:id:fenruru:20190303233216p:plain

ベイズ誤り率

ベイズ誤り率は領域R1とR2における条件付きベイズ誤り率の期待値として表現される。
(R2に分類された時のC1の事後確率 + R1に分類された時のC2の事後確率)
f:id:fenruru:20190303233340p:plain

図で表すと下記のようになる
f:id:fenruru:20190303233358j:plain

※参考:積分とは?
関数f(x)を使って囲まれた部分の面積を求めること。
上の例だと、
    関数p(x|C1)p(C1)dxで囲まれたR2~の範囲の面積 +
    関数p(x|C2)p(C2)dxで囲まれたR1~の範囲の面積
を求めていることになる。

最小損失基準に基づくベイズの識別規則

クラスに分類する際、必ずしも発生する危険性がクラス間で対象であるとは限らない。

(例)
A:健康な人が病気と判断される
B:病気の人が健康と判断される
⇒Bの方がリスクが高い

そこで損失を導入する。(真のクラスがCjのとき、Ciと判断して被る損失)
f:id:fenruru:20190303233452p:plain
 真 判定

各クラスにおける損失の定義

2クラス分類の場合の損失

概要 損失 損失行列
クラスC1と判断することによって被る損失 f:id:fenruru:20190303233652p:plain f:id:fenruru:20190303233706p:plain
クラスC2と判断することによって被る損失 f:id:fenruru:20190303233718p:plain f:id:fenruru:20190303233730p:plain

損失の期待値
f:id:fenruru:20190303233810p:plain

損失による識別(損失が最小のクラスを選ぶ)

概要 識別の判断
f:id:fenruru:20190303233850p:plain f:id:fenruru:20190303234011p:plain
f:id:fenruru:20190303233914p:plain f:id:fenruru:20190303234023p:plain

その他の識別方法①真の判断を誤ったときの方が真を真と判断するときより損失が大きいと仮定

概要 識別の判断
f:id:fenruru:20190303233850p:plain f:id:fenruru:20190303234123p:plain
f:id:fenruru:20190303233914p:plain f:id:fenruru:20190303234134p:plain

その他の識別方法②尤度比を利用

概要 識別の判断
f:id:fenruru:20190303233850p:plain f:id:fenruru:20190303234222p:plain
f:id:fenruru:20190303233914p:plain f:id:fenruru:20190303234232p:plain

損失関数を導入したことによって識別境界が移動する例
(病気を健康と判断した方が損失が大きいと定義する)
f:id:fenruru:20190303234329j:plain