ビッグデータeコマースレコメンデーションシステム

#大数データ之電気商推荐系にする#

プロジェクトシステムアーキテクチャ

ここに画像の説明を挿入します
ここに画像の説明を挿入します

データ照合

  1. 商品データ
商品ID 商品名 商品の種類 商品画像のURL 商品ラベル
製品番号 名前 カテゴリ imageUrl タグ
  1. スコアリングデータ
ユーザーID 商品ID 商品評価 採点時間
uid 製品番号 スコア タイムスタンプ

テーブル構造設計

ここに画像の説明を挿入します

オフライン統計分析

  1. 過去の人気商品の推奨-最も歴史的な評価のある商品

     SQL:
     select product_id, count(product_id) as count from ratings group by product_id order by count desc
     存储表:rate_more_product
     字段:product_id rate_count
    
  2. 最近人気のある製品—過去1か月間にユーザーによってより頻繁に評価された製品を数えます

     原则: 先创建一个UDF 将评分时间转换为yyyyMM形式的
     SimpleDateFormat 时间格式化
     然后对时间进行分组统计
     存储表:rate_more_recently_product
     字段:product_id rate_count yearmonth
    
  3. 商品平均評価統計

     select product_id,avg(score) as avg_score from ratings group by product_idorder by avg_score desc
     存储表:rate_avg_product
     字段: product_id avg_score
    

オフラインのパーソナライズされた推奨ALS

1. 使用ALS模型对评分数据进行训练
val model = ALS.train(data, rank, iterations, lambda)		
搞出最优模型
2. 用户userRDD 与 商品productRDD 做笛卡尔积 求出 userId,productId的RDD
3. model.predict() 预测出一个评分矩阵
4. 以userId  groupByKey 以 score 排序后 取TopN
注: 此处附加求出 商品的相似度矩阵
  1. model.productFeatures 求出商品的特征向量矩阵
  2. 笛卡儿积求出II矩阵 求余玄相似度
  3. 过滤出相似度大于0.6的 进行groupByKey

リアルタイムの推奨事項

特点:
	1. 计算速度快
	2. 预测结果可以不是特别精确
	3. 预先算出商品相似度,有预先准备好的预测模型
原理:
	1. 用户最近一段时间的口味应该是相似的
误区:
	1. 评分了一个物品 即做相似推荐 --- 单个物品不能反映该用户的喜好
	2. 做了差评 --- 推荐毫无意义
正确姿势:
	拿出最近一段时间的用户评分数据 综合考虑评分分值和相似度

アルゴリズム設計:

ここに画像の説明を挿入します

举例:用户最近的K次评分数据为
ユーザーID 商品ID スコア
u1 A 5
u1 B 4
u1 C 4
u1 D 2
对于商品X的推荐优先级得分公式:
	最终得分 = (sim(X,A) * 5 + sim(X,B) * 4 + sim(X,C) * 4 + sim(X,D) * 2) / 4 + lgmax{incount,1} - lgmax{recount,1}
	其中,incount为K次评分中大于3分的次数
		 recount为K次评分中小于3分的次数
	注:此处即为 高分多 加奖励 低分多 做惩罚

ここに画像の説明を挿入します

他の形式のオフライン推奨

1. 内容推荐 TF-IDF
	商品Tags 分词得到特征向量 进行相似度 求解
	注: 喜欢了该物品的用户 应该也喜欢 下面这些
		您有可能也喜欢下面这些物品
	注: 一般在 商品详情页 商品购买页 做推荐
2. 被相似的人喜欢的物品推荐
	即 喜欢的人重合度越高 相似度越高
	“同现相似度” 
		同时购买了 两个物品的 的人 的个数
		除以
		购买两个物品的总人数的

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/q18729096963/article/details/104407616
おすすめ