bi-graph with Map-Reduce implementation

本文介绍了一种结合用户行为评分与时间因素的协同过滤推荐算法。该算法通过计算用户之间的相似度,并引入时间衰减函数来衡量不同时间段内评分的相关性,从而提高推荐系统的准确性和时效性。

instance: (u,i,rui,tui)(u, i, r_{ui}, t_{ui})(u,i,rui,tui)
describes user uuu applies item iii on time tuit_{ui}tui with score ruir_{ui}rui.

formular:
Sij=1kjλ∑uruirujkuρg(tui,tuj)g(t1,t2)=exp⁡[−(t1−t2)22τ2] S_{ij} = \frac 1 {k_j^\lambda} \sum_u \frac {r_{ui} r_{uj}} {k_u^\rho} g(t_{ui}, t_{uj}) \\ g(t_1, t_2) = \exp[ - \frac {(t_1 - t_2)^2} {2\tau^2}]Sij=kjλ1ukuρruirujg(tui,tuj)g(t1,t2)=exp[2τ2(t1t2)2]

parameters: λ,ρ,τ\lambda, \rho, \tauλ,ρ,τ

source data:
(u,p,r,t)(u, p, r, t)(u,p,r,t)

  1. MAP:
    p:(u,r,t) p: (u,r,t)p:(u,r,t)
    REDUCE:
    p:[(u,r,t),(),...] p: [(u,r,t), (), ...]p:[(u,r,t),(),...]
    calc: kp=(∑r)λk_p = (\sum r)^\lambdakp=(r)λ,
    u:(p,r,t,kp) u:(p,r,t, k_p)u:(p,r,t,kp)
  2. REDUCE:
    u:[(p,r,t,kp),(),...]u: [(p,r,t, k_p), (), ...]u:[(p,r,t,kp),(),...]
  3. Map
    calc: ku=(∑r)ρk_u = (\sum r)^\rhoku=(r)ρ,
    p0:{(pi,si),⋯ ,}p_0: \{(p_i, s_i), \cdots,\}p0:{(pi,si),,}
    with : si→r0rikukpig(t0−ti)s_i \to \frac {r_0r_i} {k_u k_{pi} }g(t_0 - t_i)sikukpir0rig(t0ti)

Reduce:
p0:[(pi,si),(),...]p_0: [(p_i,s_i), (), ...]p0:[(pi,si),(),...]
with: si→∑j=isjs_i \to \sum_{j = i} s_jsij=isj

Note

map(3)可合并到Reduce(2)中,但会极大增加2结果文件的大小,且会略微增加总耗时
时间对比:

#合并前
job1 time: 115s    1.9m
job2 time: 110s    1.83m
job3 time: 4551s   75.8m
total time: 4776s  79.6m

# 合并后
job1 time: 110s    1.83m
job2 time: 1217s   20.3m
job3 time: 3656s   60.9m
total time: 4983s  83m 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值