Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >使用Python3.7配合协同过滤算法(base on user,基于人)构建一套简单的精准推荐系统(个性化推荐)

使用Python3.7配合协同过滤算法(base on user,基于人)构建一套简单的精准推荐系统(个性化推荐)

作者头像
用户9127725
发布于 2022-08-08 03:05:24
发布于 2022-08-08 03:05:24
42900
代码可运行
举报
运行总次数:0
代码可运行

    时至2020年,个性化推荐可谓风生水起,Youtube,Netflix,甚至于Pornhub,这些在互联网上叱咤风云的流媒体大鳄无一不靠推荐系统吸引流量变现,一些电商系统也纷纷利用精准推荐来获利,比如Amzon和Shopfiy等等,精准推荐用事实告诉我们,流媒体和商品不仅仅以内容的传播,它还能是一种交流沟通的方式。

    那么如何使用python语法构造一套属于我们自己的推荐系统呢,这里推荐协同过滤算法,它隶属于启发式推荐算法(Memory-based algorithms),这种推荐算法易于实现,并且推荐结果的可解释性强,其中我们使用基于用户的协同过滤(User-based collaborative filtering):主要考虑的是用户和用户之间的相似度,只要找出相似用户喜欢的物品,并预测目标用户对对应物品的评分,就可以找到评分最高的若干个物品推荐给用户。举个例子,李老师和闫老师拥有相似的电影喜好,当新电影上映后,李老师对其表示喜欢,那么就能将这部电影推荐给闫老师。

    说白了就是利用商品作为纽带,判断高相似度的用户之间互相没有买过的商品,然后将其排序推荐。

    假设我们是一个在线手机平台,有一些用户的购买数据和打分记录

    phone.txt

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
1,华为p30,2.0
1,三星s10,5.0
1,小米9,2.6
2,华为p30,1.0
2,vivo,5.0
2,htc,4.6
3,魅族,2.0
3,iphone,5.0
3,pixel2,2.6

    用户1买了华为三星和小米三款手机,而用户而买了华为,vio,htc这三款,其中用户1和用户2的相同点是都买过华为手机,我们认为此二人具有一定的相似度,而用户3买的手机则完全不一样,所以用户3的存在可以理解为一种检查机制,用来验证推荐系统的可用性,因为以用户3的购买记录来看,理论上不应该将用户3的手机推荐给用户1和2,反过来用户1和用户2买过的手机也不会推荐给拥护3

    第一步,将数据读取并格式化为字典形式,便于解析:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
content = []
with open('./phone.txt') as fp:  
    content = fp.readlines()

# 将用户、评分、和手机写入字典data
data = {}
for line in content:
    line = line.strip().split(',')
    #如果字典中没有某位用户,则使用用户ID来创建这位用户
    if not line[0] in data.keys():
        data[line[0]] = {line[1]:line[2]}
    #否则直接添加以该用户ID为key字典中
    else:
        data[line[0]][line[1]] = line[2]

    第二步,计算两个用户之间的相似度,这里使用欧几里得距离(欧式距离)    

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
from math import *
def Euclid(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))#这里返回值越小,相似度越大

     第三步,计算当前用户和其他所有用户的相似度,因为用户可能成千上万,我们只需要那一个和当前用户极为相似的真命天子

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#计算某个用户与其他用户的相似度
def top_simliar(userID):
    res = []
    for userid in data.keys():
        #排除与自己计算相似度
        if not userid == userID:
            simliar = Euclid(userID,userid)
            res.append((userid,simliar))
    res.sort(key=lambda val:val[1])
    return res

     最后一步,进行推荐推送:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
def recommend(user):
    #相似度最高的用户
    top_sim_user = top_simliar(user)[0][0]
    #相似度最高的用户的购买记录
    items = data[top_sim_user]
    recommendations = []
    #筛选出该用户未购买的手机并添加到列表中
    for item in items.keys():
        if item not in data[user].keys():
            recommendations.append((item,items[item]))
    recommendations.sort(key=lambda val:val[1],reverse=True)#按照评分排序

    return recommendations

     最后运行测试

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
print(recommend('1'))
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[('vivo', '5.0'), ('htc', '4.6')]

    将vivo和htc手机按照评分倒序推荐给了用户1,符合我们的基本逻辑

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-03-10 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
基于协同过滤的电影推荐系统的设计与实现(协同过滤推荐算法伪代码)
Apache Mahout 是 Apache Software Foundation(ASF) 旗下的一个开源项目,提供一些可扩展的机器学习领域经典算法的实现,旨在帮助开发人员更加方便快捷地创建智能应用程序。经典算法包括聚类、分类、协同过滤、进化编程等等,并且,在 Mahout 中还加入了对Apache Hadoop的支持,使这些算法可以更高效的运行在云计算环境中。
全栈程序员站长
2022/07/28
2.7K0
基于协同过滤的电影推荐系统的设计与实现(协同过滤推荐算法伪代码)
Python 【面试总结】
https://blog.kido.site/2018/12/01/db-and-cache-01/
IT茂茂
2020/06/24
5800
Python 【面试总结】
推荐系统 —— 协同过滤
作为推荐系统 这一系列的第二篇文章,我们今天主要来聊一聊目前比较流行的一种推荐算法——协同过滤; 当然,这里我们只讲理论,并不会涉及到相关代码或者相关框架的使用,在这一系列的后续文章,如果可能,我们可以将我们的所有理论知识整合一下,实践一个 推荐系统的 实战。
solve
2019/10/30
8620
【基于协同过滤算法的推荐系统项目实战-2】了解协同过滤推荐系统
用户行为能够真实的反映每个用户的偏好和习惯,其中的显示反馈数据会比较稀疏,隐式的反馈数据蕴含了大量的信息。
程序员洲洲
2024/06/07
4300
【基于协同过滤算法的推荐系统项目实战-2】了解协同过滤推荐系统
推荐系统实战-基于用户的协同过滤
1、数据集简介 MovieLens数据集包含多个用户对多部电影的评级数据,也包括电影元数据信息和用户属性信息。 这个数据集经常用来做推荐系统,机器学习算法的测试数据集。尤其在推荐系统领域,很多著名论文都是基于这个数据集的。(PS: 它是某次具有历史意义的推荐系统竞赛所用的数据集)。 下载地址为:http://files.grouplens.org/datasets/movielens/,有好几种版本,对应不同数据量,本文所用的数据为1M的数据。 2、数据介绍 1m的数据解压后,可以看到四个主要的csv文件,
石晓文
2018/04/11
2.6K1
推荐系统实战-基于用户的协同过滤
协同过滤推荐算法(一)原理与实现
协同过滤推荐算法是诞生最早,并且较为著名的推荐算法。主要的功能是预测和推荐。算法通过对用户历史行为数据的挖掘发现用户的偏好,基于不同的偏好对用户进行群组划分并推荐品味相似的商品。协同过滤推荐算法分为两类,分别是基于用户的协同过滤算法(user-based collaboratIve filtering),和基于物品的协同过滤算法(item-based collaborative filtering)。简单的说就是:人以类聚,物以群分。下面我们将分别说明这两类推荐算法的原理和实现方法。
全栈程序员站长
2022/09/07
3.4K0
协同过滤推荐算法(一)原理与实现
基于用户的协同过滤python代码实现
在推荐算法概述中介绍了几种推荐算法的概念,但是没有具体代码实现,本篇文章首先来看一下基于用户的协同过滤python代码。
三猫
2020/05/20
1.8K5
学习协同过滤推荐 \w 100行Python代码
用一百行 Python 代码,入门协同过滤推荐。
刘笑江
2018/05/28
1.2K5
推荐系统--完整的架构设计和算法(协同过滤、隐语义)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
mantch
2019/09/18
2.1K0
推荐系统--完整的架构设计和算法(协同过滤、隐语义)
python演示推荐系统里的协同过滤算法
推荐系统是属于信息过滤领域的一个范畴,目标在预测用户对某个项目(例如产品、电影、歌曲等)的“评分”或“偏好”。
mariolu
2024/03/08
2240
基于协同过滤的推荐系统
原公式中,只考虑用户消费用一种商品,而没有考虑用户消费同一种商品处在不同时期。如果用户消费了物品i和物品j,如果消费时间间隔越近,那么这次“同现”的权重应该越大,间隔越远权重越小。在分子上除以间隔时间,惩罚时间间隔影响。
birdskyws
2018/11/22
1.9K0
应用:能够快速实现的协同推荐
对于中小型的公司,用户的数据量及公司产品的个数都是较小规模的,需要提供给用户的推荐系统实现的重心也从人性化变成了实现成本,协同推荐就是非常常见、有效且可以快速实现的方法,也是本文想介绍的。
sladesal
2018/08/27
3270
协同过滤推荐算法(一)
上节课我们简单介绍了推荐系统的总体框架思路,从本节课开始我们将对推荐系统中的核心算法进行详细讲解。在目前主流的推荐算法中,使用最多也是最经典的,当属协同过滤算法!
用户7569543
2021/03/18
1K0
基于协同过滤(CF)算法的推荐系统
         随着计算机领域技术的高速发展,电子商务时代的普及,个性化的推荐系统深入生活应用的各个方面。个性化推荐算法是推荐系统中最核心的技术,在很大程度上决定了电子商务推荐系统性能的优劣。而协同过滤推荐是个性化推荐系统应用最为广泛的技术,协同过滤推荐主要分为基于用户的协同过滤推荐、基于项目的协同过滤推荐和基于模型的协同过滤推荐。
Flaneur
2020/03/25
5.1K0
构建基于深度学习神经网络协同过滤模型(NCF)的视频推荐系统(Python3.10/Tensorflow2.11)
    毋庸讳言,和传统架构(BS开发/CS开发)相比,人工智能技术确实有一定的基础门槛,它注定不是大众化,普适化的东西。但也不能否认,人工智能技术也具备像传统架构一样“套路化”的流程,也就是说,我们大可不必自己手动构建基于神经网络的机器学习系统,直接使用深度学习框架反而更加简单,深度学习可以帮助我们自动地从原始数据中提取特征,不需要手动选择和提取特征。
用户9127725
2023/04/07
5400
构建基于深度学习神经网络协同过滤模型(NCF)的视频推荐系统(Python3.10/Tensorflow2.11)
[推荐算法]基于用户的协同过滤算法「建议收藏」
推荐算法最早在1992年就提出来了,但是火起来实际上是最近这些年的事情,因为互联网的爆发,有了更大的数据量可以供我们使用,推荐算法才有了很大的用武之地。
全栈程序员站长
2022/09/07
6330
AI 驱动的个性化推荐系统设计
文章链接:https://cloud.tencent.com/developer/article/2469020
Swift社区
2024/11/25
4030
AI 驱动的个性化推荐系统设计
协同过滤推荐算法
相信大家对推荐系统已经很熟悉了,它通过分析用户的历史行为,挖掘用户的兴趣爱好,预测并推荐给用户其接下来有可能感兴趣的事物,例如商品推荐、音乐推荐、新闻以及最近很火的短视频推荐等等。
小萌哥
2020/07/21
1.5K0
协同过滤推荐算法
协同过滤原理及Python实现
作者:ACdreamers 链接:http://blog.csdn.net/acdreamers/article/details/44672305 1. 协同过滤的简介 关于协同过滤的一个最经典的例子就是看电影,有时候不知道哪一部电影是我们喜欢的或者评分比较高的,那么通常的做法就是问问周围的朋友,看看最近有什么好的电影推荐。在问的时候,都习惯于问跟自己口味差不多的朋友,这就是协同过滤的核心思想。 协同过滤是在海量数据中挖掘出小部分与你品味类似的用户,在协同过滤中,这些用户成为邻居,然后根据他们喜欢的东西组织
昱良
2018/04/08
1.4K0
协同过滤原理及Python实现
协同过滤技术在推荐系统中的应用
协同过滤(Collaborative Filtering)是推荐系统中最常用和最有效的技术之一。它基于用户和项目之间的交互数据来进行推荐,而无需了解项目的具体内容。协同过滤技术主要分为两大类:基于用户的协同过滤(User-based Collaborative Filtering)和基于项目的协同过滤(Item-based Collaborative Filtering)。以下是协同过滤技术在推荐系统中的详细应用介绍。
数字扫地僧
2024/08/07
3960
相关推荐
基于协同过滤的电影推荐系统的设计与实现(协同过滤推荐算法伪代码)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验