广场信息流排序

作者: 求愚 | 来源:发表于2018-03-15 15:24 被阅读126次

    目标

    将广场信息流中的优质内容推送到顶部

    所有数据

    • 评论
    • 是否配图
    • 后台推荐标识
    • 时间戳(s):(发帖时 - 2018-03-15-00-00-00)/ 1000

    排序逻辑:

    • 新内容要往前排
    • 赞多的往前排
    • 评论多的往前排
    • 有配图的初始权重高
    • 有推荐标识的置顶
    • 官方贴优先置顶

    数据的权重(权重后期可调)

    • 推荐:置顶(最多3个)
    • 有配图:10
    • 赞:2
    • 评论:5
    • 时间戳:/ 100

    公式

    平滑一下赞和评论的影响(当赞和评论数量多时)
    LOG10((zan * 2 + com * 5 + 1)) + pic * num + timestamp / 100

    测试结果

    输了20个WB广场最新数据,从上至下,(截屏,假设每个贴间隔3s),Excel跑一下:


    image.png

    基本符合预期,数据量比较小,误差会比较大。数据多一点,时间延长几天,再测试下。怎么实现比较简单?(赖力,能不能用后台跑下测试服卧底的样式)

    测试

    排序写好后,用测试服测试一下排序的效果,大家都发一下各种形式的内容,基于内容视觉,再多修改几次权重

    上线后权重优化

    优化标准:广场页平均每个用户停留时间
    设置几组不同的参数,判断哪一组参数用户的停留时间更长

    其他

    记录一下用户的点赞数,后期可以给用户相应标签,激励其多发高质量内容

    修改

    用户刚发的时候,客户端置顶,刷新的时候再排序
    服务器每10分钟刷新排序一次

    排序小颗粒度:1h,评论点赞优先,之后时间权重增加
    排序大颗粒度:1天,时间权重增加更快

    time = 当前时间 - 发帖时间

    横向优先显示点赞和评论多的帖子,纵向弱化时间的权重

    发布后1h:
    lg(zan * 2 + com * 1 + 1) + 36 + pic(0 || 1) * 18 + 100 / (time + 10) + 100

    发布后1天:更更减弱权重
    lg(zan * 2 + com * 1 + 1) + 36 + pic(0 || 1) * 18 + 100 / (time + 10)

    参考

    1. Delicious
      它按照"过去60分钟内被收藏的次数"进行排名。每过60分钟,就统计一次
    2. Hacker news
      Score = (P-1)/(T+2)^G
    3. Reddit
      Score = log10(Z) + yt/45000
    4. Stackoverflow
      [log10(Qviews)4 + (QanswersQscore)/5 + sum(Ascores)] / [(Qage+1)-(Qage-Qupdated)/2]^1.5
    5. Reddit
      二项分布,威尔逊区间
    6. IMDB
      贝叶斯平均
      WR = (v/v+m)R + (m/m+c)C

    最终

    T单位为小时:
    Score = log[(Z*2 + C)] + P)/(T+2)^G

    Excel 数据

    相关文章

      网友评论

        本文标题:广场信息流排序

        本文链接:https://www.haomeiwen.com/subject/kqgcqftx.html