Andrew Ng 机器学习笔记 ---By Orangestar

Week_9(推荐系统)

1. Problem Formulation

这节就仅仅简单地介绍了一下 推荐系统的应用和实例。完全可以略。只需要清楚如何表示 评分还有未评分

2. Content Based Recommendations

上节课谈到的电影评分推荐机制是

由用户已评分过的电影来预测用户未评分过的电影

这节课我们来学习 “基于内容的推荐”

我们首先用x_1,x_2来表示一部电影是属于爱情电影还是动作电影的比率,也就是成分

然后,每部电影我们都可以用一个特征向量来表示

所以,我们可以把对每个观众打分的预测,当成一个独立的线性回归问题,具体来说,比如对每一个用户j,我们都学习出一个参数\(\theta^{(j)}\) ,在这里是一个三维向量。 当然,普遍来说是n+1维向量

如图所示:

总结:

那么,问题来了,如何来计算 \(\theta\)?

计算\(\theta\)本质上就是一个基本的最小二乘回归或者线性回归

在这里可以把前面的常数项去掉

再重复一下:

所以,可以采取和线性回归一样的优化方法:(梯度下降)

与线性回归的唯一区别就是 : 没有1\m项!

好了,这就是基于推荐内容的推荐系统

下一次,我们讲了解没有推荐内容的推荐系统

注:

在这里摘抄一下别人的笔记:

3. Collaborative Filtering(协同过滤)

也就是 相似推荐? 例如你买了一本书,然后买完后,会显示:买了这本书的用户也买了其他书。

现在我们的情况:

然后通过用户对不同种类的电影的评价得到:

让我们写正式一点:

对于一个的时候:

当然,我们面对多个的时候:

这时候,我们需要的梯度下降规则就是:

总结:这相当于从theta推导x,

上次我们是从x来推导theta

4. Collaborative Filtering Algorithm 协同过滤算法的改进

在上一节中,我们介绍了2种算法:

那么,如何同时计算出theta和x呢?

我们可以发现,这两项本质上是一样的:

所以,要同时计算theta和x就可以优化这个函数:

以前是鸡生蛋蛋生鸡,现在是一起生。

不过要注意的是,在新的算法中,

我们要去掉x_0 = 1 这个前提,因为

X和\theta此时变成n维

总结:“

注意,使用新算法的时候,开始的时候由于2个参数都没有计算出来,也没有得到,所以要随机初始化!!!



5. Vectorization: Low Rank Matrix Factorization(算法的向量化及其实例)

先看一个实例:

所以这时候Y就包含了这些数据了

然后,如图所示,可以将这个矩阵分解:

这种方法也叫:low rank matrix factorization

低秩矩阵分解

如何应用?

6. Implementational Detail: Mean Normalization

细节介绍:均值归一化

例子:有一个用户没有给任何一个电影评分

这样我们就要采用均值归一化了

然后。使用均值归一化:

然后,使用过均值归一化后,我们要对这个矩阵进行操作,像之前一样用协同过滤算法

如图:



最后,感觉这一周学得不是很好,特别是推荐算法这一节,概念还是很模糊,可能是由于前面的下线性回归算法没有搞清楚吧。

做编程作业的时候一定要搞清楚!!!

week_9(推荐系统)的更多相关文章

  1. SVD的几何意义,以及在去噪,推荐系统中的应用

    很多文章说到奇异值分解的时候总是大概罗列下它的功能,并没有对功能及物理意义进行过多的阐述,现在我来对奇异值进行整理一下. 一 奇异值分解 对任意的矩阵A∈Fmn,rank(A)=r(矩阵的秩),总可以 ...

  2. F#之旅6 - 简单AV推荐系统

    上回说到用F#来写爬虫,这只是F#学习第一阶段的第一步.最开始,就对第一阶段做了这样的安排: 1.爬虫爬取AV数据 2.数据处理和挖掘 3.数据可视化(使用ECharts) 4.推荐系统 第一步很快就 ...

  3. [Recommendation System] 推荐系统之协同过滤(CF)算法详解和实现

    1 集体智慧和协同过滤 1.1 什么是集体智慧(社会计算)? 集体智慧 (Collective Intelligence) 并不是 Web2.0 时代特有的,只是在 Web2.0 时代,大家在 Web ...

  4. 推荐相关学习 & 典型算法、典型特征、典型推荐系统框架

    总的来说,信息爆炸,产生了信息过载.解决的方法主要有两类:检索和推荐.检索是主动的有目的的.意图明确,推荐是非主动的.意图不明确. 推荐方面最经典的,就是协同过滤推荐了.我博客这里有两篇,一篇偏理论, ...

  5. 推荐系统学习--cb+cf 初见

    对于推荐系统的推出有两个条件:1.信息过载 ,2用户没有明确的需求 推荐系统算法中常见的有基于内容推荐,协同过滤推荐,协同过滤还可以分为基于人的协同过滤,基于内容协同过滤:社会推荐等 如何理解这些推荐 ...

  6. Amazon的推荐系统

    本文引自http://blog.csdn.net/fwing/article/details/4942886 现在的推荐系统特别火啊.做得最好的应该是Amazon了. 上面是Amazon的图书推荐. ...

  7. Java程序员的日常——SpringMVC+Mybatis开发流程、推荐系统

    今天大部分时间都在写业务代码,然后算是从无到有的配置了下spring与mybatis的集成. SpringMVC+Mybatis Web开发流程 配置数据源 在applicationContext.x ...

  8. 转:netflix推荐系统竞赛

    原文链接:Netflix recommendations: beyond the 5 stars (Part 1), (Part 2) 原文作者:Xavier Amatriain and Justin ...

  9. 推荐系统(协同过滤,slope one)

    1.推荐系统中的算法: 协同过滤: 基于用户 user-cf 基于内容 item –cf slop one 关联规则 (Apriori 算法,啤酒与尿布) 2.slope one 算法 slope o ...

随机推荐

  1. 我的 Kafka 旅程 - Producer

    原理阐述 Producer生产者是数据的入口,它先将数据序列化后于内存的不同队列中,它用push模式再将内存中的数据发送到服务端的broker,以追加的方式到各自分区中存储.生产者端有两大线程,以先后 ...

  2. Netty 学习(七):NioEventLoop 对应线程的创建和启动源码说明

    Netty 学习(七):NioEventLoop 对应线程的创建和启动源码说明 作者: Grey 原文地址: 博客园:Netty 学习(七):NioEventLoop 对应线程的创建和启动源码说明 C ...

  3. proxy解决跨域问题

    首先我们在本地开发,域名都是localhost,当我们需要请求后台数据时,就会出现跨域的问题 下面就是在vue.config.js配置文件里: devServer: {     proxy: {    ...

  4. NOIP 2013 洛谷P1966 火柴排队 (树状数组求逆序对)

    对于a[],b[]两个数组,我们应选取其中一个为基准,再运用树状数组求逆序对的方法就行了. 大佬博客:https://www.cnblogs.com/luckyblock/p/11482130.htm ...

  5. .NET MAUI 社区工具包 1.3版本发布

    2022 年 10 月 4 日,微软发布了 .NET MAUI 社区工具包的 1.3 版,具体参见微软官方博客:https://devblogs.microsoft.com/dotnet/announ ...

  6. day10-习题

    习题 1.Homework01 (1) D -- 没有在别名上加引号(ps:别名的as可以省略) (2) B -- 判断null或非空不能用不等于号 (3) C 2.Homework02 写出查看de ...

  7. 细聊.Net Core中IServiceScope的工作方式

    前言 自从.Net Core引入IOC相关的体系之后,关于它的讨论就从来没有停止过,因为它是.Net Core体系的底层框架,你只要使用了.Net Core的时候就必然会用到它.当然关于使用它的过程中 ...

  8. fake_useragent—Error occurred during loading data报错问题

    问题如下 解决方法: 在自己的临时文件下新建一个fake_useragent_0.1.11.json 把下面的文字复制进去 临时文件 直接输入cmd %temp% 即可进去 { "rando ...

  9. beego学习———安装bee

    Bee安装 有各种坑,一会儿GOPATH的问题,一会儿局部的问题了 唉,搞了一个小时 很重要的问题!!!!!!!!!!!! beego的bee工具只能强制新建项目在GOPATH/src目录下 虽然在别 ...

  10. 基于SqlSugar的开发框架循序渐进介绍(21)-- 在工作流列表页面中增加一些转义信息的输出,在后端进行内容转换

    有时候,为了给前端页面输出内容,有时候我们需要准备和数据库不一样的实体信息,因为数据库可能记录的是一些引用的ID或者特殊字符,那么我们为了避免前端单独的进行转义处理,我们可以在后端进行统一的格式化后再 ...