跳到内容

首选AI/玉米粉

存储库文件导航

玉米粉

玉米粉是多模式推荐系统的比较框架。它专注于制造方便的使用模型利用辅助数据(例如,项目描述性文本和图像、社交网络等)。玉米粉使能够快速的实验和直截了当的新模型的实现。它是高度兼容使用现有的机器学习库(例如,TensorFlow、PyTorch)。

Cornac是ACM RecSys 2023年用于评估和再现推荐算法。

快速链接

网站|文档|教程|示例|模型|数据集集合|纸类|首选。人工智能

.github/workflows/python-package.yml 圆形CI AppVeyor公司 Codecov公司 文件
释放 PyPI公司 康达 Conda食谱 下载
蟒蛇 公寓平台 许可证

安装

目前,我们支持Python 3。有几种安装Cornac的方法:

  • 来自PyPI(推荐):

    pip3安装cornac
  • 来自Anaconda:

    康达安装cornac-c康达锻造厂
  • 来自GitHub源代码(用于最新更新):

    pip3安装Cython numpy scipypip3安装git+https://github.com/PreferredAI/cornac.git

注:

列出了模型所需的其他依赖项在这里.

一些算法实现使用开放式多媒体播放器支持多线程。对于Mac OS用户,为了有效地运行这些算法,您可能需要安装海湾合作委员会从Homebrew获得OpenMP编译器:

brew安装gcc|brew链接gcc

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

玉米试验流程

进口 玉米粉
 玉米粉.评估方法 进口 比率拆分
 玉米粉.模型 进口 MF公司,项目管理框架,业务流程再造
 玉米粉.韵律学 进口 MAE公司,RMSE公司,精密度,召回,NDCG公司,AUC公司,地图

#加载内置MovieLens 100K并根据比率拆分数据
100千毫升 = 玉米粉.数据集.movielens公司.加载反馈() = 比率拆分(数据=10万毫升,测试_大小=0.2,额定_阈值=4,种子=123)#初始化模型,这里我们比较:偏置MF、PMF和BPR
中频 = MF公司(k个=10,最大值(_I)=25,学习_比率=0.01,λ_reg=0.02,使用偏差(_B)=真的,种子=123)pmf公司 = 项目管理框架(k个=10,最大值(_I)=100,学习_比率=0.001,λ_reg=0.001,种子=123)业务流程重组 = 业务流程再造(k个=10,最大值(_I)=200,学习_比率=0.001,λ_reg=0.01,种子=123)模型 =[中频,pmf公司,业务流程重组]#定义指标以评估模型
韵律学 =[MAE公司(),RMSE公司(),精密度(k个=10),召回(k个=10),NDCG公司(k个=10),AUC公司(),地图()]#把它放在一起做实验,瞧!
玉米粉.实验(评估方法=,模型=模型,韵律学=韵律学,基于用户(_B)=真的).运行()

输出:

MAE公司 RMSE公司 AUC公司 地图 NDCG@10 精度@10 召回@10 列车 测试
MF公司 0.7430 0.8998 0.7445 0.0548 0.0761 0.0675 0.0463 0.13 1.57
项目管理框架 0.7534 0.9138 0.7744 0.0671 0.0969 0.0813 0.0639 2.18 1.64
业务流程再造 不适用 不适用 0.8695 0.1042 0.1500 0.1110 0.1195 3.74 1.49

模特服务

在这里,我们通过使用。它对于测试或创建演示应用程序非常方便。首先,我们安装依赖项:

$pip3安装烧瓶

假设我们想为上一示例中经过训练的BPR模型提供服务,我们需要保存它:

业务流程重组.节约(“保存目录”,保存训练集=真的)

之后,可以通过运行Cornac服务应用程序轻松部署模型,如下所示:

$FLASK_APP(美元)='玉米服务.app'\型号路径='保存目录/BPR'\型号_等级='玉米。模型。业务流程再造'\烧瓶运行--主机本地主机--端口8080#正在上运行http://localhost:8080

好了,我们的模型服务现在准备好了。我们开始吧前5名用户的项目建议"63":

$curl-X获取"http://localhost:8080/推荐?uid=63&k=5&remove_seen=false"

#回复:{“建议”:[“50”,“181”,“100”,“258”,“286”],“查询”:{”uid“:”63“,”k“:5,”remove_seen“:false}}

如果我们想在培训期间删除看到的项目,我们需要提供训练_设置在启动服务应用程序时,它已与模型一起保存。我们还可以利用WSGI公司用于生产中模型部署的服务器。请参阅指南了解更多详细信息。

A/B型试验

玉米-AB是使用Cornac Serving API的Cornac的扩展。轻松创建和管理A/B测试实验,以便与在线用户进一步了解模型性能。

用户交互解决方案 建议仪表板 反馈仪表板
演示 建议 反馈

基于人工神经网络搜索的高效检索

部署推荐模型的一个重要方面是通过向量空间中的近似最近邻(ANN)搜索进行高效检索。Cornac集成了几个向量相似性搜索框架,以便于部署。这个例子演示了ANN搜索如何与支持它的任何推荐模型无缝协作(例如矩阵分解)。

支持的框架 玉米包装纸 例子
发现/惹恼 AnnoyANN公司 快速启动,深潜
元数据/传真 FaissANN公司 快速启动,深潜
nmslib/hnswlib HNSWLibANN公司 快速启动,hnsw-lib公司,深挖
谷歌/扫描 ScanNNANN公司 快速启动,深潜

模型

下表列出了Cornac中的推荐模型/算法。提供的示例既可以快速展示易于运行的脚本,也可以深入解释每个模型背后的数学和直觉。你为什么不和我们一起加长名单呢?

年份 模型和纸张 类型 环境 例子
2024 推荐解释的比较方面和意见排序(伴侣),文档,纸张 混合/情感/可解释 中央处理器 快速启动
关注评论的超图(HypAR),文档,纸张 混合/情感/可解释 要求,CPU/GPU 快速启动
2022 非纠缠多模表示学习推荐(DMRL),文档,纸张 基于内容/文本和图像 要求,CPU/GPU 快速启动
2021 用于协作过滤的双边变分自动编码器(BiVAECF),文档,纸张 基于协作筛选/内容 要求,CPU/GPU 快速启动,深挖
可视化软件推荐中可视化借记的因果推断(CausalRec),文档,纸张 基于内容/图像 要求,CPU/GPU 快速启动
在产品方面具有比较约束的可解释建议(ComparER),文档,纸张 可解释的 中央处理器 快速启动
2020 对手多媒体推荐(AMR),文档,纸张 基于内容/图像 要求,CPU/GPU 快速启动
评分和评论的混合深度表征学习(HRDR),文档,纸张 基于内容/文本 要求,CPU/GPU 快速启动
LightGCN:简化和增强图卷积网络,文档,纸张 协作筛选 要求,CPU/GPU 快速启动
用深度神经网络(DNNTSP)预测时间集,文档,纸张 下一个篮子 要求,CPU/GPU 快速启动
近况感知协作过滤(UPCF),文档,纸张 下一个篮子 要求,CPU 快速启动
基于时间项频率的用户-KNN(TIFUKNN),文档,纸张 下一个篮子 中央处理器 快速启动
Top-N建议的可变自动编码器(RecVAE),文档,纸张 协作筛选 要求,CPU/GPU 快速启动
2019 相关敏感下一个篮子建议(信标),文档,纸张 下一个篮子 要求,CPU/GPU 快速启动
稀疏数据的尴尬浅层自动编码器(EASEᴿ),文档,纸张 协作筛选 中央处理器 快速启动
神经网络图协同过滤(NGCF),文档,纸张 协作筛选 要求,CPU/GPU 快速启动
2018 协作上下文泊松因子分解(C2PF),文档,纸张 基于内容/图形 中央处理器 快速启动
图卷积矩阵完成(GCMC),文档,纸张 协作筛选 要求,CPU/GPU 快速启动
多任务可解释建议(MTER),文档,纸张 可解释的 中央处理器 快速启动,深挖
神经注意力评分回归与回顾级解释(NARRE),文档,纸张 可解释/基于内容 要求,CPU/GPU 快速启动
概率协作表示学习(PCRL),文档,纸张 基于内容/图形 要求,CPU/GPU 快速启动
用于协同过滤的可变自动编码器(VAECF),文档,纸张 协作筛选 要求,CPU/GPU 快速启动,准搜索,深挖
2017 协作变分自动编码器(CVAE),文档,纸张 基于内容/文本 要求,CPU/GPU 快速启动
用于协同过滤的条件变化自动编码器(CVAECF),文档,纸张 基于内容/文本 要求,CPU/GPU 快速启动
广义矩阵分解(GMF),文档,纸张 协作筛选 要求,CPU/GPU 快速启动,深挖
可索引贝叶斯个性化排名(IBPR),文档,纸张 协作筛选 要求,CPU/GPU 快速启动,深挖
矩阵协同分解(MCF),文档,纸张 基于内容/图形 中央处理器 快速启动,交叉模态
多层感知器(MLP),文档,纸张 协作筛选 要求,CPU/GPU 快速启动,深挖
神经矩阵分解(NeuMF)/神经协同过滤(NCF),文档,纸张 协作筛选 要求,CPU/GPU 快速启动,深挖
在线可索引贝叶斯个性化排名(Online IBPR),文档,纸张 协作筛选 要求,中央处理器/通用处理器 快速启动,深挖
可视化矩阵分解(VMF),文档,纸张 基于内容/图像 要求,CPU/GPU 快速启动
2016 协作深度排名(CDR),文档,纸张 基于内容/文本 要求,CPU/GPU 快速启动
协同顺序嵌入(COE),文档,纸张 协作筛选 要求,CPU/GPU
卷积矩阵分解(ConvMF),文档,纸张 基于内容/文本 要求,CPU/GPU 快速启动,深挖
学习对多类别推荐的特征进行排名(LRPPM),文档,纸张 可解释的 中央处理器 快速启动
基于会话的递归神经网络推荐(GRU4Rec),文档,纸张 下一项 要求,CPU/GPU 快速启动
球形K均值(SKM),文档,纸张 协作筛选 中央处理器 快速启动
可视化贝叶斯个性化排名(VBPR),文档,纸张 基于内容/图像 要求,中央处理器/通用处理器 快速启动,交叉模态,深挖
2015 协作式深度学习(CDL),文档,纸张 基于内容/文本 要求,CPU/GPU 快速启动,深挖
分层泊松分解(HPF),文档,纸张 协作筛选 中央处理器 快速启动
TriRank:通过建模方面评审软件可解释的建议,文档,纸张 可解释的 中央处理器 快速启动
2014 显性因子模型(EFM),文档,纸张 可解释的 中央处理器 快速启动,深挖
社会贝叶斯个性化排名(SBPR),文档,纸张 基于内容/社交 中央处理器 快速启动
2013 隐藏因素和隐藏主题(HFT),文档,纸张 基于内容/文本 中央处理器 快速启动
2012 加权贝叶斯个性化排名(WBPR),文档,纸张 协作筛选 中央处理器 快速启动
2011 协作主题回归(CTR),文档,纸张 基于内容/文本 中央处理器 快速启动,深挖
早期的 仅基线,文档,纸张 基线 中央处理器 快速启动
贝叶斯个性化排名(BPR),文档 纸张 协作筛选 中央处理器 快速启动,深潜
保理机(FM),文档,纸张 基于协作筛选/内容 Linux、CPU 快速启动,深挖
全球平均值(GlobalAvg),文档,纸张 基线 中央处理器 快速启动
全球个性化最高频率(GPTop),纸张 下一个篮子 中央处理器 快速启动
项目K最近的邻居(项目KNN),文档,纸张 以社区为基础 中央处理器 快速启动,深挖
矩阵分解(MF),文档,纸张 协作筛选 CPU/GPU(中央处理器/通用处理器) 快速启动,预裂数据,深挖
最大利润矩阵分解(MMMF),文档,纸张 协作筛选 中央处理器 快速启动
最受欢迎(最受欢迎),文档,纸张 基线 中央处理器 快速启动
非负矩阵分解(NMF),文档,纸张 协作筛选 中央处理器 快速启动,深挖
概率矩阵分解(PMF),文档,纸张 协作筛选 中央处理器 快速启动
热门会话(SPop),文档,纸张 下一项/基线 中央处理器 快速启动
奇异值分解(SVD),文档,纸张 协作筛选 中央处理器 快速启动,深挖
使用PMF的社会推荐(SoRec),文档,纸张 基于内容/社交 中央处理器 快速启动,深挖
用户K最近邻居(用户KNN),文档,纸张 以社区为基础 中央处理器 快速启动,深挖
加权矩阵分解(WMF),文档,纸张 协作筛选 要求,CPU/GPU 快速启动,深挖

资源

贡献

本项目欢迎您的贡献和建议。在投稿之前,请参阅我们的捐款准则.

引用

如果您在科学出版物中使用Cornac,我们希望您能引用以下论文:

Cornac:多模式推荐系统的比较框架,萨拉赫等。《机器学习研究杂志》,21(95):2020年1月5日。
@文章{salah2020cornac,title={Cornac:多模式推荐系统的比较框架},作者={Salah,Aghiles and Truong,Quoc-Tuan and Lauw,Hady W},journal={机器学习研究杂志},体积={21},数字={95},页数={1--5},年份={2020年}}
探索推荐系统中的交叉模式利用、Truong等。,IEEE互联网计算,25(4):50-572021。
@文章{trueng2021探索,title={探索推荐系统中的跨模式利用},作者={Truong,Quoc-Tuan and Salah,Aghiles and Tran,Thanh-Binh and Guo,Jingyao and Lauw,Hady W},journal={IEEE互联网计算},年份={2021},publisher={IEEE}}
多模式推荐系统:实践探索、Truong等。,ACM推荐系统会议,2021年。
@进行中{trueng2021multi,title={多模式推荐系统:实践探索},author={Truong、Quoc-Tuan和Salah、Aghiles和Lauw、Hady},booktitle={第十五届ACM推荐系统会议},页数={834--837},年份={2021}}

许可证

Apache许可证2.0