【Tensorflow 2.12 电影推荐系统之排序模型】

Tensorflow 2.12 电影推荐系统之排序模型

  • 学习笔记
    • 导入相关模块
    • 准备数据
      • 加载数据
      • 数据预处理
      • 获取词汇表
    • 构建模型
      • 定义评分排序模型
      • 定义损失函数以及模型评估指标
      • 定义完整的评分排序模型
    • 训练和评估
      • 创建排序模型实例
      • 缓存数据
      • 训练
      • 评估
    • 预测
    • 导出和加载模型
  • 结尾

学习笔记

Tensorflow 2.12 智能电影推荐系统搭建学习笔记~

Tensorflow是谷歌开源的机器学习框架,可以帮助我们轻松地构建和部署机器学习模型。这里记录学习使用tensorflow-recommenders来构建一个电影推荐排序模型。
版本:python3.1.0、tensorflow2.12.0~

导入相关模块

# 导入os模块,主要提供系统相关的函数,如文件操作等,这里主要用于保存模型
import os
# pretty print,适合打印复杂的数据结构对象
import pprint
# 用于创建临时文件和目录
import tempfile
# 字典以及文本处理模块
from typing import Dict, Text
# 一个用于进行科学计算的Python库,它提供了高性能的多维数组对象(ndarray)以及用于处理这些数组的各种函数和工具
import numpy as np
# 导入TensorFlow
import tensorflow as tf
import tensorflow_recommenders as tfrs
# TensorFlow示例数据加载模块
import tensorflow_datasets as tfds

准备数据

加载数据

Movielens数据集是明尼苏达大学的GroupLens研究小组的经典数据集。它包含了一组用户对电影的评分,是推荐系统研究的重要数据集。

# 加载用户观看电影评分数据集(评分可以认为是显示反馈,通过评分可以知道用户对电影的喜爱程度,从而进行有效的推荐)
ratings = tfds.load("movielens/100k-ratings", split="train")

数据预处理

# 去掉没用到的特征,保留用户ID,观看的电影标题以及用户对该电影的评分
# 数据:{'bucketized_user_age': 45.0,'movie_genres': array([7], dtype=int64),'movie_id': b'357','movie_title': b"One Flew Over the Cuckoo's Nest (1975)",'raw_user_age': 46.0,'timestamp': 879024327,'user_gender': True,'user_id': b'138','user_occupation_label': 4,'user_occupation_text': b'doctor','user_rating': 4.0,'user_zip_code': b'53211'}
ratings = ratings.map(lambda x: {
   
    "movie_title": x["movie_title"],
    "user_id": x["user_id"],
    "user_rating": x["user_rating"]
})
# 设置随机数种子
tf.random.set_seed(42)
# 打乱数据
shuffled = ratings.shuffle(100_000, seed=42, reshuffle_each_iteration=False)
# 切分训练数据以及测试数据
train = shuffled.take(80_000)
test = shuffled.skip(80_000).take(20_000)

获取词汇表

获取用户Id以及电影标题的词汇表,后续以词汇表将原始特征值映射到连续范围内的整数,方便训练时在嵌入表中查找相应的嵌入向量。

# 获取数据集中的电影标题
movie_titles = ratings.batch(1_000_000).map(lambda x: x["movie_title"])
# 获取数据集中的用户ID
user_ids = ratings.batch(1_000_000).map(lambda x: x["user_id"])<

你可能感兴趣的:(深度学习,人工智能,tensorflow2,深度学习,python,推荐算法,机器学习,神经网络)