推荐系统深入研究

还是针对这两个:easyRec 和 Mahout。

1.Mahout
Mahout 是基于Hadoop的机器学习数据挖掘的一个分布式框架。Mahout用MapReduce实现了部分数据挖掘算法,解决了并行挖掘的问题。
Mahout实现3大类算法, 推荐(Recommendation),聚类(Clustering),分类(Classification)。

首先从聚类开始讲起:

簇(Cluster):一个数据对象的集合,在同一个类中,对象之间具有相似性;不同类的对象之间是相异的。
聚类分析:把一个给定的数据对象集合分成不同的簇;所谓聚类就是按照事物的某些属性,把事物聚集成类, 使类间的相似性尽可能的,类内相似性尽量的过程。
聚类是一种 无监督分类法: 没有预先指定的类别。
聚类分析中 类的特征:聚类所说的类不是事先给定的,而是根据数据的相似性距离来划分,聚类的数目和结构都没有事先假定。


分类:

分类的目的是学会一个分类函数(分类模型、分类器),该模型能把数据库中的数据影射到给定类别中的一个。
  

分类是一种基于训练样本数据(这些数据都已经被贴标签)区分另外的样本数据标签的过程,即另外的样本数据应该如何贴标签的问题。

分类的基本过程

数据分类(data classfication)是一个三步过程。
1.通过分析数据库元组来构造模型(学习)
2.对模型进行评估(recall、precision、F1、ROC)
3.使用模型进行分类


协同过滤:
基于用户行为,计算物品或者用户的相似度从而进行推荐。

在协同过滤中,有两种主流方法:基于用户的协同过滤(UserCF),和基于物品的协同过滤(ItemCF)
基于用户的 CF 的基本思想相当简单,基于用户对物品的偏好找到相邻邻居用户,然后将邻居用户喜欢的推荐给当前用户。计算上,就是将一个用户对所有物品的偏好作为一个向量来计算用户之间的相似度,找到 K 邻居后,根据邻居的相似度权重以及他们对物品的偏好,预测当前用户没有偏好的未涉及物品,计算得到一个排序的物品列表作为推荐。
基于物品的 CF 的原理和基于用户的 CF 类似,只是在计算邻居时采用物品本身,而不是从用户的角度,即基于用户对物品的偏好找到相似的物品,然后根据用户的历史偏好,推荐相似的物品给他。从计算的角度看,就是将所有用户对某个物品的偏好作为一个向量来计算物品之间的相似度,得到物品的相似物品后,根据用户历史的偏好预测当前用户还没有表示偏好的物品,计算得到一个排序的物品列表作为推荐。

上文大多参看这篇Mahout实战


算法:
Mahout提供了2个评估推荐器的指标,查准率precision和召回率(查全率)recall,这两个指标是搜索引擎中经典的度量方法。
被检索到的越多越好,这是追求“查全率;
被检索到的,越相关的越多越好,不相关的越少越好,这是追求“查准率”。
在大规模数据集合中,这两个指标是相互制约的。当希望索引出更多的数据的时候,查准率就会下降,当希望索引更准确的时候,会索引更少的数据。


关于easyRec 搜索了很多资料,发现说来说去就这么一点事情。

EasyRec是一个易集成、易扩展、功能强大且具有可视化管理的推荐系统。EasyRec可以同时给多个不同的网站提供推荐服务,通过tenant来区分不同的网站。架设EasyRec服务器,为网站申请tenant,通过tenant就可以很方便的集成到网站中。通过各种不同的数据收集(view,buy.rating)API收集到网站的用户行为,EasyRec通过离线分析,就可以产生推荐信息,您的网站就可以通过Recommendations和Community Rankings来进行推荐业务的实现。

已实现的推荐算法有:

1.ARM

2.ItemItem

3.Mahout-Boolean

4.Mahout-Slopeone

5.Pearson

6.Slopeone

7.Waiting


结合两个分析,mahout拥有各种算法,遇到各种情况可以自己组合算法计算,相对于麻烦一些(首先要自己熟知各种算法运用的情况),而easyrec就是封装好了的API,只需要调用接口就可以返回推荐内容,但是算法少,推荐内容有局限性。

你可能感兴趣的:(推荐系统,mahout,easyrec)