資源 | LibRec:領先的推薦系統開源庫
機器之心發布
作者:LibRec
LibRec 是一個領先的推薦系統開源演算法庫,它覆蓋了 70 余個各類型的推薦演算法,有效地解決了評分預測和物品推薦兩大關鍵的推薦問題。該項目結構清晰、代碼風格良好、測試充分、注釋與手冊完善,基於 GPL3.0 協議代碼開源。
LibRec官網:http://www.librec.net
GitHub 鏈接: https://github.com/guoguibing/librec
近年來,推薦系統取得了快速發展,數以百計的新演算法、新模型不斷湧現。然而,這不但給剛剛接觸推薦演算法的新人造成無所適從,而且也給那些有經驗的人士帶來不少困擾。不同的人對演算法的理解可能大相徑庭,更不用說是具體的實現了。因此,為了解決演算法實現和共享的問題,LibRec 團隊設計實現了基於 Java 的跨平台推薦框架,並以 GPL3.0 協議在 GitHub 上開源共享。
經過幾年的發展,團隊成員上千次的代碼提交,最新的版本代碼是 2.0。到目前為止,LibRec 包含了矩陣分解、概率圖模型等多種類型的 70 余個推薦演算法,10 個相似度度量方法,4 個 rating 評估指標與 10 個 ranking 評估指標,5 大類數據的分割方式以及 2 種不同格式的數據讀取,滿足絕大部分推薦系統的需求。因此,LibRec 具有演算法豐富、易於擴展、簡單易用等突出特點。
LibRec 項目的系統結構如圖所示。其中,Data Structure 包括常用的數據結構,如 SparseMatrix、SparseVector 等;Data Model 主要負責數據的讀取、分割、導入其他數據如社交關係等;Recommender 主要負責模型的訓練 (Inference),預測 (Prediction),相似度衡量 (Similarity),以及模型的持久化 (Persistence);最終結果可以進行評估,或者過濾之後輸出到文件。總體來說,LibRec 項目擁有良好的結構,不同模塊之間耦合度非常低,針對某個模塊的開發通常無需關心其他模塊的實現。以實現新的分割方式為例,用戶只需繼承 Splitter 介面抽象類,根據相應的邏輯重寫 splitData() 方法即可。
基於 LibRec 來運行推薦演算法就如同搭積木一樣簡單,其工作流程如上圖所示。首先設置好相關參數配置,然後實例化數據並測試分割,調用推薦演算法訓練學習,最後對推薦結果進行過濾和評估。示常式序如下所示:
public static voidmain(String[] args) throwsException {
// build data model
Configuration conf = newConfiguration();
conf.set("dfs.data.dir", "path/to/data/folder/");
Randoms.seed(1);
TextDataModel dataModel = newTextDataModel(conf);
dataModel.buildDataModel();
// build recommender context
RecommenderContext context = newRecommenderContext(conf, dataModel);
// build similarity
conf.set("rec.recommender.similarity.key","item");
RecommenderSimilarity similarity = newPCCSimilarity();
similarity.buildSimilarityMatrix(dataModel);
context.setSimilarity(similarity);
// build recommender
conf.set("rec.neighbors.knn.number", "5");
Recommender recommender = newItemKNNRecommender();
recommender.setContext(context);
// run recommender algorithm
recommender.recommend(context);
// evaluate the recommended result
RecommenderEvaluator evaluator = newRMSEEvaluator();
System.out.println("RMSE:"+ recommender.evaluate(evaluator));
}
這段示常式序調用了 ItemKNN 演算法,採用 RMSE 對結果進行評估。用戶也可以根據實際應用,採用其他演算法與評估器來進行推薦計算。LibRec 的參數配置是在配置文件中設定的,主要分為兩部分。一部分是流程控制參數(默認載入),與推薦演算法無關;另一部分是與推薦演算法相關的參數。LibRec 項目仍在快速開發中,未來會繼續增強核心模塊的功能,添加與深度學習相關的演算法實現,並擴展至 Spark 等平台。
歡迎關注公眾號【LibRec】,獲取 LibRec 和推薦系統相關的研究進展。公眾號會定期推送最新的開發進展,近期還推出了「每周演算法」欄目,解讀推薦領域比較重要的研究工作和技術發展,廣受讀者朋友們的喜愛。也歡迎大家多多貢獻代碼演算法,提交 pullRequest。LibRec 的發展離不開大家的關注和支持,也希望聚合眾人的力量在推薦系統領域創建合作共享、協同創新的開源氛圍,推動推薦演算法的進一步實際應用和推廣。
相關鏈接:
Librec 通識篇: https://mp.weixin.qq.com/s/AB39ihVWXYHRbeODbGO-2g
LibRec 工程導入: https://mp.weixin.qq.com/s/OyYn5_4GYAbF0L0SFgsHVQ
LibRec 命令行操作: https://mp.weixin.qq.com/s/xnkg6BGyUUKmbs009p8XCw
Librec 團隊一周年紀: https://mp.weixin.qq.com/s/vDnca1FMW9vVrFDgti_1IA
※1萬8千塊GPU:橡樹嶺實驗室即將推出Summit超級計算機
※出門問問攜手中科院自動化研究所,共建語言智能與人機交互實驗室
※深度神經網路全面概述:從基本概念到實際模型和硬體基礎
※機器人控制領域新進展:用磁場控制的軟體機器人
※Facebook提升數十億用戶體驗的秘密武器:梯度提升決策樹
TAG:機器之心 |
※Qualcomm宣布業界領先企業將打造驍龍支持的Windows 10 PC
※領先 iPhone - 中國廠商 Vivo 於 WMC 展示全新「隱形指紋技術」
※三星搶先在印度推出Samsung Pay 領先蘋果和谷歌
※分析師指 iPhone X 的 TrueDepth 鏡頭為 Apple 帶來 2.5 年領先優勢
※Illumina 新創加速器,強化 Illumina 在基因定序產業的領先地位
※OLED助力OPPO和vivo贏得領先優勢
※全面領先Facebook google,中國明年開始發射衛星建造天基互聯網 組圖
※iPhone 8問題頻出 iPhone X原深感相機將領先安卓2年
※iPhone X Face ID傲視Android群雄:領先兩年半
※AMD 32核Naples處理器沒什麼創新:Intel單核領先
※AMD再次公開Vega顯卡性能,Deepbench大幅領先Tesla P100
※Mellanox攜手ADINNO打造業內領先的IP雲化傳輸媒體解決方案
※看好 iPhoneX,掀換機,分析師:TrueDepth 相機領先安卓 2.5年
※專註健身 Apple Watch趕超Fitbit領先全球可穿戴市場
※J-S Cournoyer:加拿大,領先的人工智慧樞紐的興起
※【行業】iPhoneX的Face ID領先安卓18個月?區別到底在哪
※領先業界vivo Xplay6竟暗藏此項Wi-Fi黑科技
※Galaxy Note8進一步鞏固三星創新的領先地位
※CA Technologies得到領先獨立研究公司認可