1. k近邻(k-NearestNeighbor)算法介绍及在推荐系统中的应用
https://zhuanlan.zhihu.com/p/25994179
k近邻(k-NearestNeighbor)算法是一种基本分类和回归方法。分类问题的k近邻法即给定一个训练数据集,对新的输入实例,在训练数据集中找到与该实例最邻近的K个实例,这K个实例的多数属于某个类,就把该输入实例分类到这个类中。(这就类似于现实生活中少数服从多数的思想)
算法注意点:K值选取(过小容易过拟合,过大大大降低预测准确率),特征归一化。
https://www.jianshu.com/p/33dbf9906ff2
KNN算法步骤为:
1、计算测试对象到训练集中每个对象的距离
2、按照距离的远近排序
3、选取与当前测试对象最近的k的训练对象,作为该测试对象的邻居
4、统计这k个邻居的类别频率
5、k个邻居里频率最高的类别,即为测试对象的类别
KNN监督学习的过程
1、归一化数据样本集
2、划分样本集为训练集和测试集
3、以训练集为算法参考系,测试集来测试算法
4、计算预测样品标签和真实样品标签的比值来评估算法的准确率
5、调节不同的参数找到最优算法参数
KNN算法的优缺点
1、优点非常简单的分类算法没有之一,人性化,易于理解,易于实现适合处理多分类问题,比如推荐用户
2、缺点属于懒惰算法,时间复杂度较高,因为需要计算未知样本到所有已知样本的距离样本平衡度依赖高,当出现极端情况样本不平衡时,分类绝对会出现偏差可解释性差,无法给出类似决策树那样的规则向量的维度越高,欧式距离的区分能力就越弱。
cf模块里相关算法:
ItemKNNRecommender和UserKNNRecommender
2. 矩阵分解技术在推荐系统中的应用及相关算法
论文:2009-Matrix Factorization Techniques for Recommender Systems
可参考文章:https://zhuanlan.zhihu.com/p/27502172
cf模块里相关算法:
BiasedMFRecommender:添加了用户物品偏置项的矩阵分解模型。
SVDPlusPlusRecommender:SVD++模型:加了用户项目偏置项,和用户的隐式反馈信息的改进的BiasSVD模型。
PMFRecommender:
算法相关论文:
2008-Probabilistic Matrix Factorization
Improving regularized singular value decomposition for collaborative filtering
可参考文章: https://blog.csdn.net/shenxiaolu1984/article/details/50372909
利用代数中SVD方法对矩阵进行分解。奇异值分解首先需要对评分矩阵进行补全,比如用全局平均值或用户、物品平均值进行补全。然后对补全之后的矩阵进行SVD分解从而将高维评分矩阵分解成低维的U,I矩阵。但是这种方法有两个问题:一是补全后的矩阵是一个稠密矩阵,存储需要很大空间。二是SVD计算复杂度很高。
BPMFRecommender:
算法相关论文:
Bayesian Probabilistic Matrix Factorization using Markov Chain Monte Carlo
BPMF(Bayesian Probabilistic Matrix Factorization)算法可参考文章 https://blog.csdn.net/shenxiaolu1984/article/details/50405659
MF PMF BPMF算法理解可参考文章
: https://blog.csdn.net/shulixu/article/details/75349138
PMF是从概率生成过程的角度来解释user和item的隐式特征矩阵,SVD是从优化目标出发,如何确定user和item的隐式特征矩阵会使得损失最少。
3. 基于排序学习的推荐方法中Pair-wise在推荐系统中的应用及相关算法
基于排序学习的推荐方法主要分为三大类,分别是Point-wise,Pair-wise和List-wise(对三种排序方法的介绍):
http://www.cnblogs.com/kemaswill/archive/2013/06/01/3109497.html
http://baogege.info/2014/10/19/learning-to-rank-for-recommender-system/
Pairwise类算法的一种:Bayesian
Personalized Ranking (BPR)
BPR是基于矩阵分解的一种排序算法,但是和funkSVD之类的算法比,它不是做全局的评分优化,而是针对每一个用户自己的商品喜好分别做排序优化。因此在迭代优化的思路上完全不同。同时对于训练集的要求也是不一样的,funkSVD只需要用户物品对应评分数据二元组做训练集,而BPR则需要用户对商品的喜好排序三元组做训练集。
BPRRecommender:
相关论文:Bayesian
Personalized Ranking from Implicit Feedback
BPR算法介绍:https://www.cnblogs.com/pinard/p/9128682.html
AoBPRRecommender:
相关论文:
Improving Pairwise Learning for Item Recommendation from Implicit Feedback
均匀采样策略下,通过随机梯度下降方法求解时,会出现梯度消失的问题->融合内容信息的适应性采样策略对BPR算法的改进。Pairwise适用场景:以隐式反馈类型为主的推荐系统,需要从大堆东西里挑选出感兴趣的一小堆东西的有序集。
4. 主题模型在推荐系统里的应用和相关算法
wikipedia:
主题模型(Topic
Model)在机器学习和自然语言处理等领域是用来在一系列文档中发现抽象主题的一种统计模型。直观来讲,如果一篇文章有一个中心思想,那么一些特定词语会更频繁的出现。比方说,如果一篇文章是在讲狗的,那“狗”和“骨头”等词出现的频率会高些。如果一篇文章是在讲猫的,那“猫”和“鱼”等词出现的频率会高些。而有些词例如“这个”、“和”大概在两篇文章中出现的频率会大致相等。但真实的情况是,一篇文章通常包含多种主题,而且每个主题所占比例各不相同。因此,如果一篇文章10%和猫有关,90%和狗有关,那么和狗相关的关键字出现的次数大概会是和猫相关的关键字出现次数的9倍。一个主题模型试图用数学框架来体现文档的这种特点。主题模型自动分析每个文档,统计文档内的词语,根据统计的信息来断定当前文档含有哪些主题,以及每个主题所占的比例各为多少。主题模型最初是运用于自然语言处理相关方向,但目前已经延伸至例如生物信息学的其它领域。
PLSARecommender:
相关论文:
Latent semantic models for collaborative filtering
LDARecommender:
相关论文:
Latent Dirichlet Allocation
Gibbs sampling in the generative model of Latent Dirichlet Allocation
LDA运用于推荐系统时:
users被当做为documents
items被当做为words
latent factors被当做为topics
维基百科LDA解释:
隐含狄利克雷分布(英语:Latent
Dirichlet allocation,简称LDA),是一种主题模型,它可以将文档集中每篇文档的主题按照概率分布的形式给出。同时它是一种无监督学习算法,在训练时不需要手工标注的训练集,需要的仅仅是文档集以及指定主题的数量k即可。此外LDA的另一个优点则是,对于每一个主题均可找出一些词语来描述它。LDA首先由Blei,
David M.、吴恩达和Jordan,
Michael I于2003年提出(论文链接:http://jmlr.csail.mit.edu/papers/v3/blei03a.html),目前在文本挖掘领域包括文本主题识别、文本分类以及文本相似度计算方面都有应用。
理解可以参考:
理顺主题模型LDA及在推荐系统中的应用 https://blog.csdn.net/leiting_imecas/article/details/68961205,该篇文章中指出了pLSA与LDA两种模型的区别。
算法求解:
最初:EM算法(Expectation-maximization
algorithm)
后来:较为简单的Gibbs
Sampling算法
URPRecommender:
一个用于评分预测类推荐算法的LDA模型,treat items as documents and ratings as words
相关论文:
Modeling user rating profiles for collaborative filtering
https://ieeexplore.ieee.org/document/5992572:
Regularized Gibbs Sampling for User Profiling with Soft Constraints
基于改进URP模型和K近邻的推荐研究