ML之KG:基于自定义电影矩阵+知识图谱矩阵数据集利用基于知识图谱的推荐算法(基于匹配的相似度的方法)实现对用户进行Top电影推荐案例

ML之KG:基于自定义电影矩阵+知识图谱矩阵数据集利用基于知识图谱的推荐算法(基于匹配的相似度的方法)实现对用户进行Top电影推荐案例

目录

基于自定义电影矩阵+知识图谱矩阵数据集利用基于知识图谱的推荐算法(基于匹配的相似度的方法)实现对用户进行Top电影推荐案例

设计思路

1、数据准备

2、数据预处理

3. 推荐算法实现

# 1、定义数据集

# 电影-特征矩阵

扫描二维码关注公众号,回复: 14589657 查看本文章

# 电影-电影矩阵

# 用户历史行为

# 3、模型训练与推理

# 3.1、找出用户喜欢的电影和与之相关的电影

找出与用户喜欢的电影相关的电影

# 3.2、计算相关电影与用户历史行为中未观看的电影之间的相似度

# 3.3、根据相似度为用户推荐未观看电影


基于自定义电影矩阵+知识图谱矩阵数据集利用基于知识图谱的推荐算法(基于匹配的相似度的方法)实现对用户进行Top电影推荐案例

设计思路

1、数据准备

首先,我们需要准备电影数据集和知识图谱数据集。
>> 电影数据集:包含电影的基本信息,如电影名称、导演、演员、类型、评分等等。我们可以从IMDB(互联网电影数据库)或者豆瓣电影等网站上爬取电影数据集。
>> 知识图谱数据集:包含电影之间的关系,如同一导演、同一演员、同一类型等等。我们可以使用OpenKG(开放知识图谱)等知识图谱构建工具来构建知识图谱数据集。

2、数据预处理

我们需要将电影数据集和知识图谱数据集进行预处理,将它们转化为适合推荐算法使用的格式。
>> 对于电影数据集:我们可以将其转化为一个电影-特征矩阵,其中每一行代表一个电影,每一列代表一个特征(如导演、演员、类型等),矩阵中的每一个元素代表该电影在该特征上的取值。
>> 对于知识图谱数据集:我们可以将其转化为一个电影-电影矩阵,其中每一行代表一个电影,每一列代表另一个电影,矩阵中的每一个元素代表两个电影之间的关系强度。

3. 推荐算法实现

我们可以使用基于知识图谱的推荐算法来实现电影推荐。该算法主要分为以下几个步骤:
(1)、找喜欢电影:根据用户的历史行为,如观看记录、评分记录等,找出用户喜欢的电影。
(2)、找相关电影:根据用户喜欢的电影,找出与之相关的电影,如同一导演、同一演员、同一类型等。
(3)、计算相似度:计算这些相关电影与用户历史行为中未观看的电影之间的相似度。
(4)、根据相似度,为用户推荐与其喜欢的电影相关的未观看电影。

# 1、定义数据集

使用电影-特征矩阵、电影-电影矩阵来表示电影数据集和知识图谱数据集

# 电影-特征矩阵

# 电影-电影矩阵

# 用户历史行为


import numpy as np

# ML之KG:基于自定义电影矩阵+知识图谱矩阵数据集利用基于知识图谱的推荐算法(基于匹配的相似度的方法)实现对用户进行Top电影推荐案例
# 1、定义数据集:使用电影-特征矩阵、电影-电影矩阵来表示电影数据集和知识图谱数据集
# 电影-特征矩阵
movie_features = np.array([
    [1, 0, 0, 1, 0, 1],
    [0, 1, 1, 0, 0, 1],
    [1, 0, 0, 0, 1, 1],
    [0, 1, 1, 1, 0, 0],
    [0, 1, 0, 0, 1, 1],
    [1, 0, 1, 1, 0, 0],
])

# 电影-电影矩阵
movie_similarity = np.array([
    [1, 0.5, 0.2, 0.3, 0.4, 0.6],
    [0.5, 1, 0.3, 0.2, 0.4, 0.5],
    [0.2, 0.3, 1, 0.4, 0.5, 0.2],
    [0.3, 0.2, 0.4, 1, 0.3, 0.1],
    [0.4, 0.4, 0.5, 0.3, 1, 0.4],
    [0.6, 0.5, 0.2, 0.1, 0.4, 1],
])

# 用户历史行为
user_behavior = np.array([1, 0, 0, 1, 0, 0])


# 3、模型训练与推理

# 3.1、找出用户喜欢的电影和与之相关的电影

找出与用户喜欢的电影相关的电影

liked_movies 
 [0 3]
related_movies 
 [0 1 2 3 4 5]

# 3.2、计算相关电影与用户历史行为中未观看的电影之间的相似度

similarity 
 [0.7 0.6 0.7 0.7]

# 3.3、根据相似度为用户推荐未观看电影

recommend_movies 
 [5 4 1 2]

# 3、模型训练与推理
# 3.1、找出用户喜欢的电影和与之相关的电影
liked_movies = np.where(user_behavior == 1)[0]
print('liked_movies \n',liked_movies)

# 找出与用户喜欢的电影相关的电影
related_movies = np.zeros((len(movie_features),))
for movie in liked_movies:
    related_movies += movie_similarity[movie]
related_movies = np.where(related_movies > 0)[0]
print('related_movies \n',related_movies)

# 3.2、计算相关电影与用户历史行为中未观看的电影之间的相似度
not_watched_movies = np.where(user_behavior == 0)[0]
similarity = np.zeros((len(not_watched_movies),))
for i, movie in enumerate(not_watched_movies):
    for j in related_movies:
        similarity[i] += movie_similarity[movie][j] * user_behavior[j]
print('similarity \n',similarity)

# 3.4、根据相似度为用户推荐未观看电影
recommend_movies = not_watched_movies[np.argsort(similarity)[::-1]]
print('recommend_movies \n',recommend_movies)

猜你喜欢

转载自blog.csdn.net/qq_41185868/article/details/129828108