アクチュアリーはデータサイエンスの夢を見るか?

Rで保険数理と機械学習をやっています

2次判別分析をRでやってみた(スイス銀行紙幣②)

前回の記事に引き続いて機械学習のトピックを取り上げます。今回は2次判別分析を行います。

線形判別分析では、「群団間で分散が等しい」という前提を用いる弱点があることは前回お話ししました。一方で、「群団間で分散が異なる」場合に対応した手法が2次判別分析になります。

前回の記事と同様にスイス銀行紙幣のデータについて、2次判別分析を実行していきます。

まずは、下部マージン(bottom)と対角線の長さ(diagonal)の2変数に絞って2次判別分析を行った場合です。

f:id:r_std:20160504095008p:plain

赤色で示した真札群よりも、緑色で示した偽札群の方が分散が大きいことを反映して凸型の判別関数を描くことができました。

 

データセットの全変数を用いて実行した結果は次の通りです。

> table(test_qda$class,test_y)
test_y

  真札 偽札
真札 49 0
偽札 1 50

線形判別と変わらない結果となりました。誤識別されたデータを調べてみます。

f:id:r_std:20160504100515p:plain

ピンク色で示された点が誤識別されたデータになります。真札に含まれる1件の外れ値に対応できなかったようです。

線形判別、2次判別に共通する弱点として、境界から離れたデータに左右されやすいという点が挙げられます。スイス銀行紙幣のデータでは各群団がまとまって分布していましたが、分布が一様になっているケースなどでは、群団間の境界から離れたデータによって平均、分散が左右され狙い通りの境界を引けない危険性があります。

契約者から取得したデータを保険料率に織り込むことを考える場合、判別分析は汎化能力に優れ、かつ契約者の理解を得られやすいと考えられるものの、コストやプライバシーの観点からどの変数を取得・利用するかが論点になると予想されます。

今回使用したソースコードは次の通りです。

QDA

続編として、以下の記事を作成しました。

r-std.hatenablog.com