轉自: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官網