1. 用户行为日志
采集: 怎么采集? 客户端和web服务之间加个代理?
日志由端来上报确定格式的数据来实现采集。可以认为有一个用于日志接收的Http接口,当用户行为发生时,端上报相应的日志。
存储: 一堆原始日志存在文件系统,或者汇总成会话日志? 谁想用就拿去用,比如hadoop就扔到hdfs上,是这样吗?
用户行为日志目前没有会话的概念。
日志最终都会存储在hdfs上。
日志的流向:端–>Log服务–>分布式消息队列–>hdfs/storm–>下游。
分析: 收集后批量分析? 边收集边分析? 同一份内容被利用多次?
分析的方式因算法、模型、业务的不同而不同。可以是批量的(离线算法),实时的(用户模型)。 日志可以被多次处理。
2. 用户模型、用户画像、用户兴趣模型是同义词吗? 就是用统一的结构描述用户的基本信息、行为、兴趣什么的…
是同义词。是一个结构化的数据,格式只要能满足需求即可。
3. ab test的设计不需要依赖其他层吗?
abtest是一个功能性的描述,它设计的实时需要依赖行为日志的采集、分析
4. ab test根据什么进行比较? 点击率?
主要通过点击率来比较
5. 如何判断本次推荐是准确的? 用户进行评分?
如果推荐内容能够让用户产生主动行为:如点击、购买等,则认为是准确的,一般以点击率、转化率来评估
6. mr、bolt中的就是算法实现吗?
可以这么认为。mr是大规模数据的统计分析方法, bolt只是整个算法的一个环节。他们都是实现算法、模型的手段
7. 所谓训练用户兴趣模型指的是把用户行为数据扔给算法不断计算吗? 然后根据计算结果重新生成商品列表?
构建用户模型本身可以看作是一个算法。 用户模型的主要目的是用来准确刻画用户的,包含社会属性和兴趣等。 计算商品列表可以与用户模型相关、也可以不相关(如cf就不需要用户模型)
8. 比如像user cf这种算法是不是每次计算的时候要从日志里找几个和我类似口味的用户,然后把他们喜欢的东西找出来生成个列表?
是的,在线cf的储存、计算代价较高,一般是离线实现的。或者用聚类算法更好一点
9. 关于推荐系统的各种评测指标,准确率、召回率、覆盖率、流行度…我们要怎么评测
准确率一般用点击率或者转化率来表示,即点击量 / 曝光量
召回率的话在推荐系统中一般用的较少。
覆盖率可以做为推荐系统的一个优化方向来做,就是 distinct(每天推荐的商品) / 商品总量
至于流行度什么的根据业务,是一些逼人离职的指标,一般是
10.项目开发过程中算法和具体业务结合的结合方式?
我的业务就是个性化推荐,没有其它的。所以算法就是来提供业务需要的数据的。 你可以理解为推荐系统有框架和算法组成。算法是数据的生产方。框架来负责组合算法,组装数据
11.模型训练,具体在代码层面的实现逻辑
这个问题比较范,对于用户/商品模型来说:模型是一个Json对象, 训练的过程就是按一定规则填充相应的field,涉及机器学习算法较少。
对于ranking/ model来说,主要的工作是清洗日志、抽样、训练、验证的过程, 模型本身会使用开源算法,不需要实现。
12.簇心签名
簇心签名用于商品去重和聚类。 是聚类算法的产物。
13.图片签名如何做到去重?
为图片生成hash指纹 如感知哈希算法
14.代理rc_proxy的功能?
分页缓存、结果适配等
推荐系统架构 (工程,已完成)
用户画像 (工程算法,已完成)
商品画像 (工程算法, 已完成)
打点日志 (规范, 已完成)
rpc框架grpc-java(工程,已完成)
流式计算框架strom(工程算法, 已完成)
storm.pptstorm事务详解(transactionTopology).doc
大数据处理平台hadoop(算法, 已完成)
大数据处理平台spark(算法, 已完成)
协同过滤:collaborative filtering
关联规则挖掘:associate rule mining
聚类算法: kmeans, mimhash, lda
分类算法:support vector mechine, logistic regression
开发环境
bj05-ovc-recom01.dev.gomeplus.com 10.69.261.47
bj05-ovc-recom02.dev.gomeplus.com 10.69.241.48
bj05-ovc-recom03.dev.gomeplus.com 10.69.251.49
bj05-ovc-recom04.dev.gomeplus.com 10.69.221.50
bj05-ovc-recom05.dev.gomeplus.com 10.69.244.51
bj05-ovc-recom06.dev.gomeplus.com 10.69.291.52