libMF源碼分析

轉自:http://bookc.github.io/2014/05/26/libmf-comments-in-chinese/

libMF是由臺灣大學林智仁老師實驗室開發的,一個用於推薦系統領域的矩陣分解開源庫。矩陣分解通常用於協同過濾方法。libMF的主要特點:

  1. 用了user和item的隱含特徵,user和item的評分偏差bias及所有評分的評分值。
  2. libMF可以用於多核CPU的並行化計算,並且還可以有效利用CPU的SSE指令以達到加速計算的目的。
  3. 官網地址
    注意,本文分析的是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.cppsubset.cpppredict.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上forkpull request

參考資料

1. libMF官網

發佈了28 篇原創文章 · 獲贊 13 · 訪問量 24萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章