機械が学習してクラスタリングをして判定する話を続けてきました。 この技術は、AI(人工知能)が自動車の自動運転や、顔認識にも応用されていく重要な技術の一つです。今日は、正常か異常かを判定する方法について説明します。
資料はこちら → 異常検知
p.1 2つの方法があります。①「Novelty detection」機械が事前に学習するデータの中に異常が含まれない場合と②「Outer detection」異常が含まれているかもしれない場合です。
p.2 左図のような事前データで学習していた場合、右の▲のような異常データがあった場合、認識ができないことがあります。
p.3 訓練時に正常なデータを赤、テスト時の正常データを青、異常データを緑にプロットしています。これは、ただ表示しているだけで、アルゴリズムは用いていません。
p.4 先ず、コマンドプロンプトで「pip install mlxtend」とインプットして、ライブラリをインストールしておいてください。「One-class SVM」というコマンドを用いると、テストデータの正常と異常を分けてクラスタリング可能になります。
p.5 前ページの5行目にある「nu」や「gamma」の数値を変えると、クラスタリングの精度が変わります。
p.6 「Local Outlier Factor」というアルゴリズムは、周囲の密度に合わせてクラスタリングする方法です。
p.7 左上はプロットしただけのもので、右下が「Local Outlier Factor」を用いた結果です。左上の赤の部分全てが緑色になっていません。密度が小さくなってきた周囲の部分は同じクラスタではないと判断しています。 人間の眼は一瞬で判断しますが、機械はまだまだ完璧ではないようです。
今後も、画像認識等のアルゴリズム開発競争は進んでいくと思いますが、人間の認識力は素晴らしいですね。 名前は忘れても、以前あったことがある人の顔は、ある程度覚えているそうです。