Support Vector Machine for Ranking

RankingSVMSVM-rank: Support Vector Machine for Rankingについて。

  • SVMrank
    • SVMLightの'-z p'オプションを用いるのと同じ。だが、こちらの方がもっと早い。
  • インストール
    • MulticlassSVMと同様のため割愛。
  • 実行方法
    • svm_rank_learn -c 20.0 train.dat model.dat
    • svm_rank_classify test.dat model.dat predictions
    • train.dat:学習データ
    • model.dat:学習したルールのアウトプットファイル名
    • prediction:結果を出力するファイル名
    • cオプション:SVMlightのcオプション=SVMrankingのcオプション/n(学習データの事例数)
  • データの形式

<順位> qid:<pairwiseして比較するグループの番号> <素性>:<重み>...
3 qid:1 1:1 2:1 3:0 4:0.2 5:0 # 1A
2 qid:1 1:0 2:0 3:1 4:0.1 5:1 # 1B
1 qid:1 1:0 2:1 3:0 4:0.4 5:0 # 1C
1 qid:1 1:0 2:0 3:1 4:0.3 5:0 # 1D
1 qid:2 1:0 2:0 3:1 4:0.2 5:0 # 2A
2 qid:2 1:1 2:0 3:1 4:0.4 5:0 # 2B
1 qid:2 1:0 2:0 3:1 4:0.1 5:0 # 2C
1 qid:2 1:0 2:0 3:1 4:0.2 5:0 # 2D
2 qid:3 1:0 2:0 3:1 4:0.1 5:1 # 3A
3 qid:3 1:1 2:1 3:0 4:0.3 5:0 # 3B
4 qid:3 1:1 2:0 3:0 4:0.4 5:1 # 3C
1 qid:3 1:0 2:1 3:1 4:0.5 5:0 # 3D

    • qidの値が同じものだけを全組み合わせ比較する。
    • qidは比較するグループを表す。グループごとに各カテゴリを比較。
    • 比較は1A>1B, 1A>1C, 1A>1D, 1B>1C, 1B>1D, 2B>2A, 2B>2C, 2B>2D, 3C>3A, 3C>3B, 3C>3D, 3B>3A, 3B>3D, 3A>3Dとなる。
  • どうやら学習時にSVMrankingを使ったら、SVMlightのclassifierを使用し、学習時にSVMlight(-z p)を用いたら、SVMrankingのclassifierを使用するらしい。
    • svm_rank_learn -c 3 train.dat rankmodel
    • svm_rank_classify test.dat rankmodel rankpredictions

にて実行すると、rankpredictionsに実数値が書き込まれる。

    • テストデータは学習データと同じく、比較したい事例のqidを同じ値にする。


しかし、自分の環境では、
Reading model...Version of model-file does not match version of svm_classify!: Success
といって怒られるので、今後調査する。