推荐引擎算法大体上分为两种:
(一)基于内容的
暂时不分析
(二)协同过滤
一个协同过滤算法通常的做法是对一大群人进行搜索,从中找到与我们品味相近的一小群人,算法会对这些人所偏爱的其他内容进行考查,并把他们组合成一个经过排名的推荐列表。
1,首先我们先找与我们品味相同的用户
我们常用的两套计算相似度评价值得体系:
欧几里德距离和
皮尔逊相关度
例子:
# set of movies
critics={'Lisa Rose': {'Lady in the Water': 2.5, 'Snakes on a Plane': 3.5,
'Just My Luck': 3.0, 'Superman Returns': 3.5, 'You, Me and Dupree': 2.5,
'The Night Listener': 3.0},
'Gene Seymour': {'Lady in the Water': 3.0, 'Snakes on a Plane': 3.5,
'Just My Luck': 1.5, 'Superman Returns': 5.0, 'The Night Listener': 3.0,
'You, Me and Dupree': 3.5},
'Michael Phillips': {'Lady in the Water': 2.5, 'Snakes on a Plane': 3.0,
'Superman Returns': 3.5, 'The Night Listener': 4.0},
'Claudia Puig': {'Snakes on a Plane': 3.5, 'Just My Luck': 3.0,
'The Night Listener': 4.5, 'Superman Returns': 4.0,
'You, Me and Dupree': 2.5},
'Mick LaSalle': {'Lady in the Water': 3.0, 'Snakes on a Plane': 4.0,
'Just My Luck': 2.0, 'Superman Returns': 3.0, 'The Night Listener': 3.0,
'You, Me and Dupree': 2.0},
'Jack Matthews': {'Lady in the Water': 3.0, 'Snakes on a Plane': 4.0,
'The Night Listener': 3.0, 'Superman Returns': 5.0, 'You, Me and Dupree': 3.5},
'Toby': {'Snakes on a Plane':4.5,'You, Me and Dupree':1.0,'Superman Returns':4.0}}
欧几里德距离
from math import sqrt
# Returns a distance-based similarity score for person1 and person2
def sim_distance(prefs,person1,person2):
# Get the list of shared_items
si={}
for item in prefs[person1]:
if item in prefs[person2]: si[item]=1
# if they have no ratings in common, return 0
if len(si)==0: return 0
# Add up the squares of all the differences
sum_of_squares=sum([pow(prefs[person1][item]-prefs[person2][item],2)
for item in prefs[person1] if item in prefs[person2]])
return 1/(1+sum_of_squares)
运行:
>>> import myset
>>> myset.sim_distance(myset.critics,'Lisa Rose','Gene Seymour')
0.14814814814814814
上述执行过程给出了Lisa Rose和Gene Seymour之间的相似度评价
皮尔逊相关度
如果某人总是倾向于给出比另一个人更高的分值,而二者的分值之差又始终保持一致,则他们依然可能会存在很好的相关性,前面的欧几里德距离就显得不合适了。我们看下皮尔逊相关度评价。
def sim_pearson(prefs,p1,p2):
# Get the list of mutually rated items
si={}
for item in prefs[p1]:
if item in prefs[p2]: si[item]=1
# if they are no ratings in common, return 0
if len(si)==0: return 0
# Sum calculations
n=len(si)
# Sums of all the preferences
sum1=sum([prefs[p1][it] for it in si])
sum2=sum([prefs[p2][it] for it in si])
# Sums of the squares
sum1Sq=sum([pow(prefs[p1][it],2) for it in si])
sum2Sq=sum([pow(prefs[p2][it],2) for it in si])
# Sum of the products
pSum=sum([prefs[p1][it]*prefs[p2][it] for it in si])
# Calculate r (Pearson score)
num=pSum-(sum1*sum2/n)
den=sqrt((sum1Sq-pow(sum1,2)/n)*(sum2Sq-pow(sum2,2)/n))
if den==0: return 0
r=num/den
return r
发现一篇介绍推荐引擎的文章写得很不错
http://www.oschina.net/question/12_17362
分享到:
相关推荐
“探索推荐引擎内部的秘密”系列将带领...本文作为这个系列的第一篇文章,将深入介绍推荐引擎的工作原理,和其中涉及的各种推荐机制,以及它们各自的优缺点和适用场景,帮助用户清楚的了解和快速构建适合自己的推荐引擎
“基于 Apache Mahout 构建社会化推荐引擎”中的“使用 Taste 构建推荐引擎实例 – 电影推荐引擎”的工程文件,环境:MyEclipse8.5+JDK1.6+TOMCAT6。直接下载,用MyEclipse导入项目即可。
智能推荐引擎 本系统的意义在于:建立不同使用场景的推荐机制,实现推荐引擎 从传统的大众化推荐向差异化推荐转变,并最终实现基于用户偏好的个 性化推荐。本系统主要采用两种算法:关联和协同过滤。关联推荐算法 是...
中科院大数据环境下实现一个通用推荐引擎的实践 共44页.pptx
音乐推荐引擎是一种有趣且有用的应用程序,它可以根据用户的音乐偏好为他们推荐新的音乐。在这个实战博客中,我们将创建一个基于Java的简单音乐推荐引擎,演示如何根据用户的音乐喜好为他们提供音乐建议。我们将深入...
推荐引擎是一个能预测用户兴趣点的模型。将推荐引擎应用于电影语境时,便成了一个电影推荐引擎。我们通过预测当前用户可能会喜欢的内容,将相应的东西从数据库中筛选出来,这样的推荐引擎可以有助于将用户和数据集中...
RecDB是一个完全在PostgreSQL中构建的推荐引擎
百度推荐引擎实践系列(一)_策略篇
百度推荐引擎实践系列(一):策略篇.pdf
ESHOP一站式购物网站,提供购物比价,购物优惠汇总,购物重定向,价格趋势展示,为了充分利用购物...索引擎,网站结构基于S2SH开发,使用Apache的Mahout算法进行了推荐引擎设计,实现了基于用户和商品的双层数据推荐
推荐引擎是现代信息检索和个性化服务的重要组成部分,它根据用户的行为、兴趣和其他相关信息,为用户推荐最可能感兴趣的内容。以下是四种常见的推荐算法: 基于人口统计学的推荐: 原理:这种推荐方法主要基于用户...
一个用不同语言实现的简单推荐引擎_Python_下载.zip
一个推荐引擎游乐场,有望使播放音乐推荐变得容易。_Python_下载.zip
mortar-recsys, 一种基于砂浆数据的Hadoop和 Pig 定制推荐 Mortar推荐引擎一个定制推荐引擎的Hadoop和 Pig,通过迫击炮数据。入门/教程这个项目包含了几个完整的。可以运行的示例数据示例数据,以及一个模板项目。...
Meetup的骨架-在一小时内构建您自己的推荐引擎_Java_下载.zip
一种电影推荐引擎,它使用基于协作和内容的过滤来推荐电影。_Jupyter Notebook_Python_下载.zip
本系统在ANT下可以直接运行,...电影推荐系统中引用了Apache Mahout提供的一个协同过滤算法的推荐引擎Taste,它实现了最基本的基于用户和基于内容的推荐算法,并提供了扩展接口,使用户方便的定义和实现自己的推荐算法。
节点推荐一个Node.js模块,用于通过流行的机器学习算法实现推荐引擎。特征受到《 一书的启发。 与欧几里得距离和皮尔森评分相似。 用户和逐项筛选器。安装通过npm: $ npm install recommend作为项目的子模块(您还...
如何使用ChatGPT在PYTHON中编码产品推荐引擎.zip