Alexi

一个产品经理的成长之路

基于用户行为的社区推荐算法

一、适用场景

1)用户的推荐动态阅读
2)用户的推荐关注用户
3)用户的推荐发帖板块

二、实例

1)用户行为与权重(待定)

1.点击——1 分(仅点击没有其他行为)
2.点赞——2 分
3.评论——4 分
4.关注——3 分
5.分享——5 分

2)对象条件定义(待定)

动态:直接评论数在 10 以上或点赞数在5 以上
关注用户:粉丝数在 20 以上,且连续 5 日有新增动态
推荐板块:发帖数在 500 以上,且连续 5 日有新增动态

3)算法样本(随便订的)

1.日内每30名用户对随机 5 条对象的数据统计为样本

4)如下用户、对象(动态、关注用户、推荐板块)、行为、权重

用户:A、B、C、D、E、F
对象:1、2、3、4、5、6
行为:点击(1)、点赞(2)、评论(4)、关注(3)、分享(5)

5)用户行为列表(假设)

用户 对象 行为
A 2 评论
A 5 分享
A 3 关注
B 1 点赞
B 6 点赞
C 4 关注
C 2 点击
C 2 分享
C 3 关注
D 1 点赞
D 4 分享
D 6 点击
E 1 点击
E 2 点击
F 5 分享
F 2 关注
F 4 评论

6)算法步骤
6.1)根据用户行为计算对象与用户的评分矩阵

1 2 3 4 5 6
A 0 4 3 0 5 0
B 2 0 0 0 0 2
C 0 5 3 3 0 0
D 2 0 0 5 0 1
E 1 1 0 0 0 0
F 0 3 0 4 5 0

6.2)根据评分矩阵计算用户的相似度矩阵

1 2 3 4 5 6
A 0 4 3 0 5 0
B 2 0 0 0 0 2
C 0 5 3 3 0 0
D 2 0 0 5 0 1
E 1 1 0 0 0 0
F 0 3 0 4 5 0
A 0 4 3 0 5 0
B 2 0 0 0 0 2

Cos<A.A> cos<A,B> cos<A,C>…
Cos<B,A> cos<B,B>…
Cos<C,A>…
.
.
得到

A B C D E F
A 1.00 0.00 0.63 0.00 0.40 0.74
B 0.00 1.00 0.00 0.26 0.50 0.00
C 0.63 0.00 1.00 0.42 0.54 0.58
D 0.00 0.26 0.42 1.00 0.26 0.52
E 0.40 0.50 0.54 0.26 1.00 0.30
F 0.74 0.00 0.58 0.52 0.30 1.00

6.3)相似度矩阵乘以评分矩阵,得到推荐列表

1 2 3 4 5 6
A 0 4 3 0 5 0
B 2 0 0 0 0 2
C 0 5 3 3 0 0
D 2 0 0 5 0 1
E 1 1 0 0 0 0
F 0 3 0 4 5 0

X

A B C D E F
A 1.00 0.00 0.63 0.00 0.40 0.74
B 0.00 1.00 0.00 0.26 0.50 0.00
C 0.63 0.00 1.00 0.42 0.54 0.58
D 0.00 0.26 0.42 1.00 0.26 0.52
E 0.40 0.50 0.54 0.26 1.00 0.30
F 0.74 0.00 0.58 0.52 0.30 1.00

得到“ 推荐列表

1 2 3 4 5 6
A 3.89 6.5 5.7 3.6 8.62 3.24
B 3.48 0 2.42 1.04 1.4 3.48
C 1.89 5.78 4.26 5.56 4.9 3.3
D 2.74 1.3 3.94 5.52 2.4 5.08
E 1 1 0.63 0.26 0.9 0.74
F 2 6.54 4.38 6.08 7.54 3.58

6.4)对已经产生分数的对象进行置 0 操作,得到最终的推荐对象表

1 2 3 4 5 6
A 3.89 0 0 3.6 0 3.24
B 0 0 2.42 1.04 1.4 0
C 1.89 0 0 0 4.9 3.3
D 0 1.3 3.94 0 2.4 0
E 0 0 0.63 0.26 0.9 0.74
F 2 0 4.38 0 0 3.58

(也就是用户对一个对象有了行为之后,该对象将在推荐内容之外)

打赏

发表评论:

Powered By Z-BlogPHP 1.5.2 Zero

粤ICP备17065422号