今日头条用户定向预估的实现方案
hello2018 LV22楼
首先这个问题比较有深度和思考。这里回答下。
首先直接回答楼主的问题:
1.采用的是什么存储
这个相信我们都知道大数据,那么头条的数据,相信没有阿里的多,既然阿里使用大数据框架都没有问题,所以头条也没有问题。那么它用什么存储这个也只能猜测,不出意外,肯定是用的hadoop相关组件,比如hbase或则hive。这二者可能都用到了。比如数据仓库hive用来存储多维度数据。
2.快速查询,楼主可能所说的应该是为什么能快速的推荐。这个他们有自己的推荐算法。
今日头条的个性化推荐算法原理 如上图,有3篇文章,让3个用户投票(注:这3个用户是一类人,有相同属性(喜好和偏好)),那第4个用户应该被系统推荐的文章是那篇呢?第4个用户与前3个用户都是一类人,答案显而易见是第一篇文章。 没错,今日头条的个性化推荐算法原理就是基于投票的方法,其核心理念就是投票,每个用户一票,喜欢哪一篇文章就把票投给这篇文章,经过统计,最后得到结果很可能是在这个人群下最好的文章,并把这篇文章推荐给同人群用户过程就是个性化推荐,实际上个性化推荐并不是机器给用户推荐,而是用户之间在互相推荐,看起来似乎很简单,但实际上这需要基于海量的用户行为数据挖掘与分析。
那么他们的推荐具体用了哪些技术,如下图,首先需要有数据,然后各种处理
处理之后,在推荐系统中应用 为什么那么快,其实如下,这些使用hadoop离线处理,对于过去信息处理,如下图。
当然相信也有实时处理,他们使用的是storm
erbin 楼主 LV23楼
我上面的表述可能不是很清楚,我说的是头条的广告投放后台系统,面向广告主使用的,支持广告主选择不同的用户定向组合进行投放广告,比如 男+北京+华为手机,并且根据广告主选择的定向组合条件实时给出头条能覆盖的人群数。
我的问题是 头条如何实现这个功能的?如何存下千万级(可能更多)的定向组合?或者是否需要存下所有的定向组合?又如何支持秒级的查询?
hello2018 LV24楼
erbin 发表于 2018-4-25 20:56
我上面的表述可能不是很清楚,我说的是头条的广告投放后台系统,面向广告主使用的,支持广告主选择不同的 ...
我上面的表述可能不是很清楚,我说的是头条的广告投放后台系统,面向广告主使用的,支持广告主选择不同的 ...
这个原理首先对用户有多少,是可以事先统计好存储下来:比如男+北京+华为手机,这个例子,我们事先统计好男有多少用户,北京有多少用户,华为手机多少用户。这些用户数量都是固定的,然后条件组合,其实就是过滤的过程。由于这方面的技术头条并没有说,这里猜测如下:这里面有两个办法实现1.把所有的组合条件,都计算好,实现存储。
男+北京+华为手机这是一个组合,也可以视为一条记录
女+北京+华为手机这是一个组合
相信组合加起来也就是几百条或作上千条。
如果是这样实现的话,那就太简单了,因为这只是在数据库中查询一条数据记录而已。关系数据库就可以实现。这个效率那肯定也是相当的快。
唯一存在的问题就是,可能数据有所增减,不过这个也没有关系,修改量如果是实时的改变也不会太大。
2.第二个办法,也就是楼主认为的办法。
我每一个组合,都需要亿万条去统计,那么它是如何实现查询的,为什么这么快。
其实第一种方案,感觉效率更高。
对于第二个方案,如果每一个操作都去遍历查询,那么这个计算太惊人了,反映很快,这需要相当的技术。当然也是可以实现的。比如百度,谷歌查询,我们输入条件,毫秒级就可以出现结果。
hbase+es或则solr也可以实现。特别是如果rowkey设计好,应该也是可以的。
erbin 楼主 LV25楼
hello2018 发表于 2018-4-25 22:03
这个原理首先对用户有多少,是可以事先统计好存储下来:比如男+北京+华为手机,这个例子,我们事先统计好 ...
这个原理首先对用户有多少,是可以事先统计好存储下来:比如男+北京+华为手机,这个例子,我们事先统计好 ...
谢谢你。组合条件里有一个是用户的装的App。也就是说我输入若干个App,需要返回装了其中任意一个App的用户数,这个组合数很大啊。或者这个能通过事先预计算搞定吗?
hyj8楼
大神能否详细说说,指教,预聚合,这个是指?
广告主投递客群预估,只是一个量级预估
量级预估是指?erbin 楼主 LV29楼
erbin 楼主 LV210楼
这个定向预估一定的误差是可以接受的,毕竟展示给客户看的也是到万级别了。不过抽样统计在这种大量条件组合的情况下能适用吗?不是很了解这个抽样的具体方式。