1.问题规划

 图1.推荐系统在研究什么?

例子:预测电影的评分。

当知道n_u用户数,n_m电影数;r(i,j)用户j评价了电影i,那么就是1;y(i,j)如果r(i,j)为1,那么就给出评分。

问题就是根据现有数据训练学习算法,预测未评分的电影。

2.基于内容的推荐算法

图2.基于内容的推荐系统

对5部电影进行类型分析,有两个指标x_1,x_2,分别是爱情、动作,加上x_0之后形成指标。

从线性回归的角度来说,对每一个用户训练一个回归模型,每个用户都对应系数,对用户1Alice的参数[0,5,0]T,即对爱情片评分高,那么x电影参数输入后就得出大分为4.95.

图3.问题公式

这里引入了代价函数公式,介绍了参数的含义,r(i,j)即是否已经评分,y(i,j)是如果评分的分数。

θ(j)是对用户j的参数,x(i)是电影i的特征向量,m(j)是评分电影的数量,并且公式加入了正则项。

在优化时,由于m(i)是常数,所以可以将其去掉,优化时仍能得到最优的theta_j。

图4.最优化算法

第一个公式是对所有的参数进行求和并最小化,记作J(θ1,θ2,,,,θm)。

梯度下降更新,当k=0,也就是常数项;当k≠0,即需要正则化非常数项。

基于内容的推荐算法是有一个前提的,就是电影的所有特征指标类型都是已知的,但是这通常不会很符合正常情况,下节介绍不是基于内容的推荐算法。

3.协同过滤

图5.问题动机

由于电影的成分向量通常是不可得的,所以通过另一种方法来获取电影的成分向量。

假设用户给出了对爱情电影和动作电影的喜爱程度,即系数矩阵,那么根据评分,就可以得出对应的电影的成分向量特征。

图6.最优化算法

对一个电影求成分向量,通过最优化式1。

对n_m个电影求最优化,需要加上一个求和项,对n_m个电影的参数求和并最小化。

图7.协同过滤

上节讲的是给定电影的成分向量和评分,可以预测出用户偏好向量。

本节讲的是给出用户偏好向量,可以估测出x_(1),,,,,电影的成分向量。

那么就得出,首先通过随机初始化偏好向量,就可以根据对电影的已有评分预测出成分向量,那么再根据方法1,预测出偏好向量,以此类推,得到最终的优化结果。

4.协同过滤算法

图8.协同过滤最优化目标

对式1中,前一项的求和是如果用户j评分了,那么就将某一用户对电影评分的分数求和。

对式2中,正好相反,是对一个电影来说,将所有用户评分求和。

式3是将其合并,作为一个最小化公式。

并且最后提到x和θ中不存在常数项,即1项,那么就是n维的,不是n+1维的。

图9.协同过滤算法

1.首先初始化成分向量和用户偏好向量为较小的随机值。

2.使用梯度下降法最小化代价函数,对i电影的第k个属性的更新公式,与对j用户对第k个电影的评分更新公式。

3.对每个用户得出了参数θ,并且对一个电影学习到了特征向量x,那么就是已通过θTx来得到评分。

如用户j对电影i没有评分,那么就可以通过这个θTx来进行预测。

5.矢量化:低秩矩阵分解

图10.低秩矩阵分解

将电影的评分作为矩阵Y,那么预测的评分就如右边大矩阵,其中列向量是一个用户对所有电影的评分,行向量是一个电影所有的评分。

那么如何进行简化呢?

首先将X矩阵表示为左下,θ矩阵表示为右下,那么整个大矩阵就可表示为 XθT。

图11.寻找相似电影

那么如何向用户推荐相似电影呢?

根据电影的特征向量,找到5个与当前电影特征向量最小距离的,即为相似电影。也不只是电影,可以拓展到任何其他物品。

6.实施细节:均值规范化

图12.加入有用户从未评分

假设偏好向量中特征数为2,若Eve未对任一电影评分;

此时由于加入了正则化项,且式子前半部分没有对θ有所限制,所以会得到,Θ_(5)=0向量的结果。

那么此时就这个用户的评分预测就会产生误差。

需要使用均值归一化来解决问题。

图13.均值归一化

将电影评分形成矩阵,并按行求出没个电影的评分均值得到均值向量μ, Y-μ之后,得到新的均值矩阵。

在使用协同过滤算法训练出theta_j与x_i之后,在进行预测电影评分时,仍要+均值。

对于之前出现的问题,用户5得到的偏好向量仍然为0,但是现在加上了均值,就避免了评分全为0的现象,即根据电影的均值评分进行推送了。

Andrew Ng-ML-第十七章-推荐系统的更多相关文章

  1. Andrew Ng机器学习第五章——多变量线性回归

    一.多变量线性回归的技巧之一——特征缩放 1.为什么要使用特征缩放? 特征缩放用来确保特征值在相似的范围之内. 设想这样一种情况(房价预测),两个特征值分别是房子的大小和卧室的数量.每个特征值所处的范 ...

  2. Andrew Ng机器学习第三章——线性回归回顾

    一些概念: 向量:向量在矩阵中表示为只有一列的矩阵 n维向量:N行1列的矩阵. 利用矩阵计算可以快速实现多种结果的计算. 如下图,给出四个房子大小的样本,有四个假设函数对房子价格进行预测.构造下面的矩 ...

  3. Andrew Ng机器学习课程笔记(五)之应用机器学习的建议

    Andrew Ng机器学习课程笔记(五)之 应用机器学习的建议 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7368472.h ...

  4. Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计

    Andrew Ng机器学习课程笔记(六)之 机器学习系统的设计 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7392408.h ...

  5. Andrew Ng机器学习课程笔记(四)之神经网络

    Andrew Ng机器学习课程笔记(四)之神经网络 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7365730.html 前言 ...

  6. Andrew Ng机器学习课程笔记(三)之正则化

    Andrew Ng机器学习课程笔记(三)之正则化 版权声明:本文为博主原创文章,转载请指明转载地址 http://www.cnblogs.com/fydeblog/p/7365475.html 前言 ...

  7. 斯坦福大学Andrew Ng - 机器学习笔记(8) -- 推荐系统 & 大规模机器学习 & 图片文字识别

    大概用了一个月,Andrew Ng老师的机器学习视频断断续续看完了,以下是个人学习笔记,入门级别,权当总结.笔记难免有遗漏和误解,欢迎讨论. 鸣谢:中国海洋大学黄海广博士提供课程视频和个人笔记,在此深 ...

  8. Logistic回归Cost函数和J(θ)的推导----Andrew Ng【machine learning】公开课

    最近翻Peter Harrington的<机器学习实战>,看到Logistic回归那一章有点小的疑问. 作者在简单介绍Logistic回归的原理后,立即给出了梯度上升算法的code:从算法 ...

  9. (原创)Stanford Machine Learning (by Andrew NG) --- (week 9) Anomaly Detection&Recommender Systems

    这部分内容来源于Andrew NG老师讲解的 machine learning课程,包括异常检测算法以及推荐系统设计.异常检测是一个非监督学习算法,用于发现系统中的异常数据.推荐系统在生活中也是随处可 ...

随机推荐

  1. 一种新型聚类算法(Clustering by fast search and find of density peaksd)

    最近在学习论文的时候发现了在science上发表的关于新型的基于密度的聚类算法 Kmean算法有很多不足的地方,比如k值的确定,初始结点选择,而且还不能检测费球面类别的数据分布,对于第二个问题,提出了 ...

  2. vim 正则替换【转】

    :[range]s/from/to/[flags] range:搜索范围,如果没有指定范围,则作用于但前行. :1,10s/from/to/ 表示在第1到第10行(包含第1,第10行)之间搜索替换: ...

  3. LeetCode——Implement Trie (Prefix Tree)

    Description: Implement a trie with insert, search, and startsWith methods. Note:You may assume that ...

  4. C++ #include—尖括号和双引号的区别

    如果你还看一些别的C++教程,那么你可能很早就发现了,有些书上的#include命令写作#include <文件名>,但有时候又会出现#include "文件名".你会 ...

  5. jQuery事件处理(六)

    1.通过一步步调试的的方法观察了一下存放到cache中的事件及其处理程序的数据格式: { events : { // 根据事件类型存放添加到该元素上的所有事件,下面以click为例 click : [ ...

  6. 题目1459:Prime ring problem(素数环问题——递归算法)

    题目链接:http://ac.jobdu.com/problem.php?pid=1459 详解链接:https://github.com/zpfbuaa/JobduInCPlusPlus 参考代码: ...

  7. nginx(二)----ubuntu14.04下启动或重启和关闭nginx

    /** * lihaibo * 文章内容都是根据自己工作情况实践得出. *如有错误,请指正 *转载请注明出处 */ 一.启动 /usr/local/nginx/sbin/nginx或者cd /usr/ ...

  8. 基本类型算法题目学习(EPI)

    1.关于奇偶校验的方法中,如何快速的求取一个64-bit的数字的奇偶校验位.(如果1的位数为奇数,则奇偶校验位为1,如果1的位数为偶数,则奇偶校验位为0) a.暴力枚举法采用一位一位进行计算,一位一位 ...

  9. [移动] Xamarin install

    It was not possible to complete an automatic installation. This might be due to a problem with your ...

  10. python pytest测试框架介绍四----pytest-html插件html带错误截图及失败重测机制

    一.html报告错误截图 这次介绍pytest第三方插件pytest-html 这里不介绍怎么使用,因为怎么使用网上已经很多了,这里给个地址给大家参考,pytest-html生成html报告 今天在这 ...