跳转到主要内容

标签(标签)

资源精选(342) Go开发(108) Go语言(103) Go(99) angular(82) LLM(75) 大语言模型(63) 人工智能(53) 前端开发(50) LangChain(43) golang(43) 机器学习(39) Go工程师(38) Go程序员(38) Go开发者(36) React(33) Go基础(29) Python(24) Vue(22) Web开发(20) Web技术(19) 精选资源(19) 深度学习(19) Java(18) ChatGTP(17) Cookie(16) android(16) 前端框架(13) JavaScript(13) Next.js(12) 安卓(11) typescript(10) 资料精选(10) NLP(10) 第三方Cookie(9) Redwoodjs(9) LLMOps(9) Go语言中级开发(9) 自然语言处理(9) 聊天机器人(9) PostgreSQL(9) 区块链(9) mlops(9) 安全(9) 全栈开发(8) ChatGPT(8) OpenAI(8) Linux(8) AI(8) GraphQL(8) iOS(8) 软件架构(7) Go语言高级开发(7) AWS(7) C++(7) 数据科学(7) whisper(6) Prisma(6) 隐私保护(6) RAG(6) JSON(6) DevOps(6) 数据可视化(6) wasm(6) 计算机视觉(6) 算法(6) Rust(6) 微服务(6) 隐私沙盒(5) FedCM(5) 语音识别(5) Angular开发(5) 快速应用开发(5) 提示工程(5) Agent(5) LLaMA(5) 低代码开发(5) Go测试(5) gorm(5) REST API(5) 推荐系统(5) WebAssembly(5) GameDev(5) CMS(5) CSS(5) machine-learning(5) 机器人(5) 游戏开发(5) Blockchain(5) Web安全(5) Kotlin(5) 低代码平台(5) 机器学习资源(5) Go资源(5) Nodejs(5) PHP(5) Swift(5) 智能体(4) devin(4) Blitz(4) javascript框架(4) Redwood(4) GDPR(4) 生成式人工智能(4) Angular16(4) Alpaca(4) SAML(4) JWT(4) JSON处理(4) Go并发(4) kafka(4) 移动开发(4) 移动应用(4) security(4) 隐私(4) spring-boot(4) 物联网(4) nextjs(4) 网络安全(4) API(4) Ruby(4) 信息安全(4) flutter(4) 专家智能体(3) Chrome(3) CHIPS(3) 3PC(3) SSE(3) 人工智能软件工程师(3) LLM Agent(3) Remix(3) Ubuntu(3) GPT4All(3) 软件开发(3) 问答系统(3) 开发工具(3) 最佳实践(3) RxJS(3) SSR(3) Node.js(3) Dolly(3) 移动应用开发(3) 编程语言(3) 低代码(3) IAM(3) Web框架(3) CORS(3) 基准测试(3) Go语言数据库开发(3) Oauth2(3) 并发(3) 主题(3) Theme(3) earth(3) nginx(3) 软件工程(3) azure(3) keycloak(3) 生产力工具(3) gpt3(3) 工作流(3) C(3) jupyter(3) 认证(3) prometheus(3) GAN(3) Spring(3) 逆向工程(3) 应用安全(3) Docker(3) Django(3) R(3) .NET(3) 大数据(3) Hacking(3) 渗透测试(3) C++资源(3) Mac(3) 微信小程序(3) Python资源(3) JHipster(3) 大型语言模型(2) 语言模型(2) 可穿戴设备(2) JDK(2) SQL(2) Apache(2) Hashicorp Vault(2) Spring Cloud Vault(2) Go语言Web开发(2) Go测试工程师(2) WebSocket(2) 容器化(2) AES(2) 加密(2) 输入验证(2) ORM(2) Fiber(2) Postgres(2) Gorilla Mux(2) Go数据库开发(2) 模块(2) 泛型(2) 指针(2) HTTP(2) PostgreSQL开发(2) Vault(2) K8s(2) Spring boot(2) R语言(2) 深度学习资源(2) 半监督学习(2) semi-supervised-learning(2) architecture(2) 普罗米修斯(2) 嵌入模型(2) productivity(2) 编码(2) Qt(2) 前端(2) Rust语言(2) NeRF(2) 神经辐射场(2) 元宇宙(2) CPP(2) 数据分析(2) spark(2) 流处理(2) Ionic(2) 人体姿势估计(2) human-pose-estimation(2) 视频处理(2) deep-learning(2) kotlin语言(2) kotlin开发(2) burp(2) Chatbot(2) npm(2) quantum(2) OCR(2) 游戏(2) game(2) 内容管理系统(2) MySQL(2) python-books(2) pentest(2) opengl(2) IDE(2) 漏洞赏金(2) Web(2) 知识图谱(2) PyTorch(2) 数据库(2) reverse-engineering(2) 数据工程(2) swift开发(2) rest(2) robotics(2) ios-animation(2) 知识蒸馏(2) 安卓开发(2) nestjs(2) solidity(2) 爬虫(2) 面试(2) 容器(2) C++精选(2) 人工智能资源(2) Machine Learning(2) 备忘单(2) 编程书籍(2) angular资源(2) 速查表(2) cheatsheets(2) SecOps(2) mlops资源(2) R资源(2) DDD(2) 架构设计模式(2) 量化(2) Hacking资源(2) 强化学习(2) flask(2) 设计(2) 性能(2) Sysadmin(2) 系统管理员(2) Java资源(2) 机器学习精选(2) android资源(2) android-UI(2) Mac资源(2) iOS资源(2) Vue资源(2) flutter资源(2) JavaScript精选(2) JavaScript资源(2) Rust开发(2) deeplearning(2) RAD(2)

category

LightFM是许多流行的推荐算法的Python实现,用于隐式和显式反馈。

它还可以将项目和用户元数据合并到传统的矩阵分解算法中。它将每个用户和项目表示为其特征的潜在表示的总和,从而允许推荐泛化到新项目(通过项目特征)和新用户(通过用户特征)。

该方法的细节在arXiv上提供的LightFM论文中进行了描述。

快速入门


如果你不耐烦,直接跳到Movielens快速入门。

安装


PyPI


使用pip从pypi安装:pip安装lightfm。在Linux、使用Homebrew Python的OSX和使用Miniconda的Windows上,一切都应该开箱即用。

OSX和Windows用户注意:默认情况下,LightFM在OSX和窗口上不使用OpenMP,因此所有型号配件都是单线程的。这是由于Clang(和Miniconda)不支持OpenMP,安装启用OpenMP的gcc版本既复杂又劳动密集。如果你想在这些平台上使用LightFM的多线程功能,你应该尝试通过Docker使用它,如下一节所述。

也不支持使用OSX中包含的默认Python发行版进行构建;请尝试Homebrew或Anaconda的版本。

使用Docker


在许多系统中,在Docker容器中尝试LightFM可能更方便。此存储库提供了一个足以运行LightFM及其示例的小型Dockerfile。要运行它:

  • 安装Docker并启动Docker deamon/虚拟机。
  • 克隆此存储库并导航到它:git clone git@github.com:lyst/lightfm.git && cd lightfm
  • 运行docker-compose build lightfm来构建容器。

容器现在应该可以使用了。然后,您可以:

  • 通过运行docker-compose run lightfm py.test -x lightfm/tests/ 来运行测试/
  • 通过运行docker-compose run --service-ports lightfm jupyter notebook lightfm/examples/movielens/example.ipynb --allow-root --ip="0.0.0.0" --port=8888 --no-browser 来运行movilens示例。笔记本电脑将在容器IP地址的8888端口访问。

使用方法


使用主LightFM类进行模型拟合非常简单。

创建具有所需潜在维度的模型实例:

from lightfm import LightFM

model = LightFM(no_components=30)


假设train是一个(无用户,无项目)稀疏矩阵(1表示正交互,-1表示负交互),你可以通过调用来拟合传统的矩阵因式分解模型:

model.fit(train, epochs=20)


这将训练传统的MF模型,因为没有提供用户或项目功能。

要获取预测,请调用model.predict:

predictions = model.predict(test_user_ids, test_item_ids)


用户和项目特征可以通过将其传递到拟合方法中来纳入培训。假设user_feature是一个(no_users,no_user_feature)稀疏矩阵(item_feature也是如此),您可以调用:

model.fit(train,
          user_features=user_features,
          item_features=item_features,
          epochs=20)
predictions = model.predict(test_user_ids,
                            test_item_ids,
                            user_features=user_features,
                            item_features=item_features)


以训练模型并获得预测。

训练和预测都可以使用多个核心来提高速度:

model.fit(train, epochs=20, num_threads=4)
predictions = model.predict(test_user_ids, test_item_ids, num_threads=4)


该实现使用异步随机梯度下降[6]进行训练。当交互矩阵(或特征矩阵)非常密集并且使用大量线程时,这可能会导致精度降低。然而,在实践中,在具有20个线程的稀疏数据集上进行训练不会导致可测量的准确性损失。

在隐式反馈设置中,可以使用BPR、WARP或k-OS WARP损失函数。如果训练是一个稀疏矩阵,其中正条目表示正交互,则模型可以按如下方式训练:

model = LightFM(no_components=30, loss='warp')
model.fit(train, epochs=20)


示例


查看示例目录以获取更多示例。

Movielens示例展示了如何在Movielens数据集上使用LightFM,包括使用和不使用电影元数据。另一个例子比较了adagrad和adadelta学习计划的性能。

Kaggle优惠券购买预测示例将LightFM应用于预测优惠券购买。

关于使用LightFM的文章和教程

  1. Learning to Rank Sketchfab Models with LightFM
  2. Metadata Embeddings for User and Item Cold-start Recommendations

  3. Recommendation Systems - Learn Python for Data Science

 

在更改.pyx扩展名文件时,您需要运行python setup.py cythonize,以便在运行pip install-e之前生成扩展名.c文件。。