如何给app用户打标签
给用户打标签的方式其实也可以包含两种,统计类的打标签及算法类的打标签。
统计类相对简单粗暴式的以用户一段时间阅读的文章类型作为用户的兴趣偏好。而算法类则会增加更多的影响因素,包括文章阅读的数量,阅读的时间间隔,文章与当前热点事件的关系、用户属性因素等等。前者在算法资源不足同时运营需求量大的情况下可以先行,而后者可以在前者的基础上切分一部分流量对算法模型进行验证和调整,不断优化。但在用第一种方式进行时我们发现,用户在一段时间内阅读的文章类型并不是稳定的,大部分用户会有一个或者几个主要的兴趣偏好,这些类型阅读的文章篇数会更多,但同时,用户也会或多或少的阅读一些其他类型的文章,甚至有些用户是看到哪里算哪里,什么都会看。基于这样的情况,我们需要对用户的兴趣偏好进行排名,即通过对用户一段时间内每种文章类型阅读的文章数进行排名,并取用户top 10的标签,清晰告诉运营用户喜欢什么类型的文章,这些类型中,用户喜欢类型的优先级是怎样的,便于运营同学进行推送选择。因此,用户的标签也需要更加灵活,能够让运营同学基于事件发生时间及事件发生次数等权重进行灵活组合选择用户群。
由于目前push推送很大一部分是由人工进行的,从选择文章,到选择用户,到文章和用户的匹配,在正式进行推送前一般都会进行大批量的A/B test ,而资讯文章的类型非常多,仅一级标签已经达到30+种,二级标签从100到几百不等,总体的标签极有可能会有成千的标签,单靠运营同学进行推送,是绝对无法完成的。
因此,在运营资源有限又无法实现自动化的的情况下一般运营同学会对标签进行测试,并选择其中覆盖用户量大且转化率较高的标签。但同时这样的情况就会导致部分兴趣偏好比较小众的用户被排除出推送的人群。
针对这样的情况,我们取了用户top 10的二级标签及其对应的一级标签作为用户的一级和二级标签。这样,解决了用户覆盖量的问题,也可以让运营人员集中精力对主体标签及人群进行推送。但同时,另一个问题又出现了,选择用户一段时间内的行为,那么这个一段时间究竟是多长会更加合适,使得既达到能充分反应用户兴趣,同时又覆盖到更多的人群(每天都会有流失的用户,因此时间线越长覆盖用户量越大,时间线越短覆盖用户量越少)
我们发现,用户长期的兴趣偏好趋于某种程度的稳定,但短期的兴趣偏好却又反应了用户短期内跟随热点的行为。因此从这个层面来看,短期可能更能满足用户的需求,但短期覆盖用户量小。在这里,始终有覆盖量和转化率之间永恒的矛盾。我们的方式是,对用户根据浏览时间进行分段。赋予用户长期兴趣偏好和短期兴趣偏好,并优先短期兴趣偏好,从长期兴趣偏好中则将短期兴趣用户进行排除,进行不同的推送。而对于流失用户,极有可能在最近3个月(资讯当时定义流失用户时间为3个月)没有任何访问记录,针对于这样的用户,我们取用户最后一次有记录的标签作为用户标签,并进行流失挽回。至此,所有的用户也都有了属于自己的标签,而运营同学也可以根据用户的活跃时间以及阅读的频率对不同的用户进行不同的文章推送,真正的实现千人千面。
在这个问题上我们可以说是踩了不少的坑。而第二种方式,是通过算法直接为用户打上标签,除了时间和阅读频次,在算法模型中还可以增加更多的特征纬度,比如用户阅读文章距离现在的时间、阅读文章的时长、评论、点赞等等,同时,还可以针对于热点文章、热点事件,降低文章的权重。