Gakushukun1’s diary

20代エンジニア, 統計的機械学習勉強中 twitter: @a96665004

ニューラルネットを用いた毒キノコの判定における入力次元削減

目的

キノコの外見的特徴のベクトルからニューラルネットを用いて毒キノコかの判定を行う. その際, 入力ベクトルのうちL1正則化を用いて不要な次元を削減する.


今回使用したデータセットMachine Learning RepositoryMushroom Data Setである. このデータセットはキノコの外見的特徴を表す22次元のベクトルと, そのキノコが毒キノコか食べられるキノコかを示す真のラベルのセットで構成されている.

この識別を行うにあたって構築したニューラルネットは次の図の通り.
f:id:gakushukun1:20190516235550p:plain

22次元の入力に対し, 中間層のユニット数を5とし, 最終的な出力は食べられるなら0, 毒キノコならば1となるようにした. なお各層の活性化関数はシグモイド関数である.
学習の際には, 全8124個あるデータのうち, 半分の4062個を訓練データとし, 残りの6500個のデータはテストデータとした. このデータセットは, いくつかのルールベースの方法によって簡単に分類できることが知られており(同梱の説明書参照), ニューラルネットで学習する場合はL1正則化のハイパーパラメータをかなり大きくしても, テストデータに対して100%近い識別率を出すことができる.
そこで、今回はハイパーパラメータ \lambda 0.01とかなり大きめに設定し, なるべく結合がスパースになるよう学習させた.
f:id:gakushukun1:20190516235133p:plain

100エポックだけ学習を繰り返した結果, 学習後のネットワークは上の図のようになった. ただし, 赤が正の結合, 青が負の結合を表しており, 結合荷重の絶対値が0.1より大きい結合のみ表示している. 最終的な訓練データに対する識別率は98.65%, テストデータに対する識別率は99.24%となった.
テストデータについての説明書によると, 上の図で入力19にあたるspore-print-color()がgreen=緑かどうかで, 99.41%の 識別率を出すことができるとある. 今回のニューラルネットの学習結果にも入力19から出力の結合が残っているため, この部分の情報が推論に強い影響を与えている可能性がある.

まとめ

L1正則化を用いて, 入力次元の削減をする方法により, 毒キノコの判定を行った.