多値(クラス)分類

多値分類とは

  • 2値分類(Aか否か)はクラス数が2の場合の分類
  • 多値分類とはクラス数が3以上の場合の分類

多値分類の方法

one-versus-rest法
  • nクラスの場合は、n個の分離平面を求め、各クラスがそのクラスに属するかどうか
  • もし、1事例が1クラスにしか属することを許されない場合は、分離平面との関数距離が一番大きいクラスを選ぶ
pairwise(one-against-one?)法
  • nクラスの場合は、クラス対ごとに2つのクラスのどちらに属するか?という分離平面を作り、多数決で一番多いクラスを選ぶ
    • クラスC1,C2,C3ならば、(C1,C2)、(C2,C3)、(C3,C1)のn(n-1)/2個の分離平面を求める
根付二分有効無向閉路グラフ(rooted binary DAG)法
  • pairwise法でもとめたデータについて、分離平面に関するDAGを構成し、それにより効率的にクラスを選ぶ
  • DAGSVMなど

多値パーセプトロン

  • 2クラス分類のパーセプトロンに上記の考えを追加して、多クラス分類できるようにする
  • 以下は、one-versus-rest法の一つだと思うけど、それでOKっていう文献が見つけられていない、、、
    • 「わかりやすいパターン分類」って本に書いてあるらしい?
    • 要調査
# オンライン学習での多値パーセプトロンの手順

重みベクトルwをn個用意

function predict(学習データ) {
  return 学習データの関数距離が一番大きいクラスを返す(argmax)
}

function train(学習データの一つ) {
  f = 学習データの予想クラス(predict)
  t = 学習データの正解クラス
  if(fとtが異なる){ 
    クラスfの重みから学習データを引く
    クラスtの重みに学習データを加える
  }
}