推荐算法从入门、进阶到高级
2017-09-03 00:14
183 查看
推荐的算法的重要性我就不多说了,反正是各种重要。
最近一段时间结合部门业务,我仔细的研究了各种推荐算法,在此我会附上相应的书籍和文献,帮助大家迅速的入门进阶,最终进入推荐算法的高手行列。
推荐算法分为:1.协同的推荐算法;2.基于内容的推荐算法;3.混合的推荐算法
在甩干货之前,补充一些常识:
机器学习、深度学习、推荐算法和数据挖掘的关系?
个人认为(而且好多资料中写道(具体什么资料这个我真记不清了,以后看到原文我会补上))机器学习是一个宏观的方法论或者学习理论,是一个方法论范畴,深度学习是机器学习的一个小分支,包括逐渐火的迁移学习都是机器学习的分支,所有它们的学习方法和机器学习相同,当然深度学习可以解释大部分模型(现在的模型无非是线性的和非线性的,这里使用大部分,是为了稳妥起见,当然说全部的模型,在现阶段也是可以接受的),现在流行的LR(逻辑回归),LFM(带隐变量的逻辑回归,其实就是在逻辑回归的基础上增加各个变量的相互作用而已),xgboost(梯度决策树), RF(随机森林)等都可以用神经网络表示,无非是激活函数的选择和训练策略(比如dropout等)的选择而已。
推荐算法也是属于机器学习范畴,属于它的一个分支,目前流行的推荐算法:CF(协同过滤),MF(矩阵分解),PMF(概率矩阵分解),cf-dnn(协同神经网络过滤),都可以用机器学习的理论解释。
数据挖掘是一个应用层面,是一个工程的问题,它包括数据库、检索、算法等好多方面。数据挖掘需要机器学习算法支持和指导。
废话说完,开始甩干货
推荐算法入门:user_cf,item_cf,聚类算法
参考资料:《推荐系统实践》项亮 ;Amazon.com Recommendations Item-to-Item Collaborative Filtering
推荐算法进阶: MF(基于矩阵分解的推荐算法,变种很多,SVD,SVD++等),PMF(基于概率的矩阵分解,使用贝叶斯学派的思想进行矩阵分解,特点是各种假设服从高斯分布,为什么都假设服从高斯分布呢?统计学中有大数定律支持,不知道大数定理的朋友自行脑补,只要采样足够多,都会收敛于正态分布;当然这种假设也有不准确的时候,使用之前要判断一下数据分布是否符合高斯分布,如果不符合可以采用方法变成高斯分布),根据MF和PMF可以产生很多变种,比如基于社交网络的推荐算法,其实就是一类隐变量与其他因素共同影响。有可能有n多个数据源决定矩阵分解中两类隐变量(user_embed,item_embed)
参考资料:
matrix factorization techniques for recommender systems
Probabilistic Matrix Factorization
SoRec: Social Recommendation Using Probabilistic Matrix Factorization
还有其他的一些带隐反馈的论文
推荐系统高级:cf_dnn,就是使用神经网络或者机器学习的思想解决推荐问题,一般的推荐的问题就变成了有监督的机器学习问题。使用神经网络的时候,有时候会求user和item的隐向量,通常采用one-hot编码表示user和item,在通过权重得到隐向量,当user和item量很大的时候,比如我最近训练的一个模型,用户10万,物品1千万,如果直接使用one-hot的编码很容易导致内存不够,这个时候一般整一个embeding层,这里embeding相当于一个字典,是自己初始化生成的,user或者item可以到这里查找对应的隐向量。
参考资料:
AutoRec Autoencoders Meet Collaborative Filtering
Collaborative Filtering with Stacked Denoising AutoEncoders and Sparse Inputs
Hybrid Collaborative Filtering with Autoencoders
Neural Collaborative Filtering
还有其他相关的基于神经网络推荐算法
最近一段时间结合部门业务,我仔细的研究了各种推荐算法,在此我会附上相应的书籍和文献,帮助大家迅速的入门进阶,最终进入推荐算法的高手行列。
推荐算法分为:1.协同的推荐算法;2.基于内容的推荐算法;3.混合的推荐算法
在甩干货之前,补充一些常识:
机器学习、深度学习、推荐算法和数据挖掘的关系?
个人认为(而且好多资料中写道(具体什么资料这个我真记不清了,以后看到原文我会补上))机器学习是一个宏观的方法论或者学习理论,是一个方法论范畴,深度学习是机器学习的一个小分支,包括逐渐火的迁移学习都是机器学习的分支,所有它们的学习方法和机器学习相同,当然深度学习可以解释大部分模型(现在的模型无非是线性的和非线性的,这里使用大部分,是为了稳妥起见,当然说全部的模型,在现阶段也是可以接受的),现在流行的LR(逻辑回归),LFM(带隐变量的逻辑回归,其实就是在逻辑回归的基础上增加各个变量的相互作用而已),xgboost(梯度决策树), RF(随机森林)等都可以用神经网络表示,无非是激活函数的选择和训练策略(比如dropout等)的选择而已。
推荐算法也是属于机器学习范畴,属于它的一个分支,目前流行的推荐算法:CF(协同过滤),MF(矩阵分解),PMF(概率矩阵分解),cf-dnn(协同神经网络过滤),都可以用机器学习的理论解释。
数据挖掘是一个应用层面,是一个工程的问题,它包括数据库、检索、算法等好多方面。数据挖掘需要机器学习算法支持和指导。
废话说完,开始甩干货
推荐算法入门:user_cf,item_cf,聚类算法
参考资料:《推荐系统实践》项亮 ;Amazon.com Recommendations Item-to-Item Collaborative Filtering
推荐算法进阶: MF(基于矩阵分解的推荐算法,变种很多,SVD,SVD++等),PMF(基于概率的矩阵分解,使用贝叶斯学派的思想进行矩阵分解,特点是各种假设服从高斯分布,为什么都假设服从高斯分布呢?统计学中有大数定律支持,不知道大数定理的朋友自行脑补,只要采样足够多,都会收敛于正态分布;当然这种假设也有不准确的时候,使用之前要判断一下数据分布是否符合高斯分布,如果不符合可以采用方法变成高斯分布),根据MF和PMF可以产生很多变种,比如基于社交网络的推荐算法,其实就是一类隐变量与其他因素共同影响。有可能有n多个数据源决定矩阵分解中两类隐变量(user_embed,item_embed)
参考资料:
matrix factorization techniques for recommender systems
Probabilistic Matrix Factorization
SoRec: Social Recommendation Using Probabilistic Matrix Factorization
还有其他的一些带隐反馈的论文
推荐系统高级:cf_dnn,就是使用神经网络或者机器学习的思想解决推荐问题,一般的推荐的问题就变成了有监督的机器学习问题。使用神经网络的时候,有时候会求user和item的隐向量,通常采用one-hot编码表示user和item,在通过权重得到隐向量,当user和item量很大的时候,比如我最近训练的一个模型,用户10万,物品1千万,如果直接使用one-hot的编码很容易导致内存不够,这个时候一般整一个embeding层,这里embeding相当于一个字典,是自己初始化生成的,user或者item可以到这里查找对应的隐向量。
参考资料:
AutoRec Autoencoders Meet Collaborative Filtering
Collaborative Filtering with Stacked Denoising AutoEncoders and Sparse Inputs
Hybrid Collaborative Filtering with Autoencoders
Neural Collaborative Filtering
还有其他相关的基于神经网络推荐算法
相关文章推荐
- SQL注入漏洞全接触 (入门,进阶,高级)
- python入门、进阶、高级阶段学习安排
- python3 从基础入门到高级进阶练习题之----基础篇004
- python3 从基础入门到高级进阶练习题之----基础篇001
- solrj入门及进阶,高级使用
- python3 从基础入门到高级进阶练习题之----基础篇003
- [教程]MongoDB 从入门到进阶 (概要 以及 高级索引篇 TimeToLive GeoNear)
- python3 从基础入门到高级进阶练习题之----基础篇003
- solrj入门及进阶,高级使用
- iOS高级进阶(3)Core Text入门
- 马老师 linux必备web服务入门及高级进阶
- linux必备命令awk入门及高级进阶
- Python3入门与进阶笔记(七):高级语法
- solrj入门及进阶,高级使用
- python3 从基础入门到高级进阶练习题之----基础篇002
- python3 从基础入门到高级进阶练习题之----基础篇005
- ASP编程入门进阶(十七):FSO组件之文件夹操作
- System.Web.Routing入门及进阶
- 【干货合集】Docker快速入门与进阶
- Scala入门之高级类型:类型投影