1. ベイズの識別規則は、これを見て学べ!- 第3回「はじめてのパターン認識」読書会まとめ【CodeIQ提供】 #はじパタ

ベイズの識別規則は、これを見て学べ!- 第3回「はじめてのパターン認識」読書会まとめ【CodeIQ提供】 #はじパタ

 2013年7月16日(火)にグラントウキョウサウスタワーにて、@Prunus1350さん主催の第3回「はじめてのパターン認識」読書会が開催されました。 

 当日は、書籍「はじめてのパターン認識」の第3章「ベイズの識別規則」を読み進めていき、最後にはライトニングトークで締めくくられました。

 こちらでは第3回 「はじめてのパターン認識」 読書会にお邪魔し、約2時間に渡るアツい内容をまとめてお届けします。
また今回の勉強会のまとめ記事は、株式会社リクルートキャリアが運営する、ITエンジニアのための実務スキル評価サービス「CodeIQ」 の提供で運営されています。ぜひ、一度アクセスしてみて下さい!

(当日の会場の様子)

第3章「ベイズの識別規則」前半

まず、始めに@_kobackyさんによる、第3章「ベイズの識別規則」前半のセッションが行われました。

<ベイズの定理>

x:観測データ Ci: 識別クラス
ベイズの識別規則は、ベイズの定理で定義される最大事後確率が最も大きなクラスに観測データを分類する 。ベイズの定理は「事前確率」「事後確率」「クラス条件つき確率(尤度)」「周辺確率」の4つからなる。



<事後確率>
観測データxが与えられた下で、それがクラスCiに属する条件付き確率

<事前確率>
Ciの生起確率で、データを観測する前から分かっている確率



<尤度>
クラスCiが与えられた下での観測データxの確率分布

<周辺確率>
観測データxの生起確率。全てのクラスに対する観測データxの同時確率を合計(周辺化)することで得られる。

<最大事後確率基準による識別>

識別においては、観測データxに対して事後確率が一番大きなクラスを採用する。事前確率p(x)はクラスが異なっても一定であるため、識別においては無視できる。

ベイズ識別規則の例

<状況設定>

 上記の観測データから「健康な人(G=1)」「健康でない人(G=0)」を識別したい。
・「喫煙している(S=1)」or「喫煙してない(S=0)」
・「飲酒している(T=1)」or「飲酒していない(T=0)」
ある街の住人からランダムに(識別モデル作成用に)1000人サンプリング。


<演算の目標>
 最終的に求めたいものはS、T、G全ての組み合わせ(8通り)における事後確率。右辺の確率を順番に演算していく。

<事前確率の演算>
P(G=1)=800/1000=4/5
P(G=0)=200/1000=1/5

<尤度の演算>

条件付き独立 P(S,T|G)= P(S|G)P(T|G)を仮定する。

<周辺確率の演算>

 周辺化によりP(S,T)を演算。
①→②:P(S,T,G)= P(S,T|G)X P(G)
②→③:P(S,T)= P(S,T,G=0)+ P(S,T,G=1)(←周辺化)

<事後確率の演算>

 ベイズの定理より事後確率を演算し、観測データS,Tに対して事後確率の大きい方のクラスとして判定される。

<尤度>
 ある観測データxが2つのクラスのどちらであるかを識別する際、 尤度の比と事前確率の比を比べれば識別ができるというだけのお話。

ベイズの識別規則は誤り率最小

<条件付きベイズ誤り率>

ある観測データxが与えられた時、ベイズの識別規則に従って識別を行った場合に誤識別する確率。 

<ベイズ誤り率>
条件付きベイズ誤り率の(xに関する)期待値。

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

<損失の考え方>
 「病気の人を健康であると誤識別するリスク」は「健康な人を病気であると誤識別するリスク」よりも高い。危険性を考慮した識別が必要。
・損失:Lij
 真のクラスがCjであるサンプルをCiと判断することによって被る損失。一般にi=jの時の損失は小さい。
識別対象のクラスがK個ある場合、K×Kの損失行列が定義できる。



<最小損失基準に基づく識別>
観測データxをクラスCiと判断した時に被る損失を定義。

観測データxに対して損失が最も小さいクラスに識別する。

<最小損失基準に基づく識別の例(2クラス)>

 事後確率は下記の通りにする。
P(C1|x)= 0.6
P(C2|x)= 0.4
最大事後確率基準では観測データxはC1と判定される。下記の損失行列を定義する。


<損失>

C2をC1と識別した時の損失が大きいので、最小損失基準に基づく識別ではC2と判定

<損失の定義による識別境界の移動>

健康(C1)と病気(C2)に対して、「健康な人を病気と判断する時の損失が大きい」損失行列を定義。識別境界が左方に移動し、健康と判断されにくくなる。

リジェクト

<リジェクトの概念>
・誤り率の大きな領域で判断を避ける(リジェクトする)
ε(x)>=tとなるxの領域
t:しきい値
・リジェクトを含めた識別規則
最大事後確率が1-tより大きい場合識別を行う 。 全てのクラスの事後確率が1-t以下の場合リジェクト。






<例:t=0.3、K=3の場合の事後確率と識別結果>

<リジェクト率と(誤)認識率の関係>
・認識率
「正答数」/(「全テストデータ数」 ー「リジェクトされたデータ数」)
・誤認識率
「誤り数」/(「全テストデータ数」ー「リジェクトされたデータ数」)
・しきい値との関係
しきい値を下げるとリジェクト率が上がる。しきい値を上げると認識率は上がり誤認識率は下がる





第3章「ベイズの識別規則」前半の資料は、こちらです。

第3章「ベイズの識別規則」後半

続いて、@millionsmileさんによる、第3章「ベイズの識別規則」後半のセッションが行われました。

<受信者動作特性曲線>

 受信者動作特性曲線は、もともとレーダー技術で雑音の中から敵機の存在を検出するための方法として開発された。そのため「受信者動作特性」というレーダーっぽい感じの名前がついているようだが、この計算方法は、分類アルゴリズムの性能評価法として医療分野でよく使われている。


受信者操作特性(じゅしんしゃそうさとくせい、英 Receiver Operating Characteristic, ROC)は、信号処理の概念で、観測された信号 ... し、カットオフポイントを媒介変数 として大から小へと変化させると、下の図のような曲線が描かれる(ROC曲線と呼ばれる )。

<ROC曲線の言葉の定義>

 2クラスの問題の場合、対象xが一つのクラスに属しているかどうかという問題になる。
属していると判断→p(陽性:postive )
属していないと判断→n(陰性:negative)

正しく分類されている→真(True)
間違って分類されている→偽(False)






ROC曲線の求め方

偽陽性→偽のものを真と判断した割合

真陽性 →真のものを真と正しく識別した割合

正確度→真と偽を正しく識別した割合




 適合率→検索された文書中の適合文書の割合。
例:検索エンジンで100件表示されたとき、100件のうち検索者が必要とするページ数の割合

 再現率→適合している全文書から、どれだけ検索できているか(網羅生)
例:検索エンジンで100件表示されたとき、検索者が必要とする全ページのうち何件が100件に含まれているかという割合。ただし、検索者が必要とする全ページ数は分からないので、真陽性率を使って推定を行う。真陽性率だと正しいものの数が正確に分かっているため。



<例題>

適合率と再現率は、なぜトレードオフの関係になるのかを検索エンジンを例に答えよ。

<解答>

 検索エンジンで100件検索されて80件正しかった状況で 、さらに適合率を上げるために誤りを減らそうとすると、必要なページまで検索対象から外すことになるので、80件検索されて75件正しいというようなことになり、結果として再現率が下がる。

ROC曲線は、偽陽性率と真陽性率の関係をグラフにしたもの。

 良いところは、偽陽性率や真陽性率のの計算はそれぞれの偽と真のクラス内で計算するため、クラスのデータ数に大きな差があってもROC曲線には影響を受けない。活用例として、医療では病気のクラスは健康なクラスに比べてデータ数が極端に少ないが、それでも安定した性能評価が期待できる。

<陽性と陰性のクラス分布>

p(x|p*)が陽性のクラス尤度。
p(x|n*)が陰性のクラス尤度 。
識別境界がBのとき、R1の領域が陽性、R2が陰性。陽性クラスのうち、ε1が陰性と判断(偽陽性)、ε2が陽性と判断(偽陽性)と判断されたもの。

ε1を第1種の誤り(miss)、ε2が第2種の誤り。陽性クラスのうち、陽性と判断される場合は1-ε1となる。

ROC曲線による性能評価

 ROC曲線は、クラス間の重なりが少ないほど左上にシフトする。ROC曲線の下側の面積をROC曲線下面積(AUC;area under ROC curve)といい、識別器の性能をあらわす評価尺度として使われる。AUCは1.0〜0.5の間を取り、1.0に近いほど性能が良いと判断できる。1.0(左上の位置)だと、完全な識別器であり、0.5(右上から左下への線)だとランダムな識別器となる。

 ROC曲線が便利なのは、クラスの分布が分からない場合でも構成できる点。ROC曲線はしきい値より大きいと陽性(p)、小さいと陰性(n)と判断する。しきい値をいくつか設定していくことでROC曲線が描かれる。

<AUCはマーケティングにも使える>

 例えば、あるECサイトで高額購入者が何の要素で分類できるか知りたいとする。2クラスにするため、高額購入者グループを1、通常購入者グループを0とし、2項ロジスティック回帰分析にかけてみる。2項ロジスティックだと、オッズ比が求められやすいので、これによってどちらのグループに属しやすいのかが 分かる。例えば、オッズ比が1.5だと1のグループに1.5倍の確率で属しやすくなるといったようなこと。

 ただ、属しやすさが分かったものの、精度がどのくらいかがいまいち分からない。そこでAUCを 使ってみると、より注目して調査する説明変数を絞り込むことができる。

<Rではこう書く>

 2項ロジスティック回帰の求め方。AUCは、caTools、ROCR、Epiなどたくさんあるのだが、ライブラリーによって計算ロジックが異なる。状況に合わせて使った方が良さそう。

第3章「ベイズの識別規則」後半の資料は、こちらです。

LT(ライトニングトーク)

 そして最後に4人から1人10分のLT(ライトニングトーク)が行われた。
そこでは、「ジャックナイフ法 」についてや「Rで学ぶデータサイエンス」、また「scikit-learn」のサービスについての説明が行われるなど、参加者は様々な知識を得ることが出来たであろう。

scikit-learnで始める機械学習の講演資料は、こちらです。
ジャックナイフ法を補足説明してみるの講演資料は、こちらです。

グラフデータベース「Neo4j」の導入の導入の講演資料は、こちらです。
パターン認識 (Rで学ぶデータサイエンス 5)第3章の講演資料は、こちらです。

問題を解くだけで、あなたのエンジニアスキルが分かる

CodeIQ(コードアイキュー)」は、第一線で活躍するITエンジニアが出題した問題に一般ユーザーが無料で“挑戦”し、そのアンサーに対して出題エンジニアから評価フィードバックをもらえるサービスです。  

これまでに「1.4万人」以上が問題に挑戦済み。

社会一般から見たITスキルではなく、その出題エンジニアに自分のスキルがどのように評価されるのかを知ることができます。

自分のITエンジニアとしての能力や市場価値の可視化って難しい。CodeIQで、企業の 第一線で活躍するエンジニアによる実践的な問題に挑戦!その企業におけるリアルな 評価がフィードバックされます。自分のスキルの価値が気になる方は、トライしてみて ...

CodeIQ運営事務局より

サイト上で出題希望者受付も行っています。 また、IT勉強会のスポンサー受付も行っています。 IT勉強会の主催者の方は、 お問い合わせページからご連絡ください。
※ご希望に添えない場合もございます。あらかじめご了承ください。

U-NOTEをフォローしておすすめ記事を購読しよう
この記事を報告する

この記事の関連キーワード