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近邻的推荐研究

开源推荐系统Librec中recommender模块算法了解——cf模块的更多相关文章

  1. 开源BTS产品中存在多处漏洞,攻击者或可劫持手机通讯基站

    前言 在过去的几周时间里,我从多个方面对GSM的安全性进行了调查和研究,例如GSM通信协议中存在的漏洞.除此之外,我还对目前世界上应用最为广泛的BTS软件进行了安全审计.在这篇文章中,我将会给大家介绍 ...

  2. 基于FPGA的中值滤波算法实现

    在这一篇开篇之前,我需要解决一个问题,上一篇我们实现了基于FPGA的均值滤波算法的实现,最后的显示效果图上发现有一些黑白色的斑点,我以为是椒盐噪声,然后在做基于FPGA的中值滤波算法的实验时,我发现黑 ...

  3. python开发学习-day05(正则深入、冒泡排序算法、自定义模块、常用标准模块)

    s12-20160130-day05 *:first-child { margin-top: 0 !important; } body>*:last-child { margin-bottom: ...

  4. 机器学习实战基础(二十):sklearn中的降维算法PCA和SVD(一) 之 概述

    概述 1 从什么叫“维度”说开来 我们不断提到一些语言,比如说:随机森林是通过随机抽取特征来建树,以避免高维计算:再比如说,sklearn中导入特征矩阵,必须是至少二维:上周我们讲解特征工程,还特地提 ...

  5. 在Python程序中的进程操作,multiprocess.Process模块

    在python程序中的进程操作 之前我们已经了解了很多进程相关的理论知识,了解进程是什么应该不再困难了,刚刚我们已经了解了,运行中的程序就是一个进程.所有的进程都是通过它的父进程来创建的.因此,运行起 ...

  6. python 全栈开发,Day38(在python程序中的进程操作,multiprocess.Process模块)

    昨日内容回顾 操作系统纸带打孔计算机批处理 —— 磁带 联机 脱机多道操作系统 —— 极大的提高了CPU的利用率 在计算机中 可以有超过一个进程 进程遇到IO的时候 切换给另外的进程使用CPU 数据隔 ...

  7. python学习之算法、自定义模块、系统标准模块(上)

    算法.自定义模块.系统标准模块(time .datetime .random .OS .sys .hashlib .json和pickle) 一:算法回顾: 冒泡算法,也叫冒泡排序,其特点如下: 1. ...

  8. 【SPMF开源数据挖掘平台入门】MaxSP算法使用说明

    前段时间,由于项目中用到了序列挖掘的算法,师兄推荐我用用SPMF.在此做个记录. 首先简单介绍一下SPMF: SPMF是一个采用Java开发的开源数据挖掘平台. 它提供了51种数据挖掘算法实现,用于: ...

  9. Python全栈开发之5、几种常见的排序算法以及collections模块提供的数据结构

    转载请注明出处http://www.cnblogs.com/Wxtrkbc/p/5492298.html 在面试中,经常会遇到一些考排序算法的题,在这里,我就简单了列举了几种最常见的排序算法供大家学习 ...

随机推荐

  1. 【linux】使用swap文件恢复非正常关闭的文件

    前言 使用vim的时候,文件编辑过程中可能会出现bug,导致非正常关闭.为了保存刚刚修改的内容,需要对文件进行恢复. 操作过程 1.查看目录文件 zrj@zrj-ThinkPad-E470:~/wor ...

  2. Maven项目中的配置

    1 在配置好Maven项目后,新建一个Maven Project.如图 点击next,会进入如下界面: 选择webapp,不选择默认的quickstart,之后会进入以下界面 填好Group ID 和 ...

  3. iFiles——苹果上最好用的文件管理器 - imsoft.cnblogs

  4. 8个iPhone防盗秘籍 为手机和资料安全保驾护航

    最近发现用x手机的朋友越来越多,今天一个朋友手机被偷,万分焦急,失财事小,电话里很多手机号码等重要信息都无法找回.为了让大家尽量安全使用自己的iPhone或苹果产品,哪怕丢失后也有最大的可能性找回,特 ...

  5. js ==与===区别(非严格相等与严格相等)

    基本数据类型:number.string.boolean.undefined.null 高级数据类型:object 表格形式比较: 比较的类型 == === 基础类型 不同基础类型间比较," ...

  6. MapReduce-寻找三角形

    在图中,如何判断三角形?三角形在很多场景都有应用,比如社交网络中确定人和人之间的关系. 那么如果通过代码逻辑来实现呢?在数据结构之图中,区分三联体(有一端没有关联关系的三角形)和三角形是关键:两者之间 ...

  7. 51nod 1965 奇怪的式子——min_25筛

    题目:http://www.51nod.com/Challenge/Problem.html#!#problemId=1965 考虑 \( \prod_{i=1}^{n}\sigma_0^i \) \ ...

  8. Microsoft Dynamics CRM 2011 批量添加域用户 然后添加CRM用户

    一.先了解下 DSADD user命令详解 常见的批量创建用户的方法有四种: 一. 帐户模板的方式 二. CSVDE和LDIFDE 三. 脚本的方式 四. DSADD 但是很少有详细的资料使用DSAD ...

  9. ASP.NET网站权限设计实现(二)——角色权限绑定

    1.关于使用的几张表的说明  (1)Module:模块表,记录模块名称.编码等模块基本数据.   (2)Permissions:权限表,记录所有模块权限distinct之后的数据.   (3)Modu ...

  10. ASP.NET WEB SERVICE 创建、部署与使用

    PS: 开发工具 VS2010, 所有工程都为Debug状态,本人刚接触 Web Service,此文为菜鸟入门用例,高手勿笑! 转载请注明出处 :http://www.cnblogs.com/yyc ...