Lecture 16 Recommender Systems 推荐系统

16.1 问题形式化 Problem Formulation

在机器学习领域,对于一些问题存在一些算法, 能试图自动地替你学习到一组优良的特征。通过推荐系统(recommender systems),将领略一小部分特征学习的思想。

假使有 5 部电影,3部爱情片、2部动作片。  4 个用户为其中的部分电影打了分。现在希望构建一个算法,预测每个人可能给没看过的电影打多少分,以此作为推荐的依据。


下面引入一些标记:
nu       代表用户的数量
nm      代表电影的数量
r(i, j)   如果用户 j 给电影 i 评过分则 r(i, j) = 1
y(i,j)    代表用户 j 给电影 i 的评分 (注:这里 i 和 j 不要搞反)
mj       代表用户 j 评过分的电影的总数

16.2 基于内容的推荐系统 Content Based Recommendations

1 定义

在一个基于内容的推荐系统算法中,假设对于我们希望推荐的东西有一些数据,是这些东西的特征。
现在假设每部电影都有两个特征, x1 代表电影的浪漫程度,x2 代表电影的动作程度。


则每部电影都有一个特征向量,如 x(1)是第一部电影的特征向量,为[0.9 0]。
下面我们采用线性回归模型,针对每一个用户都训练一个线性回归模型,如θ(1) 是第一个用户的模型的参数。 于是有:
θ(j)   用户 j 的参数向量
x(i)   电影 i 的特征向量
对于用户 j 和电影 i,我们预测其评分为:(θ(j))Tx(i)

2 代价函数

针对用户 j,该线性回归模型的代价为预测误差的平方和,加上正则化项:

其中 i: r(i, j) 表示我们只计算那些用户 j 评过分的电影。在一般的线性回归模型中,误差项和正则项应该都是乘以1/2m,在这里我们将m去掉,且不对方差项θ0进行正则化处理。
上面的代价函数只是针对一个用户的,为了学习所有用户,我们将所有用户的代价函数求和:

如果我们要用梯度下降法来求解最优解,我们计算代价函数的偏导数后得到梯度下降的更新公式为:

16.3 协同过滤 Collaborative Filtering

在之前的基于内容的推荐系统中,使用电影的特征,训练出了每一个用户的参数。相反地,如果拥有用户的参数,可以学习得出电影的特征。


但是如果既没有用户的参数,也没有电影的特征,这两种方法都不可行了。可以使用协同过滤算法,同时学习这两者。

优化目标便改为同时针对x和θ进行。是一个:预测 θ,再反过来预测 x, 再预测 θ,再预测 x 的迭代过程。

16.4 协同过滤算法 Collaborative Filtering Algorithm

协同过滤的代价函数定义为:

对代价函数求偏导数:


(注:在协同过滤从算法中,通常不使用方差项,如果需要的话,算法会自动学得。)
协同过滤算法使用步骤如下:


1. 初始 x 和 θ 为一些随机小值
2. 使用梯度下降算法最小化代价函数 J
3. 在训练完算法后,通过计算 θTx 预测用户 j 给电影 i 的评分
通过这个学习过程获得的特征矩阵包含了有关电影的重要数据,这些数据不总是人能读懂的,但是可以用这些数据作为给用户推荐电影的依据。

总结:

16.5 向量化:低秩矩阵分解 Vectorization_ Low Rank Matrix Factorization

协同过滤算法的向量化实现
举例:
1)给出一件产品,能否找到与之相关的其它产品。
2)一位用户最近看上一件产品,有没有其它相关的产品可以推荐给他。

现在有5部电影,4位用户,矩阵 Y 就是一个 5 行 4 列的矩阵,存储每个用户对每个电影的评分数据:

通过使用 θ 和 x 计算,可以预测出每个用户对每个电影打的分数:

现在将所有 x 都集中在一个大的矩阵X中,每一部电影是一行;

将所有 θ 集中在一个大的Θ中,每个用户是一行。

则有:

因为矩阵X乘Θ的转置,在数学上具有低秩属性。因此这个算法也被称为低秩矩阵分解 low rank matrix factorization。

现在已经学习到了特征参数向量,那么可以使用这些向量做一些别的事情,比如度量两部电影之间的相似性。例如,如果一位用户正在观看电影 x(i) ,可以根据两部电影的特征向量之间的距离 ∥x(i) − x(j)∥,寻找另一部相似电影 x(j)

16.6 推行工作上的细节:均值归一化  Mean Normalization

现在新增一个用户 Eve,她没有为任何电影评分,那么我们以什么为依据为 Eve 推荐电影呢?

如果根据之前的模型,因为她没有打分,代价函数第一项为0。算法目标变为最小化最后一项,最后得到 θ(5) 中的元素都是0。现在拿着 θ(5) 预测出的瓶分都是0。这没有什么意义,因此需要做一些处理。


首先需要对结果 Y 矩阵进行均值归一化处理,将每一个用户对某一部电影的评分减去所有用户对该电影评分的平均值:


然后利用这个新的 Y 矩阵来训练算法。 最后在预测评分时,需要在预测值的基础上加回平均值,即预测值等于 (θ(j))Tx(i) + μi 。因此对于 Eve,新模型预测出的她的打分都是该电影的平均分。

【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 16—Recommender Systems 推荐系统的更多相关文章

  1. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 1_Introduction and Basic Concepts 介绍和基本概念

    目录 1.1 欢迎1.2 机器学习是什么 1.2.1 机器学习定义 1.2.2 机器学习算法 - Supervised learning 监督学习 - Unsupervised learning  无 ...

  2. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 15—Anomaly Detection异常检测

    Lecture 15 Anomaly Detection 异常检测 15.1 异常检测问题的动机 Problem Motivation 异常检测(Anomaly detection)问题是机器学习算法 ...

  3. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 14—Dimensionality Reduction 降维

    Lecture 14 Dimensionality Reduction 降维 14.1 降维的动机一:数据压缩 Data Compression 现在讨论第二种无监督学习问题:降维. 降维的一个作用是 ...

  4. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 13—Clustering 聚类

    Lecture 13 聚类 Clustering 13.1 无监督学习简介  Unsupervised Learning Introduction 现在开始学习第一个无监督学习算法:聚类.我们的数据没 ...

  5. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 12—Support Vector Machines 支持向量机

    Lecture 12 支持向量机 Support Vector Machines 12.1 优化目标 Optimization Objective 支持向量机(Support Vector Machi ...

  6. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 11—Machine Learning System Design 机器学习系统设计

    Lecture 11—Machine Learning System Design 11.1 垃圾邮件分类 本章中用一个实际例子: 垃圾邮件Spam的分类 来描述机器学习系统设计方法.首先来看两封邮件 ...

  7. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 10—Advice for applying machine learning 机器学习应用建议

    Lecture 10—Advice for applying machine learning 10.1 如何调试一个机器学习算法? 有多种方案: 1.获得更多训练数据:2.尝试更少特征:3.尝试更多 ...

  8. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 18—Photo OCR 应用实例:图片文字识别

    Lecture 18—Photo OCR 应用实例:图片文字识别 18.1 问题描述和流程图 Problem Description and Pipeline 图像文字识别需要如下步骤: 1.文字侦测 ...

  9. 【原】Coursera—Andrew Ng机器学习—课程笔记 Lecture 17—Large Scale Machine Learning 大规模机器学习

    Lecture17 Large Scale Machine Learning大规模机器学习 17.1 大型数据集的学习 Learning With Large Datasets 如果有一个低方差的模型 ...

随机推荐

  1. mysql主从简单配置

    第一步.配置主从,来自于博文 https://www.cnblogs.com/gl-developer/p/6170423.html 下面配置的步骤就直接复制了. 一.准备工作: 1.主从数据库版本最 ...

  2. Emgucv3.0的安装与配置

    环境:vs2015+Emgucv3.0 Emgu Cv简介: Emgu CV 是.NET平台下对OpenCV图像处理库的封装.也就是OpenCV的.NET版.它运行在.NET兼容的编程语言下调用Ope ...

  3. bat命令1

    echo 命令 打开回显或关闭请求回显功能,或显示消息.如果没有任何参数,echo命令将显示当前回显设置. 语法 echo [{on|off}] [message] Sample:@echo off ...

  4. vw+vh+rem响应式布局

    科普下: 平时很少用的css单位: 1.长度单位: rem:相对长度单位.相对于根元素(即html元素)font-size计算值的倍数; vw:相对于视口的宽度.视口被均分为100单位的vw; vh: ...

  5. android 自己定义checkbox 背景图无效的问题

    http://blog.csdn.net/zuolongsnail/article/details/7106586  正常的定义能够參考这个网址  可是我參考它以后发现我执行时候 根本不工作嘛  结果 ...

  6. python 抓取数据,pandas进行数据分析并可视化展示

    感觉要总结总结了,希望这次能写个系列文章分享分享心得,和大神们交流交流,提升提升. 因为半桶子水的水平,一直在想写什么,为什么写,怎么写. 直到现在找到了一种好的办法: 1.写什么 自己手上掌握的,工 ...

  7. Oracle安装-------实例化EM 配置文件时出错问题 ( 转 )

    命令行中执行: C:\Users\Administrator>emca -repos drop   EMCA 开始于 2013-4-23 20:13:58 EM Configuration As ...

  8. 访问进程环境变量environ时的一个坑

    在unistd.h中定义了变量char **environ;来表示当前所有环境变量,一般来说访问特定环境变量可以用getenv,但是想遍历所有环境变量就得使用environ. 即在程序内全局声明ext ...

  9. 方法 中 void 的解释

  10. 阿里云安装 virtio 驱动

    为避免部分服务器.虚拟机或者云主机的操作系统在阿里云控制台 导入镜像 后,使用该自定义镜像创建的 ECS 实例无法启动,您需要在导入镜像前检查是否需要在源服务器中安装 Xen(pv)或 virtio ...