推荐系统(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是基于产品(商品.网页)的内容.属性.关键字,以及目标用户的喜好.行为,这两部分数据来联合计算出,该为目标用户推荐其可能最感兴趣的产品. ...
随机推荐
- [LeetCode题解]: Sort Colors
前言 [LeetCode 题解]系列传送门: http://www.cnblogs.com/double-win/category/573499.html 1.题目描述 Given an a ...
- word2010多级列表编号为什么会变成黑块
把光标放置在黑块的后面 在键盘上按左方向键,则黑块变灰色(为选中状态) 然后ctrl+shift+s, 出现窗口“apply styles" 点击"reapply", 搞 ...
- micropython esp8266 烧录
MicroPython 介绍 MicroPython 是一个 Python 3 语言的精简.高效实现,其包括 Python 标准库的一小部分,并经过优化,可以运行在微控制器和受限环境中运行. Micr ...
- Template 动画
如果设置Template的动画,也就意味着对每一个具有此Template的对象进行动画处理. 比如对ListBoxI的ItemTemplate进行设置,添加动画,触发器等,每一个ListBoxItem ...
- OCP 12c最新考试原题及答案(071-6)
6.(4-21) choose the best answer: View the Exhibit and examine the structure of the CUSTOMERS table. ...
- UIView之setNeedsDisplay与drawRect 和 setNeedsLayout与layoutSubViews
1.UIView的setNeedsDisplay和setNeedsLayout方法 首先两个方法都是异步执行的.而setNeedsDisplay会调用自动调用drawRect方法,这样可以拿到 UI ...
- 在iOS7中修改键盘Return键的类型
今天将之前运行在iOS7之前的一段代码拿出来,在iOS7的机器上运行,发现键盘上的ReturnKeyType不能被修改了. 经过几番查找资料,了解到iOS7中UISearchBar的结构发生了变化,将 ...
- eclipse项目目录展示结构设置
我因为前后端都搞过, 解除过很多的开发IDE,说真的,很多的项目目录结构都是一级一级分开,然后我可以通过展开等操作来查看文件等资源信息,结果呢?java的开发IDE eclipse默认的项目目录展示简 ...
- 洛谷 P3204 [HNOI2010]公交线路
题面 luogu 题解 矩阵快速幂\(+dp\) 其实也不是很难 先考虑朴素状压\(dp\) \(f[i][S]\) 表示最慢的车走到了\(i\),\([i, p+i-1]\)的覆盖情况 状态第一位一 ...
- centos7安装串口终端kermit
1. 将usb转串口连接到PC上.通过dmesg命令可以查看USB转串口是否被PC识别.显示 ……attachec to ttyUSB0即被识别. 2. 安装kermit. [seif@cen ...