机器学习(二十二)- Recommender Systems
来源:互联网 发布:软件使用手册编写目的 编辑:程序博客网 时间:2024/05/25 23:26
接下来,我们要介绍的是关于推荐系统的机器学习算法,什么是推荐系统,其实在现在已经很普遍了,即通过用户的历史数据来对用户进行产品推荐的系统,比如推荐电影,推荐商品等。推荐系统又分为两个步骤,预测和推荐,首先进行预测,预测用户对于产品的喜好情况,然后将Top5或者Top10推荐他。接下来我们就以推荐电影为例。
Predicting Movie Ratings
Problem Formulation
首先我们考虑预测这个步骤,基于我们自己的真实经历,我们在豆瓣,优酷等视频网站上,看完电影呢,我们会给我们看过的电影进行一个打分(当然也可能不会,比如我就没有这个习惯),5分表示非常喜欢,觉得很棒,分数递减表示喜欢程度下降,最低分0分,表示完全不喜欢。这就构成了我们下图中的
那么预测的任务,就是根据上图中已有的数据来预测出问号部分的评分情况。实际中,这个
Content-based Recommendations
接下来介绍第一种推荐算法,基于内容的推荐算法。
我们的任务是解决上图中的问号,下图是对于上图的参数的解释,那么可以发现的是,我们多了一个
那么现在其实很明了了,我们要拟合的就是这个
同样地,利用梯度下降进行参数更新,不再赘述。
那么最后讲讲为什么这种方法叫做 content-based 呢,其实就是因为我们已知了这样一个关于我们要推荐对象的本身的特征矩阵(对于电影就是它的爱情片指数,动作片指数等),但现实生活中,这样的矩阵是很难拿到的,首先是因为很难界定(比如对于同样一部电影有的人任务它的动作指数低,有的人认为高),其次工作量太大(得有专门一批人去看电影,然后依次对这些特征量进行打分,电影那么多),最后特征量的选取很难(要选取多少特征,哪些特征,才能保证能够进行区分呢)。由于以上种种原因,content-based 算法实用性不是很大。接下来就着重讲解一个效果不错的算法——协同过滤算法。
Collaborative Filtering
协同过滤算法有一个非常重要的特点就是它能够自主地进行特征学习,它能自己学习决定运用什么特征,这就大大解决了我们刚刚提出的问题。
content-based是我们预先知道了
于是,我们考虑随机生成一个
看到这个,我再一次有了醍醐灌顶的感觉,但同时我又有一个疑惑,为什么这样的算法可行呢,为什么随机初始化然后就能迭代到最优解呢。我自己琢磨了一会儿,也得出了结论,这是建立在一定的数据量上的,因为推荐系统本质上一系列线性方程的组合,当我们的方程数,超过我们的未知数个数的时候,我们总能找到一个解的。
Algorithm
接下来就给出目标函数以及算法过程,需要提出的是,没有
Low Rank Matrix Factorization
Vectorization: Low Rank Matrix Factorization
下图为协同过滤算法的矩阵表现形式,协同过滤算法同时也被叫做 Low Rank Matrix Factorization(低秩矩阵分解),因为
当我们完成了低秩矩阵分解得到了
Implementational Detail: Mean Normalization
最后呢,我们考虑一种特殊情况,如果一个新用户进来,他没给任何电影打过分数,那么通过协同过滤算法,我们将得到他的喜好向量将是一个全0的向量,那么显然这样是不合理的,于是我们引入mean normalization来解决这个问题。
下图就是mean normalization的过程,对
- 机器学习(二十二)- Recommender Systems
- Stanford 机器学习-Recommender Systems
- Stanford 机器学习笔记 Week9 Recommender Systems
- Andrew NG 机器学习 笔记-week9-异常检测和推荐系统(Anomaly Detection and Recommender Systems)
- 推荐系统(Recommender Systems)
- Andrew Ng机器学习week9(Anomaly Detection and Recommender Systems)编程习题
- [Coursera机器学习]Anomaly Detection and Recommender Systems WEEK9编程作业
- Andrew NG 机器学习 练习8-Anomaly Detection and Recommender Systems
- recommender systems
- 学习笔记-推荐系统(Recommender systems)
- 机器学习(十二)
- 白话机器学习算法(二十二)Adaboost
- 白话机器学习算法(二十二)Adaboost
- 机器学习基础(二十二)—— decision tree
- 《Wide and Deep Learning for Recommender Systems》学习笔记
- 《Wide & Deep Learning for Recommender Systems》 学习记录
- About Recommender Systems
- Recommender Systems Handbook读书笔记
- 自学Unity3D游戏开发(4)
- Golang开发环境LiteIDE编辑区配色方案
- epoll模型讲解/源码分析
- 如何算掌握了Java EE
- 关于_beginthreadex、_beginthread和CreateThread的区别
- 机器学习(二十二)- Recommender Systems
- Latax 排版问题 报错: undefined control sequence \includegraphics
- qmake: could not exec '/usr/lib/x86_64-linux-gnu/qt4/bin/qmake': No such file or directory
- C++类的定义和声明
- Python数据结构练习
- Python教程:进击机器学习(三)--Numpy
- ZZULIOJ【1116】删除元素【数组】
- 学习Ethereum需要使用的工具以及技术
- Spring Boot,IntelliJ IDEA,JSP,启动报错java.lang.NoClassDefFoundError: javax/servlet/ServletContext