# liblinear实践初步

1.      Liblinear说明

Parallel LIBLINEAR is only available for -s0, 1, 2, 3, 11 now

Usage: train [options] training_set_file[model_file]

options:

-s type : set type of solver (default 1)

formulti-class classification

0 -- L2-regularized logistic regression (primal)

1 -- L2-regularized L2-loss support vector classification (dual)

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

3 -- L2-regularized L1-loss support vector classification (dual)

4 -- support vector classification by Crammer and Singer

5 -- L1-regularized L2-loss support vector classification

6 -- L1-regularized logisticregression

7 -- L2-regularized logistic regression (dual)

forregression

11 -- L2-regularized L2-loss support vector regression (primal)

12 -- L2-regularized L2-loss support vector regression (dual)

13 -- L2-regularized L1-loss support vector regression (dual)

1.1  liblinear还是libsvm

% time libsvm-2.85/svm-train -c 4 -t 0 -e 0.1 -m 800 -v 5rcv1_train.binary

Cross Validation Accuracy = 96.8136%

345.569s

% time liblinear-1.21/train -c 4 -e 0.1 -v 5rcv1_train.binary

Cross Validation Accuracy = 97.0161%

2.944s

1.2  具体solver的选择？线性svm还是logistic regression/L1正则化项还是L2正则化项

liblinear支持多种solver模式，以下直接列举liblinear支持的几种典型solver模式对应的结构风险函数（结构风险函数由损失函数和正则化项/罚项组合而成，实际即为求解结构风险函数最小值的最优化问题），以方便说明和理解。

L2-regularized L1-loss Support VectorClassification

L2-regularized L2-loss Support Vector Classification

L1-regularized L2-loss Support Vector Classification

L2-regularized Logistic Regression

L1-regularized Logistic Regression

Liblinear中同时支持线性svm和logisticregression，两者最大区别即在于损失函数（loss function）不同，损失函数是用来描述预测值f(X)与实际值Y之间差别的非负实值函数，记作L(Y, f(X))，即上述公式中的项。

1.3  primal还是dual

primal和dual分别对应于原问题和对偶问题的求解，对结果是没有影响的，但是对偶问题可能比较慢。作者有如下建议：对于L2正则-SVM，可以先尝试用dual求解，如果非常慢，则换用primal求解。

1.4  训练数据是否要归一化

2.      liblinear及fm/xgboost实际效果对比记录

2.1  liblinear效果总结

liblinear中'L14' 解决回归问题(for regression) 的s11效果相对最好0.8361，其次是解决分类问题(formulti-class classification)的s1/s2/s5(support vector classification) 的0.8356；

2.1.1       -e epsilon

set tolerance of termination criterion，此参数用于设置迭代终止条件的容忍度tolerance；

2.1.2         -c cost

set the parameter C (default 1)，此参数即为惩罚系数C，仅有solver-0/2支持-C参数自动判断最佳C；

2.1.3         训练数据量的影响

2.2  fm效果总结

fm模型主要尝试了libfm和libffm两种，其中libfm是fm算法作者的实现，libffm则是liblinear同作者国立台湾大学林智仁（Chih-JenLin）老师团队的实现；

2.3  xgboost效果总结

3.      参考文献

1 liblinear官方主页http://www.csie.ntu.edu.tw/~cjlin/liblinear/

2 统计学习方法（中文版）李航

3 [转载]LIBSVM与LIBLINEAR（一）https://segmentfault.com/a/1190000004867622

5 机器学习中的范数规则化之（一）L0、L1与L2范数http://blog.csdn.net/zouxy09/article/details/24971995

6 LR与SVM的异同http://www.cnblogs.com/zhizhan/p/5038747.html

7 Libsvm和Liblinear的使用经验谈http://m.blog.csdn.net/article/details?id=7607112

8 SVM和logistic回归分别在什么情况下使用？https://www.zhihu.com/question/21704547

9 Linear SVM 和 LR 有什么异同？ https://www.zhihu.com/question/26768865

• 点赞 3
• 评论
• 分享
x

海报分享

扫一扫，分享海报

• 收藏
• 手机看

分享到微信朋友圈

x

扫一扫，手机阅读

• 打赏

打赏

优酷土豆大数据应用团队

你的鼓励将是我创作的最大动力

C币 余额
2C币 4C币 6C币 10C币 20C币 50C币
• 一键三连

点赞Mark关注该博主, 随时了解TA的最新博文
09-05 7508

05-23 5763
06-19 1439
04-12
09-27 8087
06-29 53
04-19 36
04-26 445