このyoutube動画はMATLAB版の使い方ですが、MEX版でも同じです。ただし、訓練データを十万件ずつ分割してディスクに書き出すのはMATLAB版だけです。訓練データとテストデータ(.matファイル)は共通です。MEX版はMATLABのversionが異なればコンパイル(Make.m)を実行する必要があります。LibSVMのMATLABインタフェースもMake.mを実行してから使うのと同じ要領です。LibSVMのデータ(.matファイル)のフォーマットはFCM識別器とは異なります。
PCAの前処理をData Reduction, Autoencoderなどの目的で用いているので、さらに簡単なkd-Treeでも識別精度はそれほど悪くなりません。Random Projectionは乱数の出方で低精度になる場合がありえます。
LibSVMでも同じデータを用いて比較しています。また、LibSVMはMATLABインターフェース版を用いていて、データは.matファイルで、その読み込み部分だけはMATLABです。
FCM識別器は for loopなどの計算の遅い箇所を部分的にC言語に書き換えてMEXを用いることで数倍(3~5倍)高速化できました。プログラム全体を自動でC言語に変換したり、コンパイルすることも可能ですが、私がやってみた範囲ではあまり速くなりませんでした。Cのコンパイラーや最適化オプションでも変わるかもしれませんが。マトリックス演算はMATLABにして(Cよりも高速とされています)、部分的にC言語に書き直して、計算が速くなるようなコーディングをした方が高速化できそうです。
FCM識別器は科学研究費 基盤研究(C)
・ファジィクラスタリングに基づく高精度識別器
・ファジィc平均識別器の高精度・高機能化
の6年間の成果です。
ファジィc平均(FCM)識別器を用いた駐車場管理システム(ニチゾウテック㈱)が、東京銀座の新歌舞伎座にも導入されています。東京都道路整備公団の銀座駐車場に導入されて以来、パレスホテル、新宿イーストサイドスクエア、船橋北口駐車場など著名な施設に導入されています。
2018年現在、関東を中心に12箇所の駐車場で稼働しています。
FCM識別器を用いて、この動画に似た方式で燃焼状態を判定するシステムが、日立造船の焼却炉の標準機能として採用されています。昨年から新しく建設される焼却炉に導入が始まり、2018年度末までには5箇所に導入されます。
Automated Meter Reading https://youtu.be/E14WxtFKk8g
人工知能ブームですが、機械学習にこんなに簡単で、結構性能も良いのがあります。
学習時間はゼロですが一応機械学習です。訓練データが大量で識別に時間がかかる場合は近似最近傍探索ANNを用いることもできます。この動画のように識別のクラス数をいくらでも増やすことができます。
以下も最近傍識別器を用いています。
https://youtu.be/duK2s5xW9qk rock-paper-scissors
https://youtu.be/PKS1X3q0vaM MeterTaco
https://youtu.be/Ywbk1ASWMuo Soccer Player
https://youtu.be/L-EPZrZGWHg Pedestrian
FCM識別器はメモリーと識別時間を小さくするのに有効ですが、クラス数はあまり大きくできません。最近傍識別機はいくらでも増やせます。AutoMeterReadの例では、メモリの数がクラス数になります。