LIBLINEARは線形カーネルしか使えないが、LIBSVMより高速。

  • 事例数 ≪ 素性数の場合は線形カーネルで十分 → LIBLINEAR
  • 事例数・素性数も多い場合はLIBSVMが苦手 → LIBLINEAR
  • 事例数 ≫ 素性数の場合はRBFカーネル使った方がよい → LIBSVN1

LIBLINEAR

導入

説明

コマンド例

$ ./liblinear-1.96/train -s 2 -v 5 traingin_set_file

-s 2はL2-regularized L2-loss support vector classification (primal)

で解く。

-v 5は5分割交差検定。

Binary-class Cross Validation with Different Criteria

デフォルトだとaccurancyしか出してくれないが、以下の修正をするとprecision, recall, fscore, BAC, AUCを出力することが出来る。

「For LIBLINEAR」という項目を見て、修正する。

それぞれの評価。

Accuracy

Accuracy = (true_positive + true_negative) / (true_positive + true_negative + false_positive + false_negative)

判定があっている確率

例えば、サンプルデータに陽性なデータがほとんど無くて、全部ネガティブ判定したとしても、この指標は高くなってしまう。

Precision

Precision = true_positive / (true_positive + false_positive)

陽性と判定して、実際に陽性である確率

Recall

Recall = true_positive / (true_positive + false_negative)

陽性が陽性であると判定される確率

Fscore

F-score = 2 * Precision * Recall / (Precision + Recall)

BAC

BAC (Balanced ACcuracy) = (Sensitivity + Specificity) / 2,

where Sensitivity = true_positive / (true_positive + false_negative)

recallと同じ

and Specificity = true_negative / (true_negative + false_positive)

陰性が陰性であると判定される確率

AUC

AUC (Area Under Curve) is the area under the ROC curve.

参考

交差検定

  • SVM実践ガイド (A Practical Guide to Support Vector Classification) – 睡眠不足?!