LibRec 學習筆記(四):LibRec 中的默認配置項裏面的參數是什麼意思?

我們知道在 librec 中有許多已經實現的推薦算法,因爲每種推薦算法的參數不一定一樣,而又有大部分參數是一樣的,比如都會涉及到劃分數據集的方式、評估方式等等。所以 librec 項目爲了方便,把大部分推薦算法都有的參數配置都固定到 librec-default.properties 這個文件中,那麼這些參數就成爲了默認的配置項,下面例舉出來並且配上相關解釋:

dfs.data.dir=../data : 用於設置數據集讀取路徑

dfs.result.dir=../result :用於設置推薦結果的保存路徑

data.input.path=movielens/ml-100k :指定輸入的數據集,目錄是dfs.data.dir

data.column.format=UIRT :指定數據集每一列的含義,是user item rating 還是 user item rating time,前者用UIR,後者用UIRT

data.convert.sep = ::data.convert.sep = \t :用於設定數據的分隔方式

data.cache = true

data.model.splitter=ratio :設置劃分數據集的方式,librec中提供 ratio、loocv、given、kcv等幾種劃分方式

data.splitter.cv.number=5data.splitter.cv.index=1: 選擇kcv劃分數據集方式的時候需要設定,前者表示劃分成多少份,後者的取值範圍爲1到data.splitter.cv.number,用於設置測試集的是哪一份數據。

之後執行算法時, 只是針對於當前這次訓練集測試集合進行計算. 因此如果要統計所有次的結果, 還需要實現循環來分別設置配置項"data.splitter.cv.index"並進行分割執行算法。

KCVDataSplitter splitter = new KCVDataSplitter(convertor, conf);
for (int i = 1; i <= 6; i++) {
  // split into 5 parts by default
  splitter.splitFolds();
  splitter.splitData(i);
}

data.splitter.ratio=rating : 選擇ratio方式劃分方式時需要設定這個參數,這裏的意思是按照分數來進行比例劃分,還可以進行選擇的按比例劃分方式有user, userfixed, item, valid, ratingdate, userdate, itemdate。使用userfixed在數據量較小時可以獲得更精確的劃分結果。使用valid時還需要指定data.splitter.validset.ratio。附帶有date的方法爲根據數據量在date序列上進行劃分. 在時間數值上較大的劃分爲testset,時間數值較小的劃分爲trainset。

data.splitter.trainset.ratio=0.8 : 選擇ratio方式劃分需要設定,意思是劃分比例,數值在(0,1)之間

data.model.format=text : 這裏指的是數據集是 text 還是 arff 格式(只有這兩種格式),當數據列大於4時,需要使用arff格式的數據來進行存儲

rec.random.seed=1 : 爲了保證每次生成的結果是可以復現的,設定全局的隨機種子,固定隨機種子則固定了諸如初始化參數、每次劃分數據集的結果等,設定隨機種子可以保證每次運行得到的結果都是一樣的(前提是參數不變)

data.convert.binarize.threshold=-1.0 : 是否二值化分數值,有的推薦算法會把顯性的評分數據轉成01表示的隱性反饋數據,這樣的做法一般用在ranking算法上。如果這個值=-1,則代表不用二值化,如果這個值=value,則當分數大於這個value的時候,該評分改爲1,小於這個value的時候,該評分改爲0。

rec.eval.enable=true : 是否要評估推薦結果

rec.eval.classes=auc : 擇具體的評估方式,還可以選擇的是auc,precision,recall…如果 rec.eval.class 值是空的,則表示所有的評估方法都會計算

rec.recommender.isranking=false : 如果這個推薦算法是ranking算法,則爲true

rec.recommender.similarities=user : 可以選擇計算用戶(user)、物品(item)、社交朋友(social)之間的相似度

rec.recommender.verbose=true :對於部分推薦算法, 可以選擇將每次迭代的學習情況打印輸出。


原配置項主要內容可以參考這個鏈接

除了這些共有的配置項參數,每一個推薦算法是有其不一樣的參數設置的,這些算法的配置項也都保存在 librec 下的ibrec\core\src\main\resources\rec 的目錄下了,執行不同推薦算法時可以在命令行輸入這些配置項的路徑從而進行運行。如果不會的話,可以參考一下我的上一篇博文:librec 如何使用命令行和參數或者配置文件運行指定推薦算法?

至於不同的推薦算法有哪些特殊的配置項,可以參考官方文檔AlgorithmList,比如下面是TrustMFRecommender的配置項trustmf-test.properties,具體路徑是在librec/core/src/main/resources/rec/context/rating/trustmf-test.properties
在這裏插入圖片描述
另外,值得一提的是,在運行某個推薦算法時,默認的配置項文件 librec-default.properties 文件是一定會執行的,而具體的推薦算法的配置項,如 trustmf 算法中,它的 trustmf-test.properties 文件也會執行,如果有重複的參數設置,後者的會覆蓋前者,比如可以在 trustmf-test.properties 文件中覆蓋並指定新的數據分割方式。所以記住,執行順序是先執行默認配置文件,再執行具體算法的配置文件

如果不想使用已經定義好的默認配置文件或者具體算法的配置文件,完全是可以在命令行中直接進行修改的或者導入自己寫的配置文件。


讀完以上內容,不出意外,您大概已經知道 librec 中的默認配置項裏面的參數是什麼意思了!ヾ(◍°∇°◍)ノ゙

本人目前剛開始學習使用 librec,歡迎同伴一起交流進步,哪裏有寫的不對的地方,歡迎評論指正呀!ヾ(◍°∇°◍)ノ゙

如果這篇博客幫助了您,可以請我喫包5毛錢的辣條嗎?(下面爲微信收款碼)或者點個贊也行呀!您小小的鼓勵會是我持續更新的動力!ヾ(◍°∇°◍)ノ゙
在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章