前回のAS3でNaive Bayesによる文書分類に関連して機械学習による分類問題を扱います。
今回は決定木(Decision Tree)をCanvasに描いてみます。前回のナイーブベイズよりも決定木の方が解釈が簡単で、分類過程が見た目にも分かりやすいので手軽に試すことができました。今回も理論的な部分はWebや書籍の方を参考にしてもらって、ここでは試したことだけ書きます。
今回扱う問題は集合知プログラミングにある「サインアップを予測する」を取り上げます。これは、あるユーザーがあるWebサービスの無料会員になるか有料会員になるかを事前に集めたデータから予測する分類問題になっています。決定木は文章で説明するよりも、決定木そのものを見た方が意味が分かりやすいのでサンプルを載せます。
Demo:
Decision Tree on Canvas
この決定木の見方ですが、例えばリファラーが”google”で、さらに見たページ数が”21″ページ以上の人は有料会員(“Premium”)になったという結果を表しています。こういった分類結果は、例えばマーケティングの世界だと顧客プロファイリングに利用されたりしています。
ソースコードは少し長いのでGitHubに上げておきます。決定木学習の部分では外部ライブラリ等を使っていないので、JavaScriptの知識があれば読めると思います。
* GitHub
dtree.js at master from wellflat/jslib – GitHub
ちなみにこの決定木の応用先は画像処理分野にも及んでいて、もちろんOpenCVにも既に実装されています。
決定木 — opencv 2.2 documentation (see also: Random Forest)
* 参考
computing machinery
Teradata|第14回:決定木
—————
Chrome Developer Toolsが予想以上に便利だった。なにこれすごい。