基于内容的推荐(第二周)

说明:文章为初学者看推荐系统(蒋凡),结合网上资料做的笔记,不保证其正确性。欢迎指正^_

1、  继续记录下svd的一个例子(参考http://blog.sina.com.cn/s/blog_7c76633901019oi8.html,http://blog.csdn.net/abcjennifer/article/details/8131087):

1)  看下图,表示9篇文章中,book,dads……value等词语的出现次数:

2)  可以使用相应的软件(例如matlab)进行svd分解,得到下面的3个小的矩阵(会减小存储量和计算量),其中左奇异向量可以表示词语在文章中出现的次数,右奇异向量表示文章中出现词语的次数,中间的矩阵表示左奇异向量一行和右奇异向量一列重要性。例如下图中:第一个矩阵的第一列中,book的0.15表示对应svd分解前矩阵中在所有文章中共出现2次,0.36对应3次,0.74对应9次,大致呈现出线性的关系;而右奇异向量矩阵中0.35表示对应T1文章svd分解前矩阵中所有词语出现4次,0.49对应5次。

3)  对左奇异向量和右奇异向量降维处理(下图中在左奇异向量中取了第2,3列,右奇异向量取了第2,3行),将3维变为2维,得到下图,在实际中可以根据分块,将在相同的块的属性作为一个属性来处理,例如音乐的安静和悲伤在一个块中,我们就认为它们在推荐系统中是很相似的,处理时可认为它们是等效来处理,或者推荐时可以在相似的属性中找出歌曲推荐。在这个例子中stock和macket在同一个块中出现,在检索文档时,可根据这个来进行近义词检索,同时也可通过设置近义词集合来降低存储空间:

(注1:MATLAB中“:”的作用matlab : http://jingyan.baidu.com/article/8cdccae99ff546315413cd0f.html

(注2:基于svd的降维,没有使用考虑到所有的可用信息。另外,svd可能过滤掉一些数据噪声,且可能检测出不同属性的关系)

2、  主成分分析(PCA):对数据进行处理,过滤出“最重要”的数据,已解释大多数变量;

3、  关联规则挖掘:

1)  定义:一种大规模交易中识别类似规则关系模式的通用技术。例子“用户再超市中买了婴儿食品,70%的概率会买尿布”;

2)  关联规则的衡量标准是支持度和可信度:

例如关联规则为a->b时

支持度=包含a和且包含b的数量/总数量;

可信度=包含a和且包含b的数量/包含a的数量;

3)  例子(来源:http://www.cnblogs.com/dolphin0520/archive/2012/10/29/2733356.html),下面有7个用户的购买情况。以“牛肉—>鸡肉”为例,那么同时购买牛肉和鸡肉的顾客比例是3/7,为支持度,而购买牛肉的顾客当中也购买了鸡肉的顾客比例是3/4,为可信度。

4)  下图更直观:

5)  上面是物品的关联,下面再举一个用户间的关联,规则为“用户1喜欢听稻香,用户2不喜欢听稻香,则Alice喜欢稻香”,此时,基于可信度和支持度可以用以下公式进行评分(22页):x为用户1喜欢听的歌,用户2不喜欢听的歌,Alice喜欢听的歌的数量;y为用户1喜欢听的歌,用户2不喜欢听的歌的数量;

支持度=x/sum;

可信度=x/y;

然后同时对七里香、匿名的好友等等计算出可信度,支持度,根据公式算出得分即可;

4、  基于概率分析的推荐方法

1)  基础知识,一个条件概率的例子,A表示:大熊猫活到15岁,B表示大熊猫活到10岁,则p(A)=0.6,p(B)=0.8,其中该题中p(AB)=p(B):

2)  所用公式(来源:http://blog.sina.com.cn/s/blog_4cb0b54301013f48.html):

3)  实例一个:

为了预测物品5的评分为1时的概率,我们必须计算条件概率P(物品5=1|X),X是Alice的其他评分:X=(物品1=1,物品2=3,物品3=3,物品4=2):

a)        P(物品5=1|X)=p(X|物品5=1)*p(物品5=1)/p(X);

b)       P(X|物品5=1)=2/2+1/2+1/2+1/2(分母的2表示物品5=1的数量,分子表示在物品5=1的情况下其他物品的评分与Alice评分相同的数量)

c)        p(物品5=1)=2/4

5、  Slope One预测器:

1)     基于物品的评分差异来评分;

2)     公式:

3)     看一个实例:

预测方法:平均偏差值((5-3)+(3-4))/2=0.5;(5-2)/1=3

结果(2*(2+0.5)+1*(5+3))/(2+1)=4.33

二、基于内容的推荐:

1、基于内容的推荐的思路:某个用户喜欢有特点A的物品,然后将含有特点A的物品推荐给这个用户;

2、两篇文章相似度的衡量可以使用Dice系数,例如文章a,b各有100,200个词,相同的词有50个,则Dice系数=2*(50)/(100+200):

3、TF-IDF(termfrequency–inverse document frequency),词频-反文档频率:

1)简单布尔方法

a)        比较两篇文档是否相似,有个简单的思路就是:首先将可能出现的所有词列出一个表,接着对应表中的词使用一个bool型向量描述每个文档,然后对用户的历史记录也使用一个描述,那么计算该描述和各个文档的重合程度即可找到匹配的文档。

b)       该法缺陷:未考虑词语出现的频率,且该法倾向于推荐长文档

2)TF-IDF方法可以解决简单布尔方法的缺陷:

a)

b)       TF的计算公式,freq(i,j)表示词i在文章j中出现的次数,maxOthers(i,j)表示除了词i,出现最多的词的数量:

c)        IDF的计算公式(可以屏蔽“的,是,我”这些词,),N表示可推荐文档的数量,n(i)表示N中出现过词i的文档数量:

4)  实例(来源:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/17/2595249.html,有修改):

例如利用关键字k1,k2,k3进行文档相似度的对比,此时TF1*IDF1+TF2*IDF2+TF3*IDF3,

假设document1的中k1,k2,k3的数目为50,200,100,出现最多的词为300,总文档数为10000,出现k1,k2,k3的文档数分别为1000,2000,10000。

则TF1=50/300,TF2=200/300,TF3=100/300,

IDF1=lg(10000/1000)=1,IDF2= lg(10000/2000),IDF3=lg(10000/10000)=0

5)  IF-IDF的改进方法:

a)        停用词和词干还原:如不计算“a”,“the”这类词,如将“running”转为“run”,“went”转为“go”;

b)       精简规模:仅用n个信息量最大的词来减少文档描述的规模,最优个数根据实验而定,一般来说50太少,300过多。不同领域可以选择不同词;

c)        短语:用短语替换词描述的准确可能更好。例如“United Nations”即联合国,可以人工定义出这些列表;

d)       局限,例如一个读者喜欢素食,然后他喜欢了一篇文章,批判了“肉食”是残忍的,可能因为出现了很多肉食的词语,然后系统推荐了肉食的文章给该读者

3、 基于内容内容相似度检索(本节介绍依赖向量空间文档表示模型最为常见的技术):

1)k最近邻(KNN,,k-NearestNeighbor)(来源:http://wenku.baidu.com/link?url=Vhzc6sR04NXDI0HHVRuSMRqXcGlndfs6QPpOgmBpy6ovffsxIVIuHkTdHTB0R1BkXw0qu_Rs9ecO4DKouSV5BgBT9vX8tESboE9T72WALrK):

a)      如想知道A的分类,则需要找出k与A最相近的点,然后统计这k个点的所属分类,选择出分类比例最大的,则将A判断为该类;

b)     例如有一部电影A,打斗为18,接吻为70,那么他属于aciton还是是Romance呢?,我们计算A与下面6部电影的距离,选出最近的k部,然后看这k部是action多还是Romance多,多的即为电影A的类别。

2) 相关性反馈-Rocchio方法(参考:http://blog.csdn.net/sulliy/article/details/6670980):

a)        假定存在一个用户查询,然后我们有一些相关文档和不相关文档,然后通过这些文档来调整这个用户查询;

b)       首先将文档分为两类,Cr表示相关文档集,Cnr表示不相关文档集,其中q0为原始向量,qm为优化后的向量。查询词q0表示为像文档一样的多位单词向量,然后重复的增加相关文档的加权向量,并减去代表不相关文档的加权向量:

c)        效果:

d)       我的理解,例如查询词“计算机”q0最开始可能为(0,0,0,0,0),然后搜索计算机返回一个文档“计算机系统”给用户,用户觉得返回得很正确,则该文档“计算机系统”(1,1,0,1)为相关文档,加权后加到查询词向量q0中,若返回的是“那妹子很漂亮研究论文”(1,0,1,0)文档,用户觉得这是扯淡,即该文档为不相关文档,q0减去该文档加权后的向量;

4)  基于概率模型的方法:

下次继续

时间: 2024-08-26 01:07:00

基于内容的推荐(第二周)的相关文章

推荐系统第5周--- 基于内容的推荐,隐语义模型LFM

基于内容的推荐 制定分类/属性的困难使用专业人员(编辑)对商品进行整理分类,但这样会产生成本和效率瓶颈受限于编辑的专业水平,编辑的意见未必能代表用户的意见分类的粒度难于控制如果商品有多个分类,很难考虑周全多维度,多规角分类编辑很难决定商品在类别里的权重 隐语义模型 LFM的前丕今生 隐语义模型的适用性 关于训练集 常见同类问题求解思路 梯度下降法的几何意义 LFM损失函数极值用梯度下降法求解 LFM中的重要参数 模型中隐特征个数梯度下降法中选取的学习速率损失凼数中的惩罚项系数lambda训练集的

基于内容的推荐(Content-based Recommendations)

基于内容的推荐(Content-based Recommendations) [本文链接:http://www.cnblogs.com/breezedeus/archive/2012/04/10/2440488.html,转载请注明出处] Collaborative Filtering Recommendations (协同过滤,简称CF) 是目前最流行的推荐方法,在研究界和工业界得到大量使用.但是,工业界真正使用的系统一般都不会只有CF推荐算法,Content-based Recommenda

【读书笔记】《推荐系统(recommender systems An introduction)》第三章 基于内容的推荐

基于内容的推荐的基本推荐思路是:用户喜欢幻想小说,这本书是幻想小说,则用户有可能喜欢这本小说 两方面要求:(1)知道用户的喜好:(2)知道物品的属性 基于内容的推荐相比协同过滤方法(个人观点):协同过滤用到了大量用户的群体行为特征,两个特点,(1)要大量用户,(2)除了用户的行为之外,不需要其他信息:基于内容的推荐,需要用户和物品的额外信息,如:用户喜好.物品属性等等,但是不需要存储.处理大量的用户数据. 基于内容的推荐和基于知识的推荐没有明确界限,两者区别:前者更侧重于提取物品属性,后者更侧重

Recommender Systems基于内容的推荐

基于内容的推荐的基本推荐思路是:用户喜欢幻想小说,这本书是幻想小说,则用户有可能喜欢这本小说 两方面要求:(1)知道用户的喜好:(2)知道物品的属性 基于内容的推荐相比协同过滤方法(个人观点):协同过滤用到了大量用户的群体行为特征,两个特点,(1)要大量用户,(2)除了用户的行为之外,不需要其他信息:基于内容的推荐,需要用户和物品的额外信息,如:用户喜好.物品属性等等,但是不需要存储.处理大量的用户数据. 基于内容的推荐和基于知识的推荐没有明确界限,两者区别:前者更侧重于提取物品属性,后者更侧重

一个简单的基于内容的推荐算法

最近闲下来又开始继续折腾推荐系统了,声明一下,本文只是介绍一下最基础的基于内容的推荐系统(Content-based recommender system)的工作原理,其实基于内容的推荐系统也分三六九等Orz,这里只是简单的较少一下最原始的.最基本的工作流程. 基于内容的推荐算法思路很简单,它的原理大概分为3步: 1.为每个物品(Item)构建一个物品的属性资料(Item Profile) 2.为每个用户(User)构建一个用户的喜好资料(User Profile) 3.计算用户喜好资料与物品属

elasticsearch使用More like this实现基于内容的推荐

基于内容的推荐通常是给定一篇文档信息,然后给用户推荐与该文档相识的文档.Lucene的api中有实现查询文章相似度的接口,叫MoreLikeThis.Elasticsearch封装了该接口,通过Elasticsearch的More like this查询接口,我们可以非常方便的实现基于内容的推荐. { "more_like_this" : { "fields" : ["title", "content"], "lik

新闻推荐系统:基于内容的推荐算法(Recommender System:Content-based Recommendation)

因为开发了一个新闻推荐系统的模块,在推荐算法这一块涉及到了基于内容的推荐算法(Content-Based Recommendation),于是借此机会,基于自己看了网上各种资料后对该分类方法的理解,用尽量清晰明了的语言,结合算法和自己开发推荐模块本身,记录下这些过程,供自己回顾,也供大家参考~ 目录 一.基于内容的推荐算法 + TFIDF 二.在推荐系统中的具体实现技巧 正文 一.基于内容的推荐算法 + TFIDF 主流推荐算法大致可分为: 基于内容(相似度)的推荐 基于用户/物品相似度的协同过

基于内容的推荐算法

输入 输入1:包含200部电影的数据集,集合中包含两列,一列为电影的id,一列为电影的流派集合,如下图所示: 输入2:一个用户的电影兴趣记录,like字段为1表示喜欢,0表示不喜欢,如下图所示: 输出 输出1:输入1的One-Hot编码形式,类似下图所示: 输出2:根据输入2和输出1,从电影数据集中给用户推荐用户没有看过的与用户相似度最高的k个电影. 前言 基于内容的推荐算法是一种比较经典的推荐算法,应用较广,可解释性强,准确率高,尤其是当今社会信息丰富,比如文本.音频等,有比较多的内容可以利用

推荐算法简介:基于用户的协同过滤、基于物品的协同过滤、基于内容的推荐

参考来源: https://blog.csdn.net/u011748319/article/details/90269818 1.推荐算法 1.1.协同过滤 协同过滤是目前应用最广泛的推荐算法,它仅仅通过了解用户与物品之间的关系进行推荐,而根本不会考虑到物品本身的属性. 可分成两类: 1.基于用户(user-based)的协同过滤 2.基于商品(item-based)的协同过滤 1.1.1.基于用户的协同过滤 基本思想: 基于用户对物品的偏好找到邻居用户(相似用户),然后将邻居用户(相似用户)