Apple开源机器学习框架Turi Create简化了自定义机器学习模型的开发。可以轻易地实现图像识别、聚类分析与推荐系统等多种机器学习需求。本文介绍了使用Turicreate快速构建电影推荐系统的一个实例。
记得当初我参加18年泰迪杯时,为了实现推荐系统竟手写了800行代码。但现在看来,利用TuriCreate,基于物品的协同过滤模型(item-based CF)可以在三行代码内轻易完成。
注:本文数据集使用movieLens 1M。
Step 0. 导入数据:
import os
import pandas as pd
os.chdir('/Users/zhbink/Desktop/ml-100k/')
data_cols = ['user_id','movie_id','rating','timestamp']
ratings = pd.read_csv('u.data', sep='\t', names=data_cols, encoding='latin-1')
这里user_id
是每一个参与对电影进行评分的用户编号,movie_id
是该用户评价的电影编号,rating
是该用户对该电影的打分。
Step 1. 使用Turicreate构建推荐系统
要构建一个协同过滤模型,大体上可以分成3步:
- 将数据切分为训练集与测试集。
- 构建协同过滤模型并得到训练集的推荐结果。
- 将推荐结果与测试集相对比进行打分。
使用Turicreate,使以上三步均可仅由一行代码完成。
1. 划分训练集与测试集
对于本数据集,人工划分训练集与测试集是有难度的。因为不可以对总体进行随机划分(不然可能造成某一用户数据全部在训练集或全部在测试集中的情况),而应对于每一个用户进行划分。
利用turicreate.recommender.util.random_split_by_user
可以做到轻易地做到这一点。
import turicreate as tc
train_data = tc.SFrame(ratings) # 数据需要转化为SFrame格式
train, test = tc.recommender.util<