推荐系统(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)的更多相关文章

  1. 【RS】Deep Learning based Recommender System: A Survey and New Perspectives - 基于深度学习的推荐系统:调查与新视角

    [论文标题]Deep Learning based Recommender System: A Survey and New Perspectives ( ACM Computing Surveys  ...

  2. A cost-effective recommender system for taxi drivers

    一个针对出租车司机有效花费的推荐系统 摘要 GPS技术和新形式的城市地理学改变了手机服务的形式.比如说,丰富的出租车GPS轨迹使得出做租车领域有新方法.事实上,最近很多工作是在使用出租车GPS轨迹数据 ...

  3. 海量数据挖掘MMDS week4: 推荐系统Recommendation System

    http://blog.csdn.net/pipisorry/article/details/49205589 海量数据挖掘Mining Massive Datasets(MMDs) -Jure Le ...

  4. 论文笔记: Deep Learning based Recommender System: A Survey and New Perspectives

    (聊两句,突然记起来以前一个学长说的看论文要能够把论文的亮点挖掘出来,合理的进行概括23333) 传统的推荐系统方法获取的user-item关系并不能获取其中非线性以及非平凡的信息,获取非线性以及非平 ...

  5. Coursera, Machine Learning, Anomoly Detection & Recommender system

      Algorithm:     When to select Anonaly detection or Supervised learning? 总的来说guideline是如果positive e ...

  6. [C11] 推荐系统(Recommender Systems)

    推荐系统(Recommender Systems) 问题阐述(Problem Formulation) 将 推荐系统 纳入这门课程来讲有以下两个原因: 第一.仅仅因为它是机器学习中的一个重要的应用.在 ...

  7. User-Based Collaborative Recommender System

    Collaborative Recommender System基于User给Item的打分表,认为相似度很高的用户,会对同一个item给出相似的分数,找出K个相似度最高的用户,集合他们的打分,来推算 ...

  8. Item-Based Collaborative Recommender System

    与User-Based Collaborative Recommender System认为‘类似的用户会对同一个item给出类似的打分’不同,Item-Based Collaborative Rec ...

  9. Content-Based Recommender System

    Content-Based Recommender System是基于产品(商品.网页)的内容.属性.关键字,以及目标用户的喜好.行为,这两部分数据来联合计算出,该为目标用户推荐其可能最感兴趣的产品. ...

随机推荐

  1. [LeetCode题解]: Sort Colors

    前言   [LeetCode 题解]系列传送门:  http://www.cnblogs.com/double-win/category/573499.html   1.题目描述 Given an a ...

  2. word2010多级列表编号为什么会变成黑块

    把光标放置在黑块的后面 在键盘上按左方向键,则黑块变灰色(为选中状态) 然后ctrl+shift+s, 出现窗口“apply styles" 点击"reapply", 搞 ...

  3. micropython esp8266 烧录

    MicroPython 介绍 MicroPython 是一个 Python 3 语言的精简.高效实现,其包括 Python 标准库的一小部分,并经过优化,可以运行在微控制器和受限环境中运行. Micr ...

  4. Template 动画

    如果设置Template的动画,也就意味着对每一个具有此Template的对象进行动画处理. 比如对ListBoxI的ItemTemplate进行设置,添加动画,触发器等,每一个ListBoxItem ...

  5. OCP 12c最新考试原题及答案(071-6)

    6.(4-21) choose the best answer: View the Exhibit and examine the structure of the CUSTOMERS table. ...

  6. UIView之setNeedsDisplay与drawRect 和 setNeedsLayout与layoutSubViews

    1.UIView的setNeedsDisplay和setNeedsLayout方法 首先两个方法都是异步执行的.而setNeedsDisplay会调用自动调用drawRect方法,这样可以拿到  UI ...

  7. 在iOS7中修改键盘Return键的类型

    今天将之前运行在iOS7之前的一段代码拿出来,在iOS7的机器上运行,发现键盘上的ReturnKeyType不能被修改了. 经过几番查找资料,了解到iOS7中UISearchBar的结构发生了变化,将 ...

  8. eclipse项目目录展示结构设置

    我因为前后端都搞过, 解除过很多的开发IDE,说真的,很多的项目目录结构都是一级一级分开,然后我可以通过展开等操作来查看文件等资源信息,结果呢?java的开发IDE eclipse默认的项目目录展示简 ...

  9. 洛谷 P3204 [HNOI2010]公交线路

    题面 luogu 题解 矩阵快速幂\(+dp\) 其实也不是很难 先考虑朴素状压\(dp\) \(f[i][S]\) 表示最慢的车走到了\(i\),\([i, p+i-1]\)的覆盖情况 状态第一位一 ...

  10. centos7安装串口终端kermit

    1. 将usb转串口连接到PC上.通过dmesg命令可以查看USB转串口是否被PC识别.显示 ……attachec to ttyUSB0即被识别. 2. 安装kermit.     [seif@cen ...