推荐系统(Recommender System)
推荐系统(Recommender System)
案例
- 为用户推荐电影
数据展示
Bob | Tom | Alice | Jack | 动作成分 | 浪漫成分 | |
---|---|---|---|---|---|---|
Movie1 | 5 | ? | 0 | 3 | ? | ? |
Movie2 | ? | 0 | 3 | ? | ? | ? |
Movie3 | 0 | 1 | 0 | 5 | ? | ? |
Movie4 | ? | 4 | 1 | 0 | ? | ? |
算法
- 协同过滤算法(Collaborative filter learning algorithm)
记号
- \(n_m\): 数据中电影的数量, 其中n表示number, m表示movie
- \(n_u\): 数据中用户的数量, 其中n表示number, u表示user
- \(i\): 表示第i部电影
- \(j\): 表示第j位用户
- \(y^{(i, j)}\): 第j位用户对第i部电影的评分, 我们发现在原始数据中有?, 表示用户没有看过, 不能评分, 这里对应的\(y^{(i, j)}\)为0, \(y^{(i, j)}\)需要配合下一个\(r\)记号
- \(r^{(i, j)}\): 第j位用户是否看过第i部电影, 如果看过则为1, 没有则为0, 其中r表示rate
- \(x^{(i)}\): 第i部电影的特征向量
- \(\theta^{(j)}\): 第j位用户的权重
- \(x_k^{(i)}\): 第i部电影的第k个特征向量
- \((i,j):r(i,j)=1\), 表示取使得\(r(i,j)=1\)的\((i,j)\)
步骤
- 对每一部电影的评分进行去中心化, 得到去中心化的数据以及均值, 在去中心化的过程中忽略评分为?的数据
- 随机初始化\(X\)与\(\Theta\)
- 计算损失函数$$J(x^{(i)}, ..., x{(n_m)},\theta{(j)}, ..., \theta{(n_u)})={1\over{2m}}\sum_{(i,j):r(i,j)=1}((\theta{(i)})Tx{(i)}-y{(i,j)})2+{\lambda\over2}\sum_{i=1}{n_m}\sum_{k=1}n(x_k{(i)})2+{\lambda\over{2}}\sum_{j=1}{n_u}\sum_{k=1}{n}(\theta_k{(j)})2$$
- 求解$$min_{x^{(i)}, ..., x{(n_m)},\theta{(j)}, ..., \theta{(n_u)}}J(x{(i)}, ..., x{(n_m)},\theta{(j)}, ..., \theta^{(n_u)})$$
- 梯度
- \[x_k^{(i)}:=x_k^{(i)}-\alpha(\sum_{j:r(i,j)=1}((\theta^{(j)})^T)-y^{(i,j)})\theta_k^{(i,j)}+\lambda x_k^{(i)})
\] - \[\theta_k^{(j)}:=\theta_k^{(j)}-\alpha(\sum_{i:r(i,j)=1}((\theta^{(i)})^T-y^{(i,j)})x_k^{i}+\lambda \theta_k^{(j)})
\]
Matlab实现CostFunction关键部分
%此处, 虽然有一些用户没有对一些电影做出评价, 但是Y仍然为0, 在下一个J的赋值语句中, 通过R计算出符合要求的J
J = (X * Theta' - Y) .^ 2;
J = (1 / 2) * sum(sum(J .* R)) + (lambda / 2) * sum(sum(X .^ 2)) + (lambda / 2) * sum(sum(Theta .^ 2));
X_grad = ((X * Theta' - Y) .* R) * Theta + lambda * X;
Theta_grad = ((X * Theta' - Y) .* R)' * X + lambda * Theta;
推荐系统(Recommender System)的更多相关文章
- 【RS】Deep Learning based Recommender System: A Survey and New Perspectives - 基于深度学习的推荐系统:调查与新视角
[论文标题]Deep Learning based Recommender System: A Survey and New Perspectives ( ACM Computing Surveys ...
- A cost-effective recommender system for taxi drivers
一个针对出租车司机有效花费的推荐系统 摘要 GPS技术和新形式的城市地理学改变了手机服务的形式.比如说,丰富的出租车GPS轨迹使得出做租车领域有新方法.事实上,最近很多工作是在使用出租车GPS轨迹数据 ...
- 海量数据挖掘MMDS week4: 推荐系统Recommendation System
http://blog.csdn.net/pipisorry/article/details/49205589 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...
- 论文笔记: Deep Learning based Recommender System: A Survey and New Perspectives
(聊两句,突然记起来以前一个学长说的看论文要能够把论文的亮点挖掘出来,合理的进行概括23333) 传统的推荐系统方法获取的user-item关系并不能获取其中非线性以及非平凡的信息,获取非线性以及非平 ...
- Coursera, Machine Learning, Anomoly Detection & Recommender system
Algorithm: When to select Anonaly detection or Supervised learning? 总的来说guideline是如果positive e ...
- [C11] 推荐系统(Recommender Systems)
推荐系统(Recommender Systems) 问题阐述(Problem Formulation) 将 推荐系统 纳入这门课程来讲有以下两个原因: 第一.仅仅因为它是机器学习中的一个重要的应用.在 ...
- User-Based Collaborative Recommender System
Collaborative Recommender System基于User给Item的打分表,认为相似度很高的用户,会对同一个item给出相似的分数,找出K个相似度最高的用户,集合他们的打分,来推算 ...
- Item-Based Collaborative Recommender System
与User-Based Collaborative Recommender System认为‘类似的用户会对同一个item给出类似的打分’不同,Item-Based Collaborative Rec ...
- Content-Based Recommender System
Content-Based Recommender System是基于产品(商品.网页)的内容.属性.关键字,以及目标用户的喜好.行为,这两部分数据来联合计算出,该为目标用户推荐其可能最感兴趣的产品. ...
随机推荐
- /Date(1512551901709+0800)/转换
var convertDT=function(dt) { dt.replace(/Date\([\d+]+\)/, function (a) { eval('d = new ' + a) }); al ...
- django静态文件路径配置
在settings.py中加入 STATICFILES_DIRS = [ os.path.join(BASE_DIR,'static') ] 即可在html中引用该目录下的静态文件 <!DOCT ...
- droup
Oracle Drop表并未直接删除 drop table xx purge drop表 执行drop table xx 语句 drop后的表被放在回收站(user_recyclebin) ...
- python学习之路 八 :面向对象编程基础
本节重点 了解面向对象.面向过程的区别 掌握什么是类,什么是对象 掌握如何定义及使用类和对象 了解类与对象间的关系 掌握类属性和实例属性 掌握绑定方法 一.编程范式 编程即写程序or写代码 ...
- sql 统计常用的sql
统计常用的sql 统计常用的sql语句: 今天的所有数据:select * from 表名 where DateDiff(dd,datetime类型字段,getdate())=0 昨天的所有数据:s ...
- HDU - 6215 2017 ACM/ICPC Asia Regional Qingdao Online J - Brute Force Sorting
Brute Force Sorting Time Limit: 1 Sec Memory Limit: 128 MB 题目连接 http://acm.hdu.edu.cn/showproblem.p ...
- 二十一、Node.js-EJS 模块引擎
初识 EJS 模块引擎 我们学的 EJS 是后台模板,可以把我们数据库和文件读取的数据显示到 Html 页面上面.它是一个第三方模块,需要通过 npm 安装https://www.npmjs.com/ ...
- 标题title出现不规则背景
Html代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- swoft| 源码解读系列一: 好难! swoft demo 都跑不起来怎么破? docker 了解一下呗~
title: swoft| 源码解读系列一: 好难! swoft demo 都跑不起来怎么破? docker 了解一下呗~description: 阅读 sowft 框架源码, swoft 第一步, ...
- 2个list取差集
list操作 element in a list but not in other list,元素在一个list,不在另一个list 在数据量大的时候使用numpy的setdiff1d方法的性能非常好 ...