多模式推荐系统的比较框架

cornac的Python项目详细描述


山茱萸

cornac是多模式推荐系统的比较框架。它的重点是使它{STR 1 } $方便/ <强>利用模型利用{{ STR 1 } $辅助数据< /强>(例如,项目描述文本和图像、社交网络等)。cornac支持新模型的fast实验和directive实现。它是{STR 1 } $高度兼容< /强>与现有的机器学习库(例如,TensorFlow,PyTrac)。

快速链接

Website| Documentation| Tutorials| Examples| Models| Preferred.AI

TravisCICircleCIAppVeyorCodecovDocs
ReleasePyPICondaConda Recipe
PythonLicense

安装

目前,我们支持Python3(建议使用3.6版)。有几种安装Cornac的方法:

    >PyPI的STR 1 }(您可能需要一个C++编译器):< /强>
pip3 install cornac
  • 来自水蟒:
conda install cornac -c conda-forge
  • 来自github源(用于最新更新):
pip3 install Cython
git clone https://github.com/PreferredAI/cornac.git
cd cornac
python3 setup.py install

注意:

列出了模型所需的其他依赖项here

有些算法使用OpenMP来支持多线程。对于OSX用户,为了高效地运行这些算法,您可能需要从Homebrew安装gcc,以使用OpenMP编译器:

brew install gcc | brew link gcc

如果您想利用您的GPU,您可以考虑:

开始:你的第一个玉米粉实验

康纳克的实验流程

加载内置的MovieLens 100K数据集(如果未缓存,将下载):

fromcornac.datasetsimportmovielensml_100k=movielens.load_100k()

根据比率分割数据:

fromcornac.eval_methodsimportRatioSplitratio_split=RatioSplit(data=ml_100k,test_size=0.2,rating_threshold=4.0,seed=123)

这里我们比较Biased MFPMFBPR

fromcornac.modelsimportMF,PMF,BPRmf=MF(k=10,max_iter=25,learning_rate=0.01,lambda_reg=0.02,use_bias=True)pmf=PMF(k=10,max_iter=100,learning_rate=0.001,lamda=0.001)bpr=BPR(k=10,max_iter=200,learning_rate=0.001,lambda_reg=0.01)

定义用于评估模型的度量:

mae=cornac.metrics.MAE()rmse=cornac.metrics.RMSE()rec_20=cornac.metrics.Recall(k=20)ndcg_20=cornac.metrics.NDCG(k=20)auc=cornac.metrics.AUC()

把所有东西放在一个实验中运行:

fromcornacimportExperimentexp=Experiment(eval_method=ratio_split,models=[mf,pmf,bpr],metrics=[mae,rmse,rec_20,ndcg_20,auc],user_based=True)exp.run()

输出:

MAERMSERecall@20NDCG@20AUCTrain (s)Test (s)
MF0.74410.90070.06220.05340.29520.07911.3119
PMF0.74900.90930.08310.06830.46608.76452.1569
BPRN/AN/A0.14490.11240.87500.88981.3769

有关更多详细信息,请查看我们的examples

型号

下面列出了Cornac支持的推荐型号。你为什么不加入我们延长名单呢?

YearModel and paperAdditional dependenciesExamples
2018Collaborative Context Poisson Factorization (C2PF), paperN/Ac2pf_exp.py
Probabilistic Collaborative Representation Learning (PCRL), paperrequirements.txtpcrl_exp.py
Variational Autoencoder for Collaborative Filtering (VAECF), paperrequirements.txt
2017Collaborative Variational Autoencoder (CVAE), paperrequirements.txtcvae_exp.py
Indexable Bayesian Personalized Ranking (IBPR), paperrequirements.txtibpr_exp.py
Matrix Co-Factorization (MCF), paperN/Amcf_office.py
Online Indexable Bayesian Personalized Ranking (Online IBPR), paperrequirements.txt
Visual Matrix Factorization (VMF), paperrequirements.txt
2016Collaborative Deep Ranking (CDR), paperrequirements.txtcdr_exp.py
Collaborative Ordinal Embedding (COE), paperrequirements.txt
Convolutional Matrix Factorization (ConvMF), paperrequirements.txtconvmf_exp.py
Spherical K-means (SKM), paperN/A
Visual Bayesian Personalized Ranking (VBPR), paperrequirements.txtvbpr_tradesy.py
2015Collaborative Deep Learning (CDL), paperrequirements.txtcdl_exp.py
Hierarchical Poisson Factorization (HPF), paperN/A
2014Social Bayesian Personalized Ranking (SBPR), paperN/Asbpr_epinions.py
2013Hidden Factors and Hidden Topics (HFT), paperN/Ahft_exp.py
2011Collaborative Topic Modeling (CTR), paperN/Actr_citeulike.py
EarlierBaseline Only, paperN/Asvd_exp.py
Bayesian Personalized Ranking (BPR), paperN/Abpr_netflix.py
Collaborative Filtering for Implicit Feedback (CF), paperrequirements.txtcf_exp.py
Matrix Factorization (MF), paperN/Abiased_mf.py, given_data.py
Non-negative Matrix Factorization (NMF), paperN/Anmf_exp.py
Probabilistic Matrix Factorization (PMF), paperN/Apmf_ratio.py
Singular Value Decomposition (SVD), paperN/Asvd_exp.py
Social Recommendation using PMF (SoRec), paperN/A

支架

欢迎您在图书馆的任何级别上作出贡献。如果您打算捐款,请:

  • 将Cornac资源库转移到您自己的帐户。
  • 进行更改并创建拉取请求。

您还可以在GitHub issues中发布错误报告和功能请求。

许可证

Apache License 2.0

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java当JVM退出时,是否会刷新输出流?   java JPA实体如何做到这一点   spring boot如何在java中自动触发特定日期的事件来重置计数?   java Android三星FaceID身份验证SDK   GCM+Android+Java帮助需求   java I不能添加两个BigDecimal对象   如何在JAVA中按新行拆分字符串?   从服务器下载java Spring REST文件   java从资源id获取可绘制对象时的相同图像   来自服务的java Android tts   Java应用程序Kubernetes上下文感知   java NFC不等待其他代码   java如何在报纸Webview Android Eclipse上显示横幅广告   spring boot从SpringBoot Java中的其他私有方法获取私有方法中的变量信息   java无法通过SeleniumWebDriver单击下拉子菜单   java Junit测试单独通过,但在一起运行时失败   java如何在JPA上下文中管理spring注入的对象?   outputstream Java:PrintWriter未写入文件   java阻止用户超出地图边界