B站直播
-
推荐教材:《深度学习推荐系统》
-
学习偏向落地的推荐系统(推荐系统的组成 & 工具)
任务1:推荐系统基础
1. 推荐系统与常见的结构化问题的区别是什么?
不同于常见结构化问题,推荐系统是根据海量数据,按照特定框架,从待推荐品中经过多层逻辑筛选出最终推荐品给用户. 这其中蕴含许多不确定性,主要区别可分为以下几个方面:
-
涉及数据较多,原始数据可大概分为用户数据和内容数据两类,详细来看其涉及面更广泛,而结构化问题通常为一行一个样本,仅针对样本特征与其label间的复杂关系;
-
评估较复杂,结构化问题通常是一个指定的样本理论上确定最优解,但推荐系统只能尽量择优;
-
链路复杂,召回、过滤、粗排、精排、强规则,从候选集到得到最终推荐结果,推荐链路较长较复杂;
2. 如何评价推荐系统「推荐」的准不准?
推荐系统评估指标可大概分为硬指标和软指标两类,硬指标指的是一些用户层面的数据,如点击率、用户停留时长、用户付费金额、用户留存率等,软指标指的是内用层面的数据,如推荐覆盖度、基尼指数等,此外,还有其他评价指标,如用户满意度、推荐内容多样性、实时性、稳健性等.
3. 推荐系统一般分为召回 & 排序,为什么这样划分?
不同于其他问题,推荐系统是连接用户和内容的桥梁,如果直接排序后推荐,则需要计算每个用户对每个内容的喜好程度,计算量过大. 另一方面,绝大多数用户只对十分少的内容感兴趣,而计算用户对所有内容的喜好度也就浪费了很大的计算量. 通过在链路中添加召回,可以在排序前先对内容进行选择,将每个用户待筛选推荐池显著减小,这样可以保证推荐质量的同时降低计算量.
任务2:Movienles介绍
-
下载并读取Movielens 1M数据集(用户、电影、评分)
下载链接:MovieLens 1M Dataset | GroupLens
-
统计如下指标:
-
总共包含多少用户?
-
总共包含多个电影?
-
平均每个用户对多少个电影进行了评分?
-
每部电影 & 每个用户的平均评分是?
-
import matplotlib.pyplot as plt
import pandas as pd
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.rcParams['axes.unicode_minus'] = False
def getRatings(file_path):
rates = pd.read_csv(
file_path,
header = None,
sep = '::',
names = ['userID', 'movieID', 'rate', 'timestamp'],
engine='python',
)
print('=' * 100)
print(rates.head())
print('=' * 100)
print('样本容量:{}, 用户数:{}, 电影数:{}'.format(
rates['userID'].count(),
rates['userID'].groupby(rates['userID']).count().count(),
rates['movieID'].groupby(rates['movieID']).count().count(),
))
print('=' * 100)
print('每个用户平均对{}个电影进行评分'.format(round(rates['userID'].groupby(rates['userID']).count().mean(),3)))
print('=' * 100)
print('每个电影平均分:\n{}'.format(rates['rate'].groupby(rates['movieID']).mean()))
print('=' * 100)
print('每个用户平均分:\n{}'.format(rates['rate'].groupby(rates['userID']).mean()))
print('=' * 100)
return
if __name__ == '__main__':
getRatings('ml-1m/ratings.dat')
############################################## 输出结果##############################################
====================================================================================================
userID movieID rate timestamp
0 1 1193 5 978300760
1 1 661 3 978302109
2 1 914 3 978301968
3 1 3408 4 978300275
4 1 2355 5 978824291
====================================================================================================
样本容量:1000209, 用户数:6040, 电影数:3706
====================================================================================================
每个用户平均对165.598个电影进行评分
====================================================================================================
每个电影平均分:
movieID
1 4.146846
2 3.201141
3 3.016736
4 2.729412
5 3.006757
...
3948 3.635731
3949 4.115132
3950 3.666667
3951 3.900000
3952 3.780928
Name: rate, Length: 3706, dtype: float64
====================================================================================================
每个用户平均分:
userID
1 4.188679
2 3.713178
3 3.901961
4 4.190476
5 3.146465
...
6036 3.302928
6037 3.717822
6038 3.800000
6039 3.878049
6040 3.577713
Name: rate, Length: 6040, dtype: float64
============================