转自:http://bookc.github.io/2014/05/26/libmf-comments-in-chinese/
libMF是由台湾大学林智仁老师实验室开发的,一个用于推荐系统领域的矩阵分解开源库。矩阵分解通常用于协同过滤方法。libMF的主要特点:
- 用了user和item的隐含特征,user和item的评分偏差bias及所有评分的评分值。
- libMF可以用于多核CPU的并行化计算,并且还可以有效利用CPU的SSE指令以达到加速计算的目的。
- 官网地址
注意,本文分析的是libMF的第一个版本v1.0。现在官网的是v1.1版本。libMF拥有的文件列表
解压libmf-1.0.zip
后,文件信息如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | libmf-1.0 -COPYRIGHT //版权声明文件 -demo.sh //示例运行脚本文件 -Makefile //make -README //使用说明文件 -smalldata //示例数据文件,格式为`userID[空格]itemID[空格]rate -src //src文件夹 -convert.cpp //主要作用,定义了转化数据文件格式(字符型-二进制)命令相关的类及函数 -main.cpp //主要作用,主函数main入口 -mf.cpp //主要作用,实现mf.h文件的声明 -mf.h //主要作用,引入所有的头文件,定义一些常量,类Clock,Node,Matrix,Model的声明,常用函数的声明 -predict.cpp //主要作用,定义了预测命令相关的类及函数 -subset.cpp //主要作用,定义了取数据子集相关的类及函数,**注意**,此文件在库中没有被使用 -train.cpp //主要作用,定义了训练命令相关的类及函数 -view.cpp //主要作用,定义了查看命令相关的类及函数 |
建议源码文件查看顺序
先看main.cpp
->mf.h
->mf.cpp
->convert.cpp
->view.cpp
或subset.cpp
或predict.cpp
->最后train.cpp
。
各个代码文件相对应的类图如下
1. main.cpp文件
2. mf.h和mf.cpp文件
3. convert.cpp文件
4. view.cpp文件
5. subset.cpp文件
6. predict.cpp文件
7. train.cpp文件
带详细注释的libMFv.10源文件地址
可以在我的GitHub代码库中找到,带有详细注释的源文件。
如果注释不太合理的地方,请大家留言指出,或者可以在GitHub上fork
和pull request
。
参考资料
1. libMF官网