libffm的基本使用--mac为例子

上一篇文章简单了的介绍了下libfm的基本使用情况,这篇文章将介绍libffm的使用情况,还是老话先下载编译包

http://www.csie.ntu.edu.tw/~cjlin/libffm/在这个链接中下载编译包,下载到本地进行编译make,在这过程会发生

一个错误

g++ -Wall -O3 -std=c++0x -march=native -fopenmp -DUSEOMP -c -o ffm.o ffm.cpp
clang: error: unsupported option '-fopenmp'
make: *** [ffm.o] Error 1

这个错误解决比较简单,只要把makefile文件中的CXX = g++ 改为:

CXX ?= g++
CC ?= gcc

然后make即可以,编译好之后回产生

ffm-train ffm-predict

两个可执行文件

libffm例子自带了数据,下面用简单的例子说明说下

 ./ffm-train 
usage: ffm-train [options] training_set_file [model_file]

options:
-l <lambda>: set regularization parameter (default 0.00002)
-k <factor>: set number of latent factors (default 4)
-t <iteration>: set number of iterations (default 15)
-r <eta>: set learning rate (default 0.2)
-s <nr_threads>: set number of threads (default 1)
-p <path>: set path to the validation set
-v <fold>: set the number of folds for cross-validation
--quiet: quiet model (no output)
--no-norm: disable instance-wise normalization
--no-rand: disable random update
--on-disk: perform on-disk training (a temporary file <training_set_file>.bin will be generated)
--auto-stop: stop at the iteration that achieves the best validation loss (must be used with -p)

-l 惩罚参数,缺省值0.00002
-k 隐变量的个数,缺省值4
-t 模型训练时的迭代次数,缺省值15
-r 初始学习率,缺省值0.2
-s OpenMP的线程数,缺省值1
-p Validation数据的路径
-v 交叉验证中的折数
–quiet 控制是否输出运行时信息
–no-norm 关闭归一化功能,缺省是对样本进行归一化处理
–no-rand 关闭随机更新功能
–on-disk 当有这个参数时,不会将数据全部读入内存,而是将训练数据存储在磁盘,此时产生一个临时文件.bin
–auto-stop: 当达到最优的validation损失时自动停止,必须与-p参数一同使用



说明:

  • –no-norm:缺省状态时用每个样本向量的2范数对样本中的每个元素进行归一化,如果设置了这个参数,则不进行归一化处理。
  • –no-rand:缺省状态训练时随机从数据中选取训练样本,如果不想随机的抽取训练样本,而是想按照数据集中的样本顺序训练,则可以使用此参数,同时还要配合参数”-s 
    1”使用。
  • –on-disk:如果训练数据较大内存无法加载全量数据,则可以使用此参数。需要注意的是,这种训练模式下不支持随机的抽取训练数据,所以此时需要设置参数“—no-rand”,同时这种模式下不支持交叉验证。同时还会在磁盘上产生临时的二进制文件[training_set_file].bin。 
    “`

训练

./ffm-train -l 0.001 -k 16 -t 30 -r 0.05 -s 4 bigdata.tr.txt model

预测

./ffm-predict bigdata.te.txt model output




模型文件:

n 9991
m 18
k 16
normalization 1
w0,0 1.95648e-06 0.0328844 0.188901 0.114663 0.133192 0.0547398 0.0117612 0.169716 0.169824 0.233673 0.0958755 0.129854 0.207741 0.00864303 0.0133654 0.132425 
w0,1 0.167787 0.00192455 0.0958539 0.0167106 0.104371 0.171693 0.147244 0.232609 0.211542 0.131732 0.0229912 0.16348 0.104 0.175298 0.22758 0.19055 
w0,2 0.074646 0.0209831 0.19113 0.0834052 0.167084 0.198092 0.258891 0.102135 0.0735934 0.250294 0.185886 0.190434 0.172146 0.0193426 0.163658 0.231631 
w0,3 0.0731925 0.111001 0.19554 0.131297 0.0671442 0.0697965 0.101111 0.0478792 0.130567 0.235527 0.237891 0.0186342 0.230772 0.126537 0.130296 0.0899311 
w0,4 0.255192 0.131299 0.0744555 0.0272959 0.241042 0.0271916 0.134238 0.100963 0.0733053 0.233488 0.13384 0.123466 0.23765 0.0245288 0.194973 0.200692 
w0,5 0.218708 0.0338262 0.00699753 0.184125 0.223729 0.164005 0.191111 0.189071 0.260958 0.223078 0.062193 0.0835395 0.0880414 0.129263 0.150918 0.223234 


预测结果

0.0219516
0.501304
0.541267
0.237357
0.00464773
0.622506
0.0901457
0.00820256
0.312857
0.169556

参考文献:http://blog.csdn.net/zc02051126/article/details/54614230
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值