1、数据导入mongodb
DataLoader
product和rating表,通过spark加载进来数据(RDD格式)转化为DataFrame格式存入MongoDB中
2、统计推荐模块
StatisticsRecommender
1、加载Rating表,通过spark sql 做不同的统计
2、历史热门商品,按照评分个数统计,存储到RateMoreProducts表中
3、近期热门商品,通过商品时间戳排序,对最近2个月的商品进行评价数统计,存储到RateMoreRecentlyProducts表中
4、优质商品推荐,计算所有商品的平均评分,进行排序,存储到AverageProducts表中
3、基于LFM(隐语义模型)的离线推荐模块
OfflineRecommender
1、加载Rating表[userId,productId,score]
2、取出用户数据和商品数据,userId,productId
3、通过ALS训练
4、获得预测评分矩阵,得到用户的推荐列表
5、从预测评分矩阵中提取得到用户推荐列表
6、利用商品的特征向量,计算商品的相似度列表
7、两两配对商品,计算余弦相似度
8、存储两两商品的余弦相似度,存储为ProductRec表
ALS模型评估与参数选择
- 这里就是写了一个模型主体部分,简简单的模型概念