内容推送与算法研究

目前我们App推送的内容, 分为两大类, 一个是新闻, 一个是广告.

新闻, 我们的采集能力是每天大概3-5篇, 未来可以调整为10-20篇.

广告一次可以展示3-5条, 要更多也行, 最多8条吧.

广告展示在新闻的最上面, 用banner+滚动形式, 新闻是下拉刷新的形式, 按照时间排序(这一点很重要, 后面会说明).

分析

广告:
如果是我们自己的所谓运营的app, 比如陪驾小秘, 广告来源如果有, 可能是一下几大类:
1. 汽车后市场app, 比如e保养, 途虎.
2. 汽车4S店
3. 车厂
4. 电商, 例如京东

这并不存在广告的推送目标的问题, 自然是有多少, 推多少, 不存在推送给A用户, 而选择性的不推送给B客户.

当然, 如果是大用户量或者大流量的app, 广告推送是有很多学问的, 举个例子, A用户是一辆QQ, 你推送路虎的广告, 就没有什么必要, 具体的, 消费者已购买车型, 跟广告主要推的车型之间的联系, 这里面有很多要研究的东西, 是广告公司的人研究的课题, 举例说明就是, 如果客户买了一个价值在10万元左右的车, 而广告主A, 要推的车型是15万, 广告主B要推的车型是20万, 广告主C要推的车型是50万, 那应该将谁优先推荐给这个app用户呢?相信广告业肯定有对应的数据来说明这个数值, 我们不得而知, 相信真有一天我们要研究这个时候, 也是广告公司的人帮我们提供此类数据, 如果我们现在对别人说"我相信, 20万的车是10万元车主梦寐以求的!" , 其他人一定会问, 你的理论依据是什么? 请拿数据或者调研结果说话.

另一个广告是我们帮客户做的app, 比如纽曼音乐盒, 它的广告更加简单, 就是纽曼的其他产品的广告, 更加不需要做用户的区分.

新闻:
新闻是各app共享的, 并不存在各app之间的区别.
理想状态下, 如果我们是一个专门做内容的新闻类app, 我们需要针对用户过往的行为推送不同的新闻, 有点儿类似歌曲播放类或者电商类app所做的那样, 算法的基本原理如下, 没兴趣可以跳过, 只看结论部分:
甲用户点了A新闻, 进去看了5秒, 又点了B新闻, 进去点了个赞, 又跳过了C新闻,
乙用户点了A新闻, 进去看了20秒, 看了B,点了个赞, 进去C新闻, 很快又滑动, 跳出来.
丙用户点了A新闻, like了一下, 然后跳过B新闻, 然后进去C新闻, 看了十分钟.
我们可以将这些用户对这些新闻的喜爱程度的行为, 进行一个线性的评分,  如果点了赞, 就是5分, 如果跳过, 就是0分, 如果看完, 就是4分, 如果看一半退出, 就是1分,那么我们可以得到一个表:
用户/新闻     新闻A   新闻B   新闻C
用户甲         1           5           0
用户乙         2           5           1
用户丙         5           0           3

有了这些行为的记录, 我们可以解决两种问题:
1. 可以计算出用户甲乙丙之间的相似度,  打个比方, 如果甲跟乙的口味一致度很高, 那么将来甲如果先看了一个新闻D, 就可以将这个新闻D推荐给乙.
2. 如果出现一个新用户丁, 他赞了一个新闻A, 那么, 新闻B跟C, 哪个应该优先推荐他呢?

解决第一个问题的方法, 是个数学方法, 将新闻ABC想象成xyz轴, 将用户ABC的取向定为一个3维空间的3个点, 这样跟坐标原点(0,0,0)之间, 形成了甲乙丙3个向量, 这3个向量之间的夹角的余弦值就是形容这两个用户的趣味相似度的指标, 简单来说, 趣味越相似的人, 这个角度越小, 余弦值越接近, 比如0度角, 余弦值为1, 180度角, 余弦值为-1, 余弦的算法很简单, 夹角的余弦=向量点积/向量长度的叉积=(x1*x2+y1*y2+z1*z2)/(根号(x1*x1+y1*y1+z1*z1))*(根号(x2*x2+y2*y2+z2*z2)), 那么甲跟乙之间的相似度为0.42 甲与丙之间的相似度为0.16, 那么甲乙之间相似度为更高, 一旦甲将来看了一个新闻, 就可以先推送给乙.

解决第二个问题的方法更简单粗暴, 如果用户丁并没有看过新闻BC, 仅仅看了新闻A并点了赞, 那推荐B还是C呢?

计算方法是, 将新闻ABC的喜欢程度做一个减法, 再平均

用户/新闻     新闻A   新闻B   新闻C  新闻A-新闻B  新闻A-新闻C
用户甲         1           5           0       -4                 1
用户乙         2           5           1       -3                 1
用户丙         5           0           3        5                 2      

平均                                              -2                 4   

用户丁         5

那么拿用户丁对新闻A的喜好度5减去B的平均喜好度-2等于7, 减去新闻C的平均喜好度4等于1, 即预计丁对新闻B的喜好度比对C的要高, 所以推荐新闻B

其实这两种算法都被充分的变化之后, 运用在各类音乐, 视频, 文字等等内容提供类的app中了, 只是各自加入了其他不同的算法, 根子就是以上两种.

结论

要实现精准的基于用户过往行为而选择推送内容这一目标, 大量的用户行为积累跟大量的待选择的内容缺一不可,

第一,没有大量的用户行为, 你压根就不知道各个用户对过往新闻/内容的喜爱程度, 即便我们现在花大量人力把用户行为记录跟上传做到app层面去, 后台也只会产生大量对于我们没有实际用处的数据, 增加服务器的负担.

第二, 你推送的内容一天就那么几条, 谈不上给用户展示哪些, 不展示哪些, 即便费劲的搞出一套算法, 精准的推送了一条新闻给一个德系车主, 说日系车皮薄, so? 那其他新闻呢? 不推送了?还是说也推送, 但是放后面? 那我们费了大量人力, 就为了给新闻排个序?

我们目前能做的事儿:
我们能做的事儿很多, 但是目前, 内容相关的, 我觉得也就是这些:

  1. 建立一个数据表, 将车型与价格挂钩, 并用简单的方法能将所有注册用户的车型导出来, 到excel里面进行分析.

  2. 将不同的app的广告分开, 避免大家使用同一个广告推送的接口

  3. 考虑接入第三方的赞助, 赠送对应的洗车卷, 保养卷, 来增加用户粘性.

原文地址:https://www.cnblogs.com/Montauk/p/5749839.html