CREATE TABLE bprmf_model
as
WITH t as (
select
bpr_sampling(userid, pos_items, "-sampling_rate 5.0")
as (userid, pos_item, neg_item)
from
ranking_train
)
select
train_bprmf(userid, pos_item, neg_item, "-iterations 50")
from
t
;
WITH input as (
select
t1.userid,
t2.itemids as excludeItems
FROM
ranking_test t1
LEFT OUTER JOIN ranking_train t2 ON (t1.userid = t2.userid)
),
test as (
select
t1.userid,
t3.itemid
from
input t1
LATERAL VIEW populate_not_in(t1.excludeItems, 3952) t3 as itemid
),
predict as (
select
t2.userid, t2.itemid,
bprmf_predict(t2.Pu, p2.Qi, p2.Bi) as score
from (
select
t1.userid, t1.itemid, p1.Pu
from
test t1 LEFT OUTER JOIN bprmf_model p1
ON (t1.userid = p1.idx)
) t2
LEFT OUTER JOIN bprmf_model p2
ON (t2.itemid = p2.idx)
),
recommend as (
select
each_top_k(10, userid, score, userid, itemid)
as (rank, score, userid, itemid)
from
predict
)
select
userid,
map_values(to_ordered_map(score, itemid, true)) as rec_items
from
recommend
group by
userid
;
Last active
April 25, 2016 09:04
-
-
Save myui/8ce8c6280bdf122128e5cfe795cab550 to your computer and use it in GitHub Desktop.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment