分解原理_基于矩阵分解原理的推荐系统
作者:Pytholabs
翻译:老齐
相关图书推荐:《跟老齐学Python:数据分析》
本书是数据科学、机器学习、深度学习等方向的入门读物,介绍了这些领域必用工具Numpy、Pandas和数据可视化方法,并且配有大量实例。
本文,我们将创建一个电影推荐系统。
原理:矩阵分解
矩阵分解是推荐系统系列中的一种算法,顾名思义,就是将矩阵分解成两个(或多个)矩阵,它们相乘后得到原始矩阵。在推荐系统中,我们通常从用户与项目之间的交互/评分矩阵开始,矩阵分解算法会将用户和项目特征矩阵分解,这也称为嵌入。下面以电影推荐中的评分,购买等矩阵为例。
通常,在数据集中,要挖掘用户和项目属性的潜在特征。本质上,潜在特征是用户/项目在任意空间中的表示,表示用户如何评价电影。在电影推荐系统的示例中,一个用户样本中包含了他所观看的多个电影,潜在特征的值越高,则表示他喜欢该类型的电影,那么就应该推荐此类型的电影。
准备
本文所用数据来自kaggle(https://www.kaggle.com/CooperUnion/anime-recommendations-database),包含了76000个用户样本。
首先,导入数据和有关库。
from recsys import * from generic_preprocessing import
from IPython.display import HTML ## 以Ipython Notebook显示
import pandas as pd,numpy as np
anime = pd.read_csv('anime.csv')ratings = pd.read_csv('rating.csv').iloc[:5000000]
以上代码中的recsys
模块来自:https://github.com/aayushmnit/cookbook/blob/master/recsys.py,generic_preprocessing
模块来自:https://github.com/aayushmnit/cookbook/blob/master/generic_preprocessing.py
为了创建推荐系统,我们需要一个可交互的矩阵。为此,使用recsys
模块中的create_interaction_matrix
函数,这个函数要求以Pandas的DataFrame类型的数据为输入,输入数据的列必须有诸如用户id,项目id和评分等。此函数的中如果设置norm=True
,则意味着任何评分的值都应该是正的。在这个示例中,没有必要设置,因为实际的购买数据和评分都是正的。
# 利用评分数据创建矩阵interactions = create_interaction_matrix(df = ratings, user_col = ‘user_id’, item_col = ‘anime_id’, rating_col = ‘rating’)interactions.shape
然后用create_user_dict
和create_item_dict
函数(recsys
模块)创建关于用户和项目的字典。
# 用户字典user_dict = create_user_dict(interactions=interactions)# 项目字典movies_dict = create_item_dict(df = anime, id_col = 'anime_id', name_col = 'name')
矩阵分解模型
用recsys
中的runMF
函数来创建矩阵分解模型,这个函数的参数:
interaction
:前面所创建的矩阵n_components
:对于每个用户和项目嵌入的数量loss
:定义一个损失函数,本例中我们使用warp损失函数(详见:https://making.lyst.com/lightfm/docs/examples/warp_loss.html),因为我们更关心矩阵的秩。epoch
:运行的次数n_jobs
:并行处理中使用的核数
mf_model = runMF(interactions = interactions, n_components = 30, loss = 'warp', epoch = 30, n_jobs = 4)
本系统的完整代码请参考:https://colab.research.google.com/drive/1qPA_t4O0KXHZY7fI8N69U5ikTDC9wpRy
原文链接:https://medium.com/@pytholabs/anime-recommendation-with-matrix-factorization-pytholabs-a59f7ed05516
专注于软件和AI的公众号
老齐教室
觉得好看,就点这里???
分解原理_基于矩阵分解原理的推荐系统相关推荐
- 基于hadoop的商品推荐系统_【论文笔记】基于矩阵分解的推荐系统
本文是对经典论文的阅读笔记,大部分为论文的中文翻译内容(笔者英语水平也就六级飘过的水准,不喜勿喷) 论文标题:Matrix factorization techniques for recommend ...
- 电影推荐系统 python简书_基于Spark的电影推荐系统(实战简介)
## 写在前面 一直不知道这个专栏该如何开始写,思来想去,还是暂时把自己对这个项目的一些想法 和大家分享 的形式来展现.有什么问题,欢迎大家一起留言讨论. 这个项目的源代码是在https://gith ...
- 基于矩阵分解的推荐系统
基于矩阵分解的推荐算法 1.概述 基于用户和基于项的协同过滤推荐算法,难以实现大数据量下的实时推荐.这时我们可以使用基于模型的协同过滤算法,矩阵分解(Matrix Factorization,M ...
- numpy 矩阵 秩_大规模电商推荐数据分析-基于矩阵分解的召回
前面两篇文章回顾了我们团队做天池数据比赛<CIKM 2019 EComm AI:用户行为预测>的复赛方案,现在让我们的目光回到初赛.初赛数据组织和复赛一样,只是数据量差异较大.(初赛才2G ...
- 协同过滤与隐语义模型推荐系统实例3: 基于矩阵分解(SVD)的推荐
[ 协同过滤与隐语义模型推荐系统实例1: 数据处理 ] [ 协同过滤与隐语义模型推荐系统实例2: 基于相似度的推荐 ] 隐语义模型推荐 基于矩阵分解(SVD)的推荐 # 先计算歌曲被当前用户播放量/用 ...
- movielens推荐系统_基于内容推荐(二)
A content-based movie recommender system using MovieLens tags (用标签构建一个简单的电影推荐系统) 现在有很多电影.如果没有某种推荐系统, ...
- 基于python 的电影推荐算法_基于python语言编程的矩阵分解电影推荐算法
[实例简介]一种基于矩阵分解方法的电影推荐算法 [实例截图] [核心代码] import numpy as np from numba import cuda, float64, jit from s ...
- 基于深度学习的推荐系统
作者|James Loy 编译|VK 来源|Towards Data Science 传统的推荐系统基于聚类.最近邻和矩阵分解等方法.然而,近年来,深度学习在从图像识别到自然语言处理等多个领域取得了巨 ...
- 自己动手写一个推荐系统,推荐系统小结,推荐系统:总体介绍、推荐算法、性能比较, 漫谈“推荐系统”, 浅谈矩阵分解在推荐系统中的应用...
自己动手写一个推荐系统 废话: 最近朋友在学习推荐系统相关,说是实现完整的推荐系统,于是我们三不之一会有一些讨论和推导,想想索性整理出来. 在文中主要以工程中做推荐系统的流程着手,穿插一些经验之谈,并 ...
最新文章
- java message bus_【Microsoft Azure学习之旅】消息服务Service Bus的学习笔记及Demo示例...
- 第十五届全国大学生智能汽车竞赛竞速赛规则(讨论稿)
- ios 性能优化(一)
- Tinyhttpd的实现和一些基本问题的解决
- usleep延时0.毫秒_LabVIEW从0到1系列视频培训_第4讲全集_操作例程说明
- jQuery内置动画和多库共存
- screen常用命令以及screen恢复会话时出现There is no screen to be resumed matching
- activity 点击后传递数据给fragment_Fragment 新特性 : Fragment Result API 使用以及源码分析
- NodeJS React 开发环境搭建
- 导致大量kworker的原因_氨氮超标的几种原因及解决办法
- sudoku me_Java Sudoku解算器程序
- 分布式服务的幂等性设计,值得学习!
- 案例学习——网站高并发处理相关技术
- 凸优化第五章对偶 5.5最优性条件
- C语言如何打开shx文件,shx文件是什么 shx文件如何打开
- XAMPP的安装及配置使用教程
- 17、【易混淆概念集】第十一章1 项目风险 风险临界值 VS 风险承受力 风险管理流程 风险管理及变更流程 规划风险管理 识别风险
- VC操作excel(创建表格 查找 插入数据)
- java基础篇---第一天
- python 抓取网页数据