推荐引擎算法大体上分为两种:
(一)基于内容的
暂时不分析
(二)协同过滤
一个协同过滤算法通常的做法是对一大群人进行搜索,从中找到与我们品味相近的一小群人,算法会对这些人所偏爱的其他内容进行考查,并把他们组合成一个经过排名的推荐列表。
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
分享到:
相关推荐
“探索推荐引擎内部的秘密”系列将带领...本文作为这个系列的第一篇文章,将深入介绍推荐引擎的工作原理,和其中涉及的各种推荐机制,以及它们各自的优缺点和适用场景,帮助用户清楚的了解和快速构建适合自己的推荐引擎
推荐引擎是现代互联网中一种关键的信息发现工具,尤其在Web 2.0时代,随着用户生成内容的爆炸性增长,传统搜索引擎已经无法满足用户寻找个性化信息的需求。推荐引擎通过运用特定的信息过滤技术,分析用户的行为和...
### 一、推荐引擎的基础概念 推荐引擎是一种利用算法预测用户可能感兴趣的信息并推荐给用户的技术。它广泛应用于电商、社交媒体、新闻网站等领域,帮助用户发现他们可能喜欢但自己未曾察觉的内容。 ### 二、推荐...
“基于 Apache Mahout 构建社会化推荐引擎”中的“使用 Taste 构建推荐引擎实例 – 电影推荐引擎”的工程文件,环境:MyEclipse8.5+JDK1.6+TOMCAT6。直接下载,用MyEclipse导入项目即可。
中科院大数据环境下实现一个通用推荐引擎的实践 共44页.pptx
智能推荐引擎是一种先进的技术,旨在将传统的大众化推荐转变为差异化的、个性化推荐,以更好地适应用户的独特需求和偏好。这一系统的核心在于运用两种主要的算法:关联推荐算法和协同过滤算法。 关联推荐算法是基于...
微博作为中国领先的社交媒体平台之一,其推荐引擎系统作为核心组成部分,承载着将用户可能感兴趣的内容高效、准确地推荐给用户的重要任务。随着业务规模的扩大和用户需求的增加,微博推荐引擎经历了从架构到实践的一...
推荐引擎是一种智能的信息过滤系统,它通过分析用户的行为、兴趣和偏好,为用户提供个性化的信息推荐。随着互联网数据的爆炸性增长,尤其是Web 2.0时代的到来,用户面临着海量信息,传统的搜索引擎已无法满足复杂...
通过以上分析,我们可以了解到分布式系统在处理大规模、复杂任务方面的重要性和优势,这对于设计一个基于Hadoop和Mahout的分布式推荐引擎至关重要。同时,高校科技期刊在探索集约化办刊的过程中所面临的资源优化和...
PyTorch,作为一个强大的深度学习框架,为构建高效的推荐引擎提供了灵活且直观的工具。本教程将深入探讨如何利用Python和PyTorch构建一个深度学习推荐引擎。 一、PyTorch基础 PyTorch是Facebook开源的一个深度学习...
作为一名IT行业大师,我将从给定的文件中生成相关知识点,并对阿里云推荐引擎进行深入剖析。 阿里云推荐引擎概述 阿里云推荐引擎是阿里云推出的一个智能化推荐系统,旨在帮助企业快速搭建推荐系统,提高用户体验和...
首先,推荐引擎是数据驱动的一种技术,用于个性化地向用户推荐内容或产品。其工作原理基于用户的行为数据、兴趣偏好、历史购买记录以及与其他用户的相似性。推荐引擎可以分为基于内容的推荐、协同过滤推荐和混合推荐...
RedisGo推荐引擎是一个基于Redis和Go语言实现的轻量级推荐系统框架。它利用了Redis的高速缓存特性以及Go语言的并发优势,为实时推荐场景提供高效、可靠的解决方案。在这一压缩包中,我们主要关注以下几个核心知识点...
推荐引擎是一种人工智能技术,用于根据用户的兴趣、行为和偏好向他们提供个性化建议。在这个特定的项目中,“一个推荐引擎游乐场”是一个用Python语言构建的平台,旨在简化音乐播放推荐的过程。通过使用Python,...
本文将深入探讨如何利用Hadoop构建一个高效的商品推荐引擎,旨在为用户提供精准的商品推荐,从而提高用户满意度和平台的商业价值。 一、Hadoop简介 Hadoop是Apache软件基金会开发的开源分布式计算框架,它基于...
推荐引擎是现代信息检索和个性化服务的核心技术之一,它通过分析用户的行为和偏好,利用推荐算法向用户推荐可能感兴趣的内容或商品。随着互联网数据量的爆炸式增长,推荐引擎成为帮助用户从海量信息中筛选出有价值...
《百度推荐引擎实践系列(一)_策略篇》是关于推荐系统设计与优化的一份资料,主要探讨了百度在推荐技术中的策略应用。推荐系统作为现代互联网产品中的关键组成部分,能够根据用户的行为和偏好,为用户提供个性化的...
本篇文章将深入探讨如何使用Python语言实现一个简单的推荐引擎,并分析其背后的基本原理和实现方法。 推荐引擎主要分为三类:基于内容的推荐、协同过滤推荐以及混合推荐。基于内容的推荐系统依赖于用户过去的喜好和...
推荐引擎是一种重要的信息技术,它利用用户的历史行为和偏好来预测他们可能感兴趣的新内容或产品。在众多的推荐算法中,皮尔逊相关度算法是一种常用且有效的策略,它基于用户评分数据来计算物品之间的相似性。这篇...