Re10ch1
本文是对七月在线推荐算法高级班课程1的一个课堂笔记记录。主要通过提问的方式来从外向内串起对推荐业务的理解。
推荐的理解:
推荐技术: 将机器学习的技术应用到推荐业务中
label =model(item,user,context)
推荐的item是什么: 推荐的物品
推荐item的对象user :
context: 上下文
label是指什么? 业务需要的指标就是对应的label,需要结合业务。 如新闻推荐,新闻被用户点击阅读的概率。
user 具体有哪些形式:
针对user可以涉及哪些特征:
兴趣;
历史浏览行为;
用户的标签;
用户的自身属性;
item 的特征:
统计类特征(如点击率、购买率)、内容类特征(类别、title、关键字等)
context类特征:
IP,time ,手机型号,网络类型;
model 可以是哪些?
任意模型都是可以
单目标学习; label =model(train,user,context)
多目标学习是一个趋势;
label1,label2,label3=model(item,user,context)
lr,gbdt,xgb,dnn,fm ,ffm,deepfm,dcn,wide and deep,ftrl ,din,dien,mmoe的多任务学习框架;
DIN、DIEN;
假设咨询新闻类推荐:
item,user,context特征哪个更重要? 为什么? —> 如何用技术手段来判断item 还是user重要?(本质上转化为特征重要性选择的问题)
通常item特征是最重要的;假设没有了item , label=model(user,context) , 则对于所有用户而言,item特征都是一样的 ,没法去区分给用户推荐的item。而如果是没有了user,label=model(item,context) ,给用户推荐的时候,所有所用用户的特征是一样的,但是item还是有差别的,所以相较而言,还是能给用户推出item里面整体优质的?
统计类特征具体是指什么统计?
对数据进行统计分析得到结论 。
我们所说的推荐数据具体是指什么?
假设每天库存100万短视频,对排序的候选视频是整个所有库存视频进行预估排序? 不是,是对召回出的部分视频进行排序。
为什么要进行召回?(召回存在的意义)
召回的存在满足性能上和多样性的要求;召回是推荐系统的第一阶段,召回过程中,利用少量的特征和简单的模型或规则对候选集快速筛选,减少后面排序阶段的时间开销。另外一个原因是出于业务上的考虑,排序阶段主要考虑单一目标,比如ctr,而有时候我们希望给用户多展现热点新闻或者时效性数据,这时候可以多加两路召回。
是不是所有的推荐系统都要用召回? 哪些情况下不需要用?
是由于性能要求。 对于用户而言,需要考虑给用户的在线延迟小于0.1s。机器能一次排出来的item的总数有限;
召回 ,召回的具体形式是什么?
针对中间的短视频app,可以设计出哪些类型的召回分支?
存召回的经典数据接口,可以用dict存储
key 有哪些,value有哪些? (另外还可能嵌套score评估得分)
key : user ,类别; topic ,hot(热度) ,item 等
value : itemlist
本质上召回可以概括为 i2i ,u2u ,多是通过经典的协同过滤算法计算出来的, 或者内容理解类的算法
UGC 这个名词:
User Generated Content,也就是用户生成内容,即用户原创内容。UGC的概念最早起源于互联网领域,即用户将自己原创的内容通过互联网平台进行展示或者提供给其他用户。
排序模型的item的数量由什么来决定? :
由各个召回分支的相似度topK进行截断后的输入给排序模型;这个K值受到当前配置机器与模型在线延迟必须小于0.1s,即与在0.1s内机器能一次选出来的item数量相关;
todo 待请教为什么叫相似度?
“这里的相似度可以理解为就是分数,推荐里面是分为很多场景的,像常见的首页推荐场景比如猜你喜欢,其实是对用户的推荐,也就是u2i,有的模型比如双塔,就是直接用用户向量去与商品向量做匹配,得到的就是相似度,那就找与当前用户对应向量最相似的N个item作为该路召回的结果,有的比如u2i2i这种,其中i2i部分就是指商品间的相似度,进一步根据用户的正反馈商品列表也就是u2i部分得到最终的u2i2i也就是用户对商品的打分/喜欢程度,虽然是打分,但是也可以理解为用户兴趣与商品兴趣之间相似度;除此之外,像商详推荐这种场景,其实就是一个i2i的过程,就是基于待推荐商品与当前商品之间的相似度进行推荐的。无论是说分数,还是说相似度,本质都是一个东西,都是一个用户与商品或者商品与商品的匹配度问题。”
user2i 中召回分支。 召回分支的形式:
key : user, value : item
key : user ,类别; topic ,hot(热度) ,item 等
针对某个用户的一次在线请求,召回的key是在线查询的 ,key对应的value是离线计算好了存储在nosql 中。
召回分支案例:
一个召回分支是user2i ,user2i 是如何计算得到的? 通过log日志实时挖掘出user点击历史,生成user2i 对应的value(value是用户一段时间内的itemlist) 。而log日志又是怎么来的呢 (log的具体工程链路是怎样的) ? —app客户端埋点(记录下用户的点击、浏览、曝光、点赞、评论、关注等等行为,而手机phone上会将数据回传到公司服务器,公司服务器上的的实时数据传输工具如kfaka会将数据传到计算集群上(如storm,hadoop等) ,然后进一步进行实时的数据拼接,拼接成形如将用户的id,itemid,bahaviour 拼接到一起,最终形成log 。整个这条工程链路是实时的。(log日志由公司负责工程的同学进行保障 )
召回查询是在线召回的,但是召回分支的计算是离线就计算好的。
离线计算: 召回分支
dict : 召回分支;
假设一个召回分支: item2tiem
起的作用是 实时去获取当前用户前10次点击的item list ,
根据当前用户前10次(时间窗口可以设定为如1个月、1星期、1天)点击的item list作为key ,去查询item2item (离线协同过滤计算好的) todo 待重听58min- 59min10s
上面整体是: 撸推荐的流程
电商推荐系统的业务指标和技术指标分别是什么?
业务指标 GMV(商品成交总额(一段时间内的))
衡量排序模型的指标是 auc/gauc
GMV =购买量 * 商品平均单价
购买量 = 点击率之后的购买率
点击人数和购买人数一般来说呈现正相关,排序模型优化的是点击率 和购买率
机器学习的本身:
用监督学习来解决推荐问题
相关性能概念:
QPS: 对于特定的server ,在一定时间内处理的流量,每秒100qps query per second
RT : server对于每次请求的响应时间,RT<0.1s 。 人一般是对于延迟超过0.1s就能感知出来。
产品位 相关介绍:
咨询类新闻中的案例:
关注页 ::
新闻资讯, 关注tab上 的标注 红点有什么作用?
推荐首页(也叫猜你喜欢,一般是开屏后的首页)
红点打与不打对猜你喜欢这个页面有什么影响? 还是没有影响。— 是有影响的,打上红点是为了产品引流,为了向关注页引流。
搜索框:
搜索做好对于“推荐”首页这个页面有什么影响? 还是没有影响? —- 是有影响的,本质上是竞争关系,推荐做的足够好的情况下,搜索框的用处就小了。 推荐做的垃圾,那搜索流量相对就会增加。
搜索框里的底纹词: 搜索框里嵌入了一个推荐系统,做词的推荐;
作业:1
gbdt+lr 的论文与论文实现;
代码与数据; (总量,label ,特征是哪些就可以)
作业2 :
使用 lr,gbdt,xgb,dnn,fm ,ffm,deepfm,dcn,wide and deep,ftrl ,din,dien,其中的任意一个模型对data_1.csv进行200万全量数据的训练和在这份数据上进行auc 的计算; (暂时不切分测试集) 。
自己思考:
自己做推荐,要养成的核心竞争力是什么?
自己要去理解每个细节为什么要这么做。