推荐系统理论与实践

简介: 推荐系统是利用电子商务网站向客户提供商品信息和建议,帮助用户决定应该购买什么产品,模拟销售人员帮助客户完成购买过程。个性化推荐是根据用户的兴趣特点和购买行为,向用户推荐用户感兴趣的信息和商品。

推荐系统意义:

推荐系统是利用电子商务网站向客户提供商品信息和建议,帮助用户决定应该购买什么产品,模拟销售人员帮助客户完成购买过程。个性化推荐是根据用户的兴趣特点和购买行为,向用户推荐用户感兴趣的信息和商品。


随着电子商务规模的不断扩大,商品个数和种类快速增长,顾客需要花费大量的时间才能找到自己想买的商品。这种浏览大量无关的信息和产品过程无疑会使淹没在信息过载问题中的消费者不断流失。


为了解决这些问题,个性化推荐系统应运而生。个性化推荐系统是建立在海量数据挖掘基础上的一种高级商务智能平台,以帮助电子商务网站为其顾客购物提供完全个性化的决策支持和信息服务。


推荐系统分类:

image.png



一、基于内容推荐cb


      基 于内容的推荐(Content-based Recommendation)是信息过滤技术的延续与发展,它是建立在项目的内容信息上作出推荐的,而不需要依据用户对项目的评价意见,更多地需要用机 器学习的方法从关于内容的特征描述的事例中得到用户的兴趣资料。在基于内容的推荐系统中,项目或对象是通过相关的特征的属性来定义,系统基于用户评价对象 的特征,学习用户的兴趣,考察用户资料与待预测项目的相匹配程度。用户的资料模型取决于所用学习方法,常用的有决策树、神经网络和基于向量的表示方法等。 基于内容的用户资料是需要有用户的历史数据,用户资料模型可能随着用户的偏好改变而发生变化。

基于内容推荐方法的优点是:


(1)不需要其它用户的数据,没有冷开始问题和稀疏问题。

(2)能为具有特殊兴趣爱好的用户进行推荐。

(3)能推荐新的或不是很流行的项目,没有新项目问题。

(4)通过列出推荐项目的内容特征,可以解释为什么推荐那些项目。

(5)已有比较好的技术,如关于分类学习方面的技术已相当成熟。

      缺点是要求内容能容易抽取成有意义的特征,要求特征内容有良好的结构性,并且用户的口味必须能够用内容特征形式来表达,不能显式地得到其它用户的判断情况。


二、协同过滤推荐cf


      协 同过滤推荐(Collaborative Filtering Recommendation)技术是推荐系统中应用最早和最为成功的技术之一。它一般采用最近邻技术,利用用户的历史喜好信息计算用户之间的距离,然后 利用目标用户的最近邻居用户对商品评价的加权评价值来预测目标用户对特定商品的喜好程度,系统从而根据这一喜好程度来对目标用户进行推荐。协同过滤最大优 点是对推荐对象没有特殊的要求,能处理非结构化的复杂对象,如音乐、电影。

      协同过滤是基于这样的假设:为一用户找到他真正感兴趣的内容的好方法是首先找到与此用户有相似兴趣的其他用户,然后将他们感兴趣的内容推荐给此用户。其基本 思想非常易于理解,在日常生活中,我们往往会利用好朋友的推荐来进行一些选择。协同过滤正是把这一思想运用到电子商务推荐系统中来,基于其他用户对某一内 容的评价来向目标用户进行推荐。

基于协同过滤的推荐系统可以说是从用户的角度来进行相应推荐的,而且是自动的,即用户获得的推荐是系统从购买模式或浏览行为等隐式获得的,不需要用户努力地找到适合自己兴趣的推荐信息,如填写一些调查表格等。

      和基于内容的过滤方法相比,协同过滤具有如下的优点:

(1) 能够过滤难以进行机器自动内容分析的信息,如艺术品,音乐等。

(2) 共享其他人的经验,避免了内容分析的不完全和不精确,并且能够基于一些复杂的,难以表述的概念(如信息质量、个人品味)进行过滤。

(3) 有推荐新信息的能力。可以发现内容上完全不相似的信息,用户对推荐信息的内容事先是预料不到的。这也是协同过滤和基于内容的过滤一个较大的差别,基于内容的过滤推荐很多都是用户本来就熟悉的内容,而协同过滤可以发现用户潜在的但自己尚未发现的兴趣偏好。

4) 能够有效的使用其他相似用户的反馈信息,较少用户的反馈量,加快个性化学习的速度。

虽然协同过滤作为一种典型的推荐技术有其相当的应用,但协同过滤仍有许多的问题需要解决。最典型的问题有稀疏问题(Sparsity)和可扩展问题(Scalability)。


三、基于关联规则推荐


     基 于关联规则的推荐(Association Rule-based Recommendation)是以关联规则为基础,把已购商品作为规则头,规则体为推荐对象。关联规则挖掘可以发现不同商品在销售过程中的相关性,在零 售业中已经得到了成功的应用。管理规则就是在一个交易数据库中统计购买了商品集X的交易中有多大比例的交易同时购买了商品集Y,其直观的意义就是用户在购 买某些商品的时候有多大倾向去购买另外一些商品。比如购买牛奶的同时很多人会同时购买面包。

      算法的第一步关联规则的发现最为关键且最耗时,是算法的瓶颈,但可以离线进行。其次,商品名称的同义性问题也是关联规则的一个难点。


四、基于效用推荐


      基 于效用的推荐(Utility-based Recommendation)是建立在对用户使用项目的效用情况上计算的,其核心问题是怎么样为每一个用户去创建一个效用函数,因此,用户资料模型很大 程度上是由系统所采用的效用函数决定的。基于效用推荐的好处是它能把非产品的属性,如提供商的可靠性(Vendor Reliability)和产品的可得性(Product Availability)等考虑到效用计算中。考虑使用用户对商品的评论等


五、基于知识推荐


      基 于知识的推荐(Knowledge-based Recommendation)在某种程度是可以看成是一种推理(Inference)技术,它不是建立在用户需要和偏好基础上推荐的。基于知识的方法因 它们所用的功能知识不同而有明显区别。效用知识(Functional Knowledge)是一种关于一个项目如何满足某一特定用户的知识,因此能解释需要和推荐的关系,所以用户资料可以是任何能支持推理的知识结构,它可以 是用户已经规范化的查询,也可以是一个更详细的用户需要的表示。考虑利用用户浏览,购买,搜索建立用户的兴趣集。


六、组合推荐


     由 于各种推荐方法都有优缺点,所以在实际中,组合推荐(Hybrid Recommendation)经常被采用。研究和应用最多的是内容推荐和协同过滤推荐的组合。最简单的做法就是分别用基于内容的方法和协同过滤推荐方法 去产生一个推荐预测结果,然后用某方法组合其结果。尽管从理论上有很多种推荐组合方法,但在某一具体问题中并不见得都有效,组合推荐一个最重要原则就是通 过组合后要能避免或弥补各自推荐技术的弱点。

在组合方式上,有研究人员提出了七种组合思路:

(1)加权(Weight):加权多种推荐技术结果。

(2)变换(Switch):根据问题背景和实际情况或要求决定变换采用不同的推荐技术。

(3)混合(Mixed):同时采用多种推荐技术给出多种推荐结果为用户提供参考。

(4)特征组合(Feature combination):组合来自不同推荐数据源的特征被另一种推荐算法所采用。

(5)层叠(Cascade):先用一种推荐技术产生一种粗糙的推荐结果,第二种推荐技术在此推荐结果的基础上进一步作出更精确的推荐。

(6)特征扩充(Feature augmentation):一种技术产生附加的特征信息嵌入到另一种推荐技术的特征输入中。

(7)元级别(Meta-level):用一种推荐方法产生的模型作为另一种推荐方法的输入。


七、主要推荐方法的对比


各种推荐方法都有其各自的优点和缺点。

image.png

以下导图转自: 项亮《推荐系统实战》思维导图_十三吖的博客-CSDN博客_项亮推荐系统

《推荐系统实战》、《集体智慧编程》、思维导图

4dfe96e921e205de00341ab2cf3a66d8_56d5ff506e0127b56aecac7335b8fa45.png

2d5ea484b0930fe40e60764559d9f9a5_f4cf1eb03d46eb426a45928b49d047f3.png

第一章 好的推荐系统第二章 利用用户行为数据第三章 推荐系统冷启动问题第四章 利用用户标签数据第五章 利用上下文信息第六章 利用社交网络数据第七章 推荐系统第八章 评分预测问题


推荐系统简单实践:

电影推荐系统python实现   电影推荐系统python实现 - 简书

简介:推荐系统的一种简单实现就是,给定一个用户A,找到所有用户中与A最相似的用户B,把B看过的电影中A没看过的挑出来,再把B评分最高的几部挑出来。

数据集下载ml-latest-small(1MB): http://files.grouplens.org/datasets/movielens/ml-latest-small.zip

解压缩后用到两个文件 movies.csv 和 ratings.csv 。

movies.csv是各种电影的数据,列分别为 电影编号、电影名、所属类型。

image.png

ratings.csv用户的评分数据,列分别为 用户编号、电影编号、评分、时间戳。

image.png


2 数据处理

我们的目的是给定一个用户id,找出他可能喜欢的电影名。

但是两个文件电影信息和用户评分信息是分开的,所以需要合并。


2.1读取原始数据

import pandas as pd movies = pd.read_csv(r'C:\Users\yyy\Desktop\推荐系统\movies.csv') #注意含中文路径需要在前面加 r 转义 ratings = pd.read_csv(r'C:\Users\yyy\Desktop\推荐系统\ratings.csv')


2.2合并两个文件

data = pd.merge(movies,ratings,on = 'movieId')#通过两数据框之间的movieId连接 data[['userId','rating','movieId','title']].sort_values('userId').to_csv(r'C:\Users\yyy\Desktop\推荐系统\merged.csv',index=False)


2.3 用字典存放所得数据

file = open(r'C:\Users\yyy\Desktop\推荐系统\merged.csv','r')#记得读取文件时加‘r’, encoding='UTF-8' ##读取data.csv中每行中除了名字的数据 data = {}##存放每位用户评论的电影和评分 for line in file.readlines(): #注意这里不是readline() line = line.strip().split(',') #如果字典中没有某位用户,则使用用户ID来创建这位用户 if not line[0] in data.keys(): data[line[0]] = {line[3]:line[1]} #否则直接添加以该用户ID为key字典中 else: data[line[0]][line[3]] = line[1]

此时得到的data[:2]

image.png

3 推荐系统

3.1 计算两个用户的相似度

注意:最后把距离缩放到了[0, 1]之间,这是为了简化计算。

因为有可能两个用户之间的差异很大,平方和累加起来是一个很大的数,他们两个差异这么大对这个推荐系统没用,所以用1/(1+distance)把它缩放到0.

from math import pow, sqrt
def Euclidean(user1,user2): #取出两位用户评论过的电影和评分
user1_data=data[user1]
user2_data=data[user2]
distance = 0 #找到两位用户都评论过的电影,并计算欧式距离
for key in user1_data.keys():
     if key in user2_data.keys(): #注意,distance越大表示两者越相似
          distance += pow(float(user1_data[key])-float(user2_data[key]),2)
return 1/(1+sqrt(distance))#这里返回值越大,相似度越大


3.2 找到最相似的k个用户

def top10_similar(userID):
         res = [] for userid in data.keys():
               if not userid == userID: sim = Euclidean(userID, userid)
                    res.append((userid, sim))
                   res.sort(key=lambda val:val[1], reverse=True)
          return res[:10] RES = top10_similar('1')
print(RES)


3.3 找到最相似的用户看过的电影

def recommend(user, k=5):
recomm = [] most_sim_user = top10_similar(user)[0][0]
items = data[most_sim_user]
for item in items.keys():
       if item not in data[user].keys():
             recomm.append((item, items[item]))
             recomm.sort(key=lambda val:val[1], reverse=True)
       return recomm[:k] RECOM = recommend('1')
print(RECOM)


目录
相关文章
|
人工智能 搜索推荐 算法
【推荐系统】UserCF(基于用户的协同过滤)(理论+图解+代码实践)
【推荐系统】UserCF(基于用户的协同过滤)(理论+图解+代码实践)
1653 0
【推荐系统】UserCF(基于用户的协同过滤)(理论+图解+代码实践)
|
6月前
|
机器学习/深度学习 搜索推荐 算法
推荐系统离线评估方法和评估指标,以及在推荐服务器内部实现A/B测试和解决A/B测试资源紧张的方法。还介绍了如何在TensorFlow中进行模型离线评估实践。
推荐系统离线评估方法和评估指标,以及在推荐服务器内部实现A/B测试和解决A/B测试资源紧张的方法。还介绍了如何在TensorFlow中进行模型离线评估实践。
421 0
|
5月前
|
机器学习/深度学习 搜索推荐 算法
推荐系统的算法与实现:深入解析与实践
【6月更文挑战第14天】本文深入探讨了推荐系统的原理与实现,包括用户和项目建模、协同过滤、内容过滤及混合推荐算法。通过收集用户行为数据,系统预测用户兴趣,提供个性化推荐。实践中,涉及数据处理、建模、算法选择及结果优化。随着技术发展,推荐系统将持续改进,提升性能和用户体验。
|
28天前
|
数据采集 搜索推荐
推荐系统实践之新闻推荐baseline理解
推荐系统实践之新闻推荐baseline理解
26 1
|
29天前
|
数据采集 搜索推荐
推荐系统实践之新闻推荐baseline理解
推荐系统实践之新闻推荐baseline理解
44 1
|
4月前
|
机器学习/深度学习 搜索推荐 算法
深度学习在推荐系统中的应用:技术解析与实践
【7月更文挑战第6天】深度学习在推荐系统中的应用为推荐算法的发展带来了新的机遇和挑战。通过深入理解深度学习的技术原理和应用场景,并结合具体的实践案例,我们可以更好地构建高效、准确的推荐系统,为用户提供更加个性化的推荐服务。
|
6月前
|
人工智能 自然语言处理 搜索推荐
LLM在电商推荐系统的探索与实践
LLM在电商推荐系统的探索与实践
2347 1
|
5月前
|
机器学习/深度学习 人工智能 搜索推荐
构建基于AI的个性化新闻推荐系统:技术探索与实践
【6月更文挑战第5天】构建基于AI的个性化新闻推荐系统,通过数据预处理、用户画像构建、特征提取、推荐算法设计及结果评估优化,解决信息爆炸时代用户筛选新闻的难题。系统关键点包括:数据清洗、用户兴趣分析、表示学习、内容及协同过滤推荐。实践案例证明,结合深度学习的推荐系统能提升用户体验,未来系统将更智能、个性化。
|
6月前
|
机器学习/深度学习 搜索推荐 算法
推荐系统算法的研究与实践:协同过滤、基于内容的推荐和深度学习推荐模型
推荐系统算法的研究与实践:协同过滤、基于内容的推荐和深度学习推荐模型
614 1
|
6月前
|
NoSQL 搜索推荐 算法
【MongoDB】MongoDB在推荐系统中的实践应用
【4月更文挑战第1天】【MongoDB】MongoDB在推荐系统中的实践应用
下一篇
无影云桌面