推荐系统首先收集用户的历史行为数据,然后通过预处理的方法得到用户-评价矩阵,再利用机器学习领域中相关推荐技术形成对用户的个性化推荐。有的推荐系统还搜集用户对推荐结果的反馈,并根据实际的反馈信息实时调整推荐策略,产生更符合用户需求的推荐结果。为了更好的去了解一个推荐系统,从0到1了解推荐过程,我们通过一些网上开源的数据来搭建一个推荐系统
搭建推荐系统的第一步是明确目标和需求:
数据源选取自 Kaggle,常见的数据集包括以下几类:
db使用的是sqlite3,搜索东西均为了轻量化,数据获取如下:
path = kagglehub.dataset_download("asaniczka/amazon-products-dataset-2023-1-4m-products")
print("Path to dataset files:", path)
# 查找 CSV 文件
data_file = None
for root, dirs, files in os.walk(path):
for file in files:
if file.endswith(".csv"):
data_file = os.path.join(root, file)
break
# 连接 SQLite 数据库
conn = sqlite3.connect('db/recommend.db')
用户id当前为了轻量化,我们直接使用用户的ip做为user_id,建表如下:
-- auto-generated definition
create table user_clicks
(
user_id TEXT,
asin TEXT,
click_time TIMESTAMP
);
处理原始数据可能出现的问题:
对于商品文本信息(如商品描述和标题),可以使用词频统计(TF-IDF)提取关键词。
将清洗后的数据存入数据库(如 MySQL),并按时间或用户分割为训练集和测试集:
推荐过程
后端使用的flask框架,对每一个请求都执行召回、粗排、精排、重排等,最终展示到用户。
根据业务需求选择以下推荐方法:
后端推荐服务应该支持以下功能:
下面是由GPT生成的代码,只展示部分,感兴趣的可以直接去看下源码:https://github.com/Zephery/amazon-rec
candidates = recall(user_id)
coarse_ranked = coarse_ranking(candidates)
fine_ranked = fine_ranking(user_id, coarse_ranked)
final_recommendations = re_ranking(user_id, fine_ranked)
前端采用 Vue.js 构建交互页面,在推荐系统中展示推荐结果。
前端主要实现以下功能:
前端与后端通过 API 完成数据交互,获取以下推荐结果:
推荐结果展示在动态页面中,用户可以点击查看商品详情或加入购物车。
体验直达:https://rec.wenzhihuai.com/products,因服务需要加载大量数据,可能有时候无法访问。
主商品界面
清理浏览记录可把自己的点击日志给清空,可以重新点击别的来体验一下推荐效果。
首页
商品详情页
商品详情页
太多了,这个版本只是个草稿,甚至说是半残品,本人技术有限,大部分也只能看看GPT生成的一些代码,调优还在持续进行中。 1.搜索无法精准找到想要的内容,比如搜索"ipad",出来的却是一大堆ipad相关的配件,这个还在优化中 2.点击单个商品后,再次返回,所推荐的商品相关性太差 3.需要由推荐系统转变为广告系统,增加投放、计费等能力。 慢慢来吧
访问地址:https://rec.wenzhihuai.com/products 源码:https://github.com/Zephery/amazon-rec
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有