V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
hustlzp
V2EX  ›  程序员

求助:(1)如何计算用户活跃度?(2)在将活跃度作为排序的权重因子时,如何将其进行归一化,以方便与其他的权重因子进行按比例整合?(3)何时进行用户排序?

  •  2
     
  •   hustlzp ·
    hustlzp · 2014-05-10 10:42:05 +08:00 · 4762 次点击
    这是一个创建于 3882 天前的主题,其中的信息可能已经有所发展或是发生改变。
    不知道表述清楚了没有,主要是3方面的问题:

    (1)计算活跃度

    目前的想法暂时是这样的,在redis中以 "user:%d" % user_id 为键,通过hash的形式保存2项内容:

    * activeness:活跃度
    * activeness_update_time:活跃度更新时间

    用户每次访问页面、发私信等,都进行活跃度的计算:

    * 首先根据activeness_update_time距离现在的时长T,对activeness进行衰减处理,T越长衰减程度越大
    * 然后,再让activeness += 某值(比如访问页面+1,发私信+2)

    (2)结合活跃度以及其他的权重因子,对用户进行排序

    在user表中增加一个字段order_value,最终的排序就依据这个东西。

    有个要求就是活跃度的权重是30%,其他权重因子(比如用户信息完整度)的权重是70%,据此计算出最终的order_value。一般貌似是先归一化,然后再计算:

    order_value = 0.3 * 归一化的活跃度 + 0.7 * 归一化的用户信息完整度

    那活跃度这个上不封顶的东西,如何归一化呢?是不是需要构造某个y=f(x),然后满足f(0)=0,f(x→∞)=1呢?

    (3)何时进行排序

    个人的看法就是每天深夜的时候触发一次排序,计算出所有用户order_value。可以使用crontab、celery beat等实现周期性触发计算任务。

    --------------------------------

    以前没有遇到这种需求,只能瞎灯黑火地猜,所以真心求教各位V大,或者能分享一下相关的资料就太感谢了。
    6 条回复    2014-05-11 12:42:28 +08:00
    andyhu
        1
    andyhu  
       2014-05-10 14:18:38 +08:00
    为啥要用hash?elasticsearch可以搞定这种需求,把activeness和activeness_update_time做成field就可以了。加权重的话可以boost
    hustlzp
        2
    hustlzp  
    OP
       2014-05-10 14:29:40 +08:00
    @andyhu THX!
    andyhu
        3
    andyhu  
       2014-05-10 14:52:48 +08:00
    elasticsearch中文资料较少,我也是最近开始研究的,发现这东西太强悍了,功能非常多而且操作简便。但是官方文档渣得很,推荐搜下exploring elasticsearch,还算写的不错
    javaluo
        4
    javaluo  
       2014-05-11 11:29:24 +08:00
    计算一下活跃度大概的分布,然后给一个最大值,,例如100.超过这个最大值,就封顶为100
    hustlzp
        5
    hustlzp  
    OP
       2014-05-11 12:42:09 +08:00
    @andyhu 恩,我去看看 :)
    hustlzp
        6
    hustlzp  
    OP
       2014-05-11 12:42:28 +08:00
    @javaluo 呵呵,这个蛮简单粗暴的~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2796 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 00:26 · PVG 08:26 · LAX 16:26 · JFK 19:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.