协同过滤算法概述
协同过滤算法的核心思想是通过用户或物品的相似性进行推荐。该算法主要分为两类:
- 基于用户的协同过滤(User-based Collaborative Filtering):寻找相似的用户群体,推荐他们喜欢的产品给目标用户。
- 基于物品的协同过滤(Item-based Collaborative Filtering):根据用户的历史偏好,推荐相似的物品。
算法优势
- 用户偏好挖掘:深入分析用户行为,挖掘潜在偏好。
- 个性化推荐:为每个用户提供定制化的内容推荐。
- 提高用户粘性:通过推荐用户感兴趣的内容,提高用户活跃度和忠诚度。
相似度计算方法
构建协同过滤推荐系统的关键步骤是计算用户或物品之间的相似度。以下是几种常用的相似度计算方法:
1. 欧式距离
用于计算两个多维样本点的直线距离。
import numpy as np
df = pd.DataFrame([[5, 1, 5], [4, 2, 2]], columns=['特征1', '特征2', '特征3'])
dist = np.linalg.norm(df.iloc[0] - df.iloc[1])
2. 余弦相似度
衡量两个向量方向上的相似性,常用于文本分析和物品推荐。
from sklearn.metrics.pairwise import cosine_similarity
item_similarity = cosine_similarity(df)
pd.DataFrame(item_similarity, columns=['物品A', '物品B'], index=['物品A', '物品B'])
3. 皮尔逊相关系数
衡量两个变量间的线性相关性,取值范围为[-1, 1]。
from scipy.stats import pearsonr
X = [1, 3, 5, 7, 9]
Y = [9, 8, 6, 4, 2]
corr, _ = pearsonr(X, Y)
智能推荐系统的构建步骤
1. 数据准备
首先,需要收集用户对物品的评分数据以及物品的相关信息。
2. 数据分析
对收集的数据进行预处理,如去除缺失值、计算每部电影的评分均值和评分次数。
3. 相似度计算
使用上述相似度计算方法,计算物品之间的相似度。
4. 智能推荐
根据计算得到的相似度,为用户推荐与其历史偏好相似的物品。
代码实现
以下是构建智能推荐系统的示例代码:
import pandas as pd
# 读取数据
movies = pd.read_excel('movies.xlsx')
scores = pd.read_excel('scores.xlsx')
# 合并数据
df = pd.merge(movies, scores, on='MovieId')
# 计算每部电影的评分均值和评分次数
ratings_mean = df.groupby('Title')['Score'].mean().reset_index()
ratings_mean['RatingCount'] = df.groupby('Title')['Score'].count().reset_index()
# 创建透视表
pivot_table = df.pivot_table(index='UserId', columns='Title', values='Score')
# 以特定电影为例进行推荐
target_movie = 'Forrest Gump (1994)'
FG_scores = pivot_table[target_movie]
# 计算与目标电影的相关系数
similarity_scores = pivot_table.corrwith(FG_scores)
# 筛选高评分次数的电影并排序
recommendations = similarity_scores.merge(
ratings_mean,
left_index=True,
right_on='Title',
suffixes=('', '_merge')
).sort_values(by='RatingCount', ascending=False).head(10)
智能推荐系统通过分析用户行为和偏好,为用户提供个性化的内容推荐,有效提升用户体验和平台收益。本文简单介绍了协同过滤算法的原理、相似度计算方法,并结合代码示例,展示了如何构建一个基于物品的智能推荐系统。随着技术的不断进步,推荐系统将变得更加智能和精准,为用户带来更加丰富的个性化体验。
标签:协同,df,推荐,用户,算法,过滤,相似,scores,物品 From: https://www.cnblogs.com/xiaoyu-w/p/18263364