推荐算法——Surprise

本文介绍了Surprise库的入门使用,包括基于movielens数据集的实践和算法参数调优。通过协同过滤算法构建模型,并利用GridSearchCV进行超参数选择,以提升推荐系统的性能。此外,展示了如何在训练模型后,利用algo.get_neighbors()找到最相似的项目。

Surprise入门使用

官网:https://yiyibooks.cn/sorakunnn/surprisesurprise-v1.0.5/surprise-v1.0.5/index.html

1. 使用movielens数据集
from surprise import SVD, KNNWithMeans, Reader
import os
from surprise import Dataset
from surprise.model_selection import cross_validate
# 默认载入movielens数据集
# data = Dataset.load_builtin('ml-100k')

# 载入自己数据集的方法
# 把path中包含的"~"和"~user"转换成用户目录
filepah = os.path.expanduser('~/.surprise_data/ml-100k/ml-100k/u.data')
reader = Reader(line_format='user item rating timestamp', sep='\t')
data = Dataset.load_from_file(file_path=filepah, reader=reader)

# 试一把SVD矩阵分解
algo = SVD()
# 也可以试试别的算法
# algo = KNNWithMeans()
# 在数据集上测试一下效果并打印, 3折交叉验证
cross_validate(algo, data, measures=['RMSE', 'MAE'], cv=3, verbose=True)


在这里插入图片描述

### 推荐算法概述 推荐系统旨在通过分析用户的历史行为和其他用户的相似行为,预测并提供个性化的内容或产品给目标用户。这类系统的常见应用领域包括电子商务平台的商品推荐、流媒体服务中的视频推荐以及社交网络上的好友建议。 #### 推荐算法的分类 常见的推荐算法可以分为三大类: - **基于内容的过滤**:这种方法依赖于物品本身的属性特征来进行匹配[^4]。 - **协同过滤**:利用大量用户的行为模式发现潜在的兴趣点,进而做出推荐决策。它又细分为两种主要形式——基于用户的协同过滤和基于项目的协同过滤。 - **混合模型**:结合上述两者的优势,既考虑了个体偏好也兼顾群体趋势,从而提高了推荐效果的质量与多样性。 #### 推荐算法的具体实现方式 对于想要深入了解具体实现细节的人来说,《PID算法及原理详解》虽然不是专门针对推荐系统的资料,但对于理解控制理论基础有一定帮助;而《AES-CMAC算法资源文件介绍》则更侧重于加密技术而非推荐机制[^1][^2]。真正专注于推荐引擎开发的是那些提供了完整框架和支持多种推荐策略的开源项目。例如,在电商场景下构建商品推荐系统时,可以从零开始搭建一套完整的解决方案,这涉及到对用户交互数据的收集、处理直至最终形成定制化的产品列表呈现给顾客。 #### 开源项目实例 为了便于实践操作和技术交流,许多开发者会选择参与或者借鉴现有的成熟开源项目。一个典型的例子就是用于创建高效能推荐系统的工具集,它们通常具备良好的文档说明、活跃社区支持等特点。特别是当提及到电商平台商品推荐系统的建设时,存在一些优秀的开源框架可供参考,这些框架不仅涵盖了基本的数据预处理功能,还包括先进的机器学习算法集成,使得即使是初学者也能快速上手建立自己的推荐服务平台。 ```python import pandas as pd from surprise import Dataset, Reader, SVD from surprise.model_selection import train_test_split # 加载样本评分数据 data = pd.read_csv('ratings.csv') reader = Reader(rating_scale=(1, 5)) dataset = Dataset.load_from_df(data[['userId', 'movieId', 'rating']], reader) # 划分训练集测试集 trainset, testset = train_test_split(dataset, test_size=0.25) # 使用SVD矩阵分解法建模 algo = SVD() algo.fit(trainset) # 预测评分 predictions = algo.test(testset) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值