Stanford 机器学习笔记 Week9 Recommender Systems
来源:互联网 发布:知乎怎么增加 编辑:程序博客网 时间:2024/06/06 00:59
Predicting Movie Ratings
Problem Formulation
推荐系统举例:
根据各个用户的打分记录,预测某用户对一没看过的电影的打分情况。
Content Based Recommendations
解决上一节问题的一个方法:
对于每个电影抽象出2个属性,romance 和 action,并手动赋值。再加上bias unit x0 = 1,就构成了表示每个电影属性的向量x(i)。那么这个问题就可以当成linear regression问题来解决。对于每个人求出向量
cost function:
做Gradient descent时的偏导数:
Collaborative Filtering
Collaborative Filtering
上一节每个电影的属性具体数值时人为设定的。假设我们已经知道每个人的喜好情况θ(i),那么我们可以根据打分情况计算出x(j),这又是一个线性回归问题。
偏导数为:
给定θ可以求出x,给定x可以求出θ,因此我们有一个初步的算法:随机初始化θ,然后计算X,再用X计算θ,X->θ->X->θ……直到收敛。这就是Collaborative Filtering(协同过滤)的思想。
Collaborative Filtering Algorithm
为了提高上一节算法的计算速度,可以将两个步骤合并起来:
因为两个步骤的Cost Function的前半部分实际是一样的,都是遍历了每个r(i,j) == 1的数对。新Cost Function同时计算θ和X。
注意因为同时考虑了θ和X,所以不需要手动设定bias unit θ0和X0了。
具体算法如下:
在初始化时,和神经网络中一样,为了计算出的x(i)不一样,不能全部初始化为0,而是初始化为接近0的极小值。
Low Rank Matrix Factorization
Vectorization: Low Rank Matrix Factorization
本节首先说明了上述算法可以使用矩阵运算实现。
当运行算法结束后会得到各个电影许多属性的值,虽然这些属性具体表示什么含义需要人类自己去发现,但是在实践中,各属性的意义一般是十分明显的。
如何判断两个电影是否类似?计算属性向量的欧氏距离就可以了。
Implementational Detail: Mean Normalization
上述例子中,假设有一个人t没有对任何影片打过分。那么在执行算法时,Cost Function的前半部分中,没有一个r(i,j) == 1,因此前半部分与此人无关,会影响的只有后半部分的regularization part。这使得一定会将θ(t)预测为全0的向量。
解决方式是:
对于每个电影计算评价的平均值,然后把每个元素减去该平均值,再执行协同过滤。做预测时,把得到的结果再加上平均值。这样对于一个没对任何电影做过评价的人,他的θ向量将会等于其他所有人对各电影打分的平均值。
- Stanford 机器学习笔记 Week9 Recommender Systems
- Stanford 机器学习-Recommender Systems
- Stanford 机器学习笔记 Week9 Anomaly Detection
- Andrew NG 机器学习 笔记-week9-异常检测和推荐系统(Anomaly Detection and Recommender Systems)
- Andrew Ng机器学习week9(Anomaly Detection and Recommender Systems)编程习题
- [Coursera机器学习]Anomaly Detection and Recommender Systems WEEK9编程作业
- NG机器学习week9 Recommender System
- 机器学习(二十二)- Recommender Systems
- Coursera机器学习 Week9 笔记
- 学习笔记-推荐系统(Recommender systems)
- stanford 机器学习笔记
- 《Wide and Deep Learning for Recommender Systems》学习笔记
- 机器学习(Stanford)笔记一
- Stanford 机器学习笔记 Week2
- Andrew Ng机器学习课程笔记--week9(上)
- Andrew Ng机器学习课程笔记--week9(下)
- Andrew Ng机器学习笔记week9 异常检测、推荐系统
- Andrew NG 机器学习 练习8-Anomaly Detection and Recommender Systems
- OC阅读笔记三:动态绑定
- JDK源码分析-ArrayList分析
- makefile文件没写好导致程序core dump的定位经历与反思------又是"协议"不一致产生的core dump
- JavaScript中数组的操作
- 左式堆 斜堆
- Stanford 机器学习笔记 Week9 Recommender Systems
- 闭关日记 Day14
- Python 程序设计语言 笔记(二)
- How to Flash an SD Card for Raspberry Pi
- XML - 十分钟了解XML结构以及DOM和SAX解析方式
- java中的BigInteger(很好很强大)(转)
- 欢迎Adobe Animate CC 2015, Flash Professional的新时代!
- 今日BBC
- Problem D: 链表的基本运算(线性表)