シンプルな分類器を作りました (Simple-Classifier)

シンプルな分類器 (Simple Classifier)を作ったので,その仕組みをここに書きたいと思います.

まず,線形モデルについて少し深く考えてみたいと思います.入力を, 出力をとします.パラメータを用いて,パラメータに関する線形モデルを以下のように定義します.

簡単のため,として,の第j成分とします.を人として考えましょう.つまり,人の人がいます.そして,を人が賛成した(+1)か反対した(-1)かを表すものと考えます.こう考えると,を正解として,なら,は正解したと言えます.
この観点から線形モデルを見てみましょう.簡単のため,とします.こうすると,は人を信用する(+1)か信用しない(-1)かを表してると考えられます.信用しているなら,の意見をそのまま通しますが,信用していないなら,その反対を選びます.
今,学習データが与えられているとします.をどのように決めたらいいでしょうか?直感的には,「多く正解している人をより信じる」ように選んだらいいような気がします.の正解率は,

で表されます.これをそのままとして使います.つまり,

とします.これがプラスなら信用し,マイナスなら信用しないということです.さらに,値が大きいなら,より信用する(しない)ことになります.

今回作った分類器,Simple Classifierは,基本的にはこれだけの仕組みに基づきます.

さて,入力はであることが多いのが現実です.これを,に変換しなければなりません.もっとも簡単なのは,毎に,閾値を用意して,それで以下のように判断することです.

それでは,はどのように選んだらいいでしょうか?今回は,の平均を使って,

とします.これは,中立な人の立場から見て,その人が賛成か反対かを決めていることに相当すると考えられます.

以上がSimple Classifierの仕組みです.実装はGithubにあります,ぜひ使ってみてください.

simple-classifier

Written with StackEdit.

0 件のコメント:

コメントを投稿

機械学習の問題設定

機械学習の問題設定 機械学習の問題設定を見直したのでメモ. ( Ω , F , P ) (\Omega, \mathcal{F}, P) ( Ω , F , P ) : ベースとなる確率空間 ( X , F X ) (\mathcal...