基于用户SparkALS推荐系统

该博客介绍了如何基于用户使用SparkALS构建推荐系统。数据来源于数仓平台的多个表,如shopcar、collect和browse等,通过设定不同行为的评分规则(如浏览、收藏、加购物车等)来计算用户评分。核心算法包括欧式距离计算和SparkALS训练,提供了项目代码链接供下载学习。
摘要由CSDN通过智能技术生成

①基于用户SparkALS数据源
    数据源来自数仓平台,shopcar表记录登录用户购物车及商品信息;collect表记录登录用户收藏记录,收藏类型(1商品 2品牌);browse表记录登录用户浏览记录,收藏类型(1 商品 2品牌);订单状态来自主订单表和产品纬度表;浏览和深度浏览来自hbase的growingio_custom_event表

    制定用户评分打分规则
        浏览           1分
        深度浏览    2分(浏览时间超过30s)
        浏览次数    1分(超过2次2分)
        收藏           2分
        加购物车    3分
        下单           4分
        支付           5分
    
    浏览,深度浏览和浏览次数的权重为0.7;收藏,加购物车,下单和支付的权重是0.3。

    核心代码如下:

-- 商品详情页面停留时间打分表,数据来源是hbase,此处作映射表拿到数据
INSERT OVERWRITE TABLE bi_dw.growingio_custom_event_staytime
SELECT
    t.product_id,
    t.loginuserid,
    t.stay_time,
    CASE WHEN t.stay_time is NULL THEN 0
         WHEN t.stay_time=0 THEN 0
         WHEN t.stay_time>0 AND t.stay_time<30 THEN 1
    ELSE 3
    END AS rating
FROM
(SELECT
    t.product_id,
    t.loginuserid,
    CASE WHEN stay_time1 is NULL OR stay_time1='' THEN stay_time2
    ELSE stay_time1
    END stay_time
FROM
(SELECT
    regexp_extract(regexp_extract(t.c11,'(\\"+[0-9]+\\")',0),'([0-9]+)',0)    AS product_id,
    regexp_extract(t.c12,'([0-9]+)',0)    AS loginuserid,
    regexp_extract(regexp_extract(t.c11,'\\"+stay_time+\\"+(\\:+\\"+[0-9]+\\")',0),'([0-9]+)',0)    AS stay_time1,
    regexp_extract(regexp_extract(t.c11,'\\"+stay_time+\\"+(\\:+[0-9]+\\.+[0-9]+)',0),'([0-9]+\\.+[0-9])',0)    AS stay_time2
FROM bi_dw.growingio_custom_event t WHERE t.c9='ProductDetailUserStayTime')t
)t
;

-- 用户评分表
set hive.exec.parallel=true;
INSERT OVERWRITE TABLE bi_ads.user_rating
SELECT 
    t.userid        AS  user_id,        -- 用户id
    t.objectid      AS  product_id,     -- 商品id
    ((t.rating1 + t.rating2)/2*0.7 + (t.rating3 + t.rating4 + t.rating5)/3*0.3)	AS rating,      -- 总评分,0.7和0.3是权重
    t.time                              -- 时间
FROM
(SELECT
    t1.userid,
    t1.objectid,
    t1.addtime      AS  time,
    t1.rating       AS  rating1,        -- 浏览次数评分
    t1.view_num,
    t2.stay_time,
    t3.product_id   AS collction,
    t6.add_shopcar_num,
    CASE WHEN t2.rating is NULL THEN 0
    ELSE t2.rating   
    END             AS  rating2,        -- 商品详情页面停留时长即浏览时间评分
    CASE WHEN t3.rating is NULL THEN 0
    ELSE t3.rating	 
    END             AS  rating3,        -- 收藏评分
    CASE WHEN t6.rating4 is NULL THEN 0
    ELSE t6.rating4		
    END             AS  rating4,        -- 加入购物车评分
    CASE WHEN t8.rating is NULL THEN 0
    ELSE t8.rating
    END				AS  rating5         -- 订单状态评分
FROM bi_
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值