推荐系统(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. 记一次艰苦卓绝的Discuz x3 论坛升级过程

    首先吐槽一下discuz 的官方论坛. 你要想下载到正确版本的discuz实在不容易找到. 有兴趣自己去看吧. 就是因为这个原因, 我本来想要安装x2.5版本(那时x3 还是Beta版本), 结果不小 ...

  2. [java]基于UDP的Socket通信Demo

    java课编程作业:在老师给的demo的基础上实现客户端发送数据到服务器端,服务器端接受客户端后进行数据广播. 整体功能类似于聊天室,代码部分不是太难,但是在本机测试的时候出现这样的问题: 服务端通过 ...

  3. Slq怎么样获取首条记录和最后一条记录

    sql如何查询表的第一条记录和最后一条记录 方法一:使用top select TOP 1 * from apple;TOP 1 表示表apple中的第一条数据 select TOP 1 * from ...

  4. MongoDB高级知识-易使用

    MongoDB高级知识-易使用 mongodb是一个面向文档的数据库,而不是关系型数据库.不采用关系模型主要是为了获取更好的扩展性.当然还有其他的一些好处. 与关系型数据库相比,面向文档的数据库不再有 ...

  5. java远程开关机

    最近,很多客户向我们反馈终端启动后异常的问题,因此,我自己做了一个远程开关的小工具,该工具的目的在于通过批量的方式来控制终端启动.其设计逻辑是通过服务端发送cmd指令 ,客户端接受并执行指令,把结果返 ...

  6. 性能测试工具Locust的使用----TaskSet类~~task任务嵌套

    内容来自网络 http://blog.sina.com.cn/s/blog_a7ace3d80102w9r0.html TaskSet类 正如字面意思,TaskSet类定义了每个用户的任务集合,测试任 ...

  7. Python扫描邮件主题,并打印

    import imaplib import email from email.header import decode_header import datetime if __name__ == '_ ...

  8. Windows server 2008 R2安装MySQL 32位ODBC驱动!

    在Windows server 2008 R2安装MySQL 32位ODBC驱动,总是提示错误,我安装了DOTNET4的库,同时安装了VC2008.VC2012.VC2013的支持库,怎么还不行呢?M ...

  9. 不得不说fdm真的好用

    记忆力太差系列 挺好用的软件 下载器FDM真的很好用

  10. 2016级算法第一次练习赛-A.群鸦的盛宴

    858 群鸦的盛宴 题目链接:https://buaacoding.cn/problem/858/index 思路 本题乍一眼看过去,你可能会想到使用一个二维数组A[51][51]来记录从i到j的路线 ...