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

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第三方库


热门话题
SpringWeb中的java更新/通知其他用户   java Lambda性能测试   java Bukkit插件:空白符号   java在按下按钮后改变彩色正方形的大小   javajavac相当于“D”?   java序列化接口   属性无法从属性文件返回值   java我应该使用什么查询来使用Jsoup从html页面提取符号?   java Android Studio项目结构问题   JAVA方法和返回值/公共变量(基础)   java将NativeQuery映射到POJO   java如何在下面的程序中消除NumberFormatException?   在java中获取链表与数组中的对象   java Android Firebase将用户发送到聊天室