libMF是林智仁老师开发的一个用于推荐系统的矩阵分解库,下载地址:libMF
测试用的数据集是MovieLen,一个给电影评分的数据集,下载在此:ML
最近在阅读libMF的源代码,并且准备开发其Matlab接口,在此做做笔记。
我的开发环境是在Win8-64bit + Visual Studio 2013下,由于林老师写的程序有很好的跨平台特性,在Linux下开发也是OK的。
首先要解决的是VS2013下编译的大坑:
1,由于矩阵分解MF(mf.cpp和mf.h)是独立于train和predict的一个库,所以单独放到一个文件夹mf里面,所以要在Visual Studio的工程属性->配置属性->VC++目录->包含目录中间添加这个文件夹。(这不算坑)
2,创建工程的时候不要选择预编译头,如果不慎选了在工程属性->配置属性->C/C++->预编译头里面关闭预编译头的选项。
3,林智仁老师用的一些函数VS家认为是不安全的,默认编译不通过,在工程属性->配置属性->C/C++->预处理器->预处理器定义中添加这么两行:
_SCL_SECURE_NO_WARNINGS
_CRT_SECURE_NO_WARNINGS
4,在修改配置的时候属性页最上面的配置和平台选为所有配置和所有平台,否则要一次次改心都累了。
好了,至此可以编译通过了,不过需要注意的是,Debug的版本和Release的版本速度是天差地别的,调试的时候通用Debug,使用的时候一定使用Release x64发布。
其实想要使用是很简单的,林老师编译好了一个针对Win的版本,不过如果要写接口或者深入理解这个程序还是首先需要编译通过,待会儿才可以查看各种数据结构和调用堆栈。
以上。