协同过滤

总结:构建基于人的协同过滤模型,以自己的评价或者购买过的商品构建输入向量,计算与模型中其他人的的相似度,然后sum(相似度*评分)/sum(所有评价过此商品的人的相似度)来计算物品推荐值。

对于大规模的物品时,不可能对实时的为每个人计算相似度,然后进行物品的推荐,此时的做法是构建基于物品的协同过滤模型,然后依次计算每件物品与其他物品的相似度,取前n件物品、相似度记录下来,当用户登录时,从其评价过的商品中选取评价分数最高的m件商品及分数,然后选出m件商品的相似商品,根据评分*相似度,来计算排名,进行推荐;同时可以按照sum(相似度*评分)/sum(此人评价的所有商品的相似度)来给模型中的用户打分,从而调整数据。

基于用户的协同过滤模型:

集合{

persion1:{商品1:评分1, 商品2:评分2, 商品3:评分3}

...

}

基于物品的协同过滤模型:

集合{

商品:{persion1:评分1, persion2:评分2, ...}
                    ...
               }

1.协同过滤:

模型:

集合{

persion1:{商品1:评分1, 商品2:评分2, 商品3:评分3}

...

}

定义:

从用户的购买行为中,寻找相近的用户:

方法:将每个人与所有其他人进行对比,计算其相似度评价值

1.欧几里德距离:

公式:1/(1+sqrt(pow(p1.f1-p2.f1)+pow(p1.f2-p2.f2))

2.皮尔逊相似度

公式:

公式一:

公式二:

公式三:

公式四:

以上列出的四个公式等价,其中E是数学期望,cov表示协方差,N表示变量取值的个数

同时,R中cor()函数计算的就是皮尔逊系数

python代码:

对应的是第三个公式

当数据不是很规范时,比如某人的评价总是相对于平均水平偏高很大时,会倾向于给出更好的结果

采用二元线性曲线拟合的方法,先用所有人对两件商品的评价构造拟合曲线,然后根据曲线计算每个人的皮尔逊相似度

从一定程度上修正了夸大分值的情况,同时能避免这样的情况:

两个人对一些物品的评价总是相差一定的分值,两者应该有非常高的相似度,但是用欧几里得距离则得不到两者近似的结论

方法的选择取决于具体的应用,可以尝试多种方法,以取得最好的实际效果

推荐物品:

通过相关算法能得到和自己爱好相同的人的排名,但是根据这样的结果来推荐物品,就显得随性了。

处理方法:sum(相似度*评分)/sum(所有评价过此商品的人的相似度)来计算物品推荐值

匹配相似商品,基于物品:

转换模型为:

集合{

商品:{persion1:评分1, persion2:评分2, ...}

...

}

根据欧几里得距离或者皮尔逊相似度求计算商品的相似度,可以计算输入商品的相同类型的商品

2.大数据场景:

上述的方法用于数以千计的用户时是没有问题的,但是对淘宝这样的网站而言会耗费大量的时间在用户相似度的比较间

两种方法:基于用户的协同过滤和基于物品的协同过滤,基于物品的协同过滤效果更好一些

思路:预先计算好每件物品与其相近的其他物品,当用户登录后,从其评价过的商品里选出排名前几位的物品,构造一个相似度和相近物品的加权列表,包含了选中物品最为相近的其他物品

设计技巧:不必不停的计算与每样物品最为相近的其他物品

3.基于用户物品、过滤

在数据的稀疏程度上的不同也存在精准度上的差异:对密集型数据,两者的效果几乎一样;但是对于稀疏数据集,基于物品的协同过滤效果更好!

时间: 2024-12-05 08:44:24

协同过滤的相关文章

基于Spark MLlib平台的协同过滤算法---电影推荐系统

基于Spark MLlib平台的协同过滤算法---电影推荐系统 又好一阵子没有写文章了,阿弥陀佛...最近项目中要做理财推荐,所以,回过头来回顾一下协同过滤算法在推荐系统中的应用. 说到推荐系统,大家可能立马会想到协同过滤算法.本文基于Spark MLlib平台实现一个向用户推荐电影的简单应用.其中,主要包括三部分内容: 协同过滤算法概述 基于模型的协同过滤应用---电影推荐 实时推荐架构分析     一.协同过滤算法概述 本人对算法的研究,目前还不是很深入,这里简单的介绍下其工作原理. 通常,

推荐系统(recommender systems):预测电影评分--构造推荐系统的一种方法:协同过滤(collaborative filtering )

协同过滤(collaborative filtering )能自行学习所要使用的特征 如我们有某一个数据集,我们并不知道特征的值是多少,我们有一些用户对电影的评分,但是我们并不知道每部电影的特征(即每部电影到底有多少浪漫成份,有多少动作成份) 假设我们通过采访用户得到每个用户的喜好,如上图中的Alice喜欢爱情电影,不喜欢动作电影,则我们将θ(1)设为[0,5,0],如此设置θ(2),θ(3),θ(4)的值,这样我们有了每个用户的θ的值以及他们对电影的打分,就可以推断出每部电影的x(特征)的值.

协同过滤推荐算法

协同过滤推荐算法分为基于用户的协同过滤推荐UserCF和基于物品的协同过滤推荐ItemCF.介绍见<协同过滤的实现步骤>

协同过滤之ALS

搜索推荐,主要有以下几种形式:一.根据人口统计学推荐:此推荐方式需要建立用户模型,并且需要获取用户的具体信息,然后根据矩阵运算,计算相似度,此方式最大缺陷是获取用户的隐私,应用不多: 二.基于内容的推荐:根据特定用户的历史数据,推荐出相似的产品.缺点是需要建立item model,比较费时. 三.基于协同过滤,是目前搜索推荐中应用最广泛的,不需要建立item model,省事,效果比较好.协同过滤的本质,可以概括为"物以类聚,人以群分",分别指基于物品的协同过滤和基于user的协同过滤

GBDT(Gradient Boosting Decision Tree)算法&amp;协同过滤算法

GBDT(Gradient Boosting Decision Tree)算法参考:http://blog.csdn.net/dark_scope/article/details/24863289 理解机器学习算法:http://blog.csdn.net/dark_scope/article/details/25485893 协同过滤算法:http://blog.csdn.net/dark_scope/article/details/17228643

Mahout分布式运行实例:基于矩阵分解的协同过滤评分系统

Apr 08, 2014  Categories in tutorial tagged with Mahout hadoop 协同过滤  Joe Jiang 前言:之前配置Mahout时测试过一个简单的推荐例子,当时是在Eclipse上运行的,由于集成插件的缘故,所以一切进行的都比较顺利,唯一不足的是那是单机运行的,没有急于分布式系统处理.所以基于测试分布式处理环境的目的,下午找了一个实例来运行,推荐系统原型是一个电影评分的系统. 一.问题描述 对于协同过滤(Collaborative Filt

Mahout实现基于用户的协同过滤算法

Mahout中对协同过滤算法进行了封装,看一个简单的基于用户的协同过滤算法. 基于用户:通过用户对物品的偏好程度来计算出用户的在喜好上的近邻,从而根据近邻的喜好推测出用户的喜好并推荐. 图片来源 程序中用到的数据都存在MySQL数据库中,计算结果也存在MySQL中的对应用户表中. package com.mahout.helloworlddemo; import java.sql.Connection; import java.sql.DatabaseMetaData; import java.

Spark(十一) -- Mllib API编程 线性回归、KMeans、协同过滤演示

本文测试的Spark版本是1.3.1 在使用Spark的机器学习算法库之前,需要先了解Mllib中几个基础的概念和专门用于机器学习的数据类型 特征向量Vector: Vector的概念是和数学中的向量是一样的,通俗的看其实就是一个装着Double数据的数组 Vector分为两种,分别是密集型和稀疏型 创建方式如下: val array:Array[Double] = ... val vector = Vector.dense(array)//创建密集向量 val vector = Vector.

Recommender Systems协同过滤

第一部分是学习ID3时候积累的. 一.以前写的基础知识 1.信息:是用来消除不确定性的度量,信息量的大小,由所消除的不确定性的大小来计量(香农). 2.由于不确定性是由随机性引起的,所以用概率来描述和计量:熵entropy:源于热力学,是分子混乱程度的度量. 3.X(离散型随机变量)的熵H(X) 为:H(X)= - ∑x ∈X p (x) log2 p (x),其中,约定0log2 0 = 0,通常单位为bits;一个随机变量的熵越大,它的不确定性就越大,正确估计其值的可能性就越小.越不确定的随

探索推荐引擎内部的秘密,第 2 部分: 深入推荐引擎相关算法 - 协同过滤(转)

第 2 部分: 深入推荐引擎相关算法 - 协同过滤 本系列的第一篇为读者概要介绍了推荐引擎,下面几篇文章将深入介绍推荐引擎的相关算法,并帮助读者高效的实现这些算法. 在现今的推荐技术和算法中,最被大家广泛认可和采用的就是基于协同过滤的推荐方法.它以其方法模型简单,数据依赖性低,数据方便采集 , 推荐效果较优等多个优点成为大众眼里的推荐算法“No.1”.本文将带你深入了解协同过滤的秘密,并给出基于 Apache Mahout 的协同过滤算法的高效实现.Apache Mahout 是 ASF 的一个