计算用户之间的相似度是基于用户的协同过滤算法的核心。常用的相似度计算方法有余弦相似度、皮尔逊相似度等。而本系统使用余弦相似度,计算公式如4-1以及实现代码如图4-2下: (4-1) 其中,$r_{ik}$表示用户$i$对物品$k$的评分,$n$表示物品数量。
时间: 2024-02-15 15:03:55 浏览: 118
是的,您说得非常正确。协同过滤算法是推荐系统中非常常用的一种算法,其中计算用户之间的相似度是其核心之一。余弦相似度是一种常见的相似度计算方法,其计算公式如下:
$$
similarity(i,j) = \frac{\sum_{k=1}^{n} r_{ik} \cdot r_{jk}}{\sqrt{\sum_{k=1}^{n} r_{ik}^2} \cdot \sqrt{\sum_{k=1}^{n} r_{jk}^2}}
$$
其中,$r_{ik}$表示用户$i$对物品$k$的评分,$n$表示物品数量。下面是一个使用余弦相似度计算用户相似度的代码示例:
```python
import numpy as np
# 用户评分矩阵
user_ratings = np.array([
[5, 3, 0, 1],
[4, 0, 4, 4],
[1, 1, 0, 5],
[0, 3, 4, 0],
[5, 5, 4, 1]
])
# 计算用户之间的相似度
def cosine_similarity(user1, user2):
numerator = np.dot(user1, user2)
denominator = np.linalg.norm(user1) * np.linalg.norm(user2)
return numerator / denominator if denominator != 0 else 0
# 计算所有用户之间的相似度
for i in range(user_ratings.shape[0]):
for j in range(i+1, user_ratings.shape[0]):
similarity = cosine_similarity(user_ratings[i], user_ratings[j])
print(f"用户{i+1}和用户{j+1}之间的相似度为:{similarity:.2f}")
```
在这个代码中,我们首先定义了一个用户评分矩阵,行代表用户,列代表物品。接着,我们定义了一个余弦相似度的函数`cosine_similarity`,然后计算所有用户之间的相似度并输出。
阅读全文