1.离线方法,学习用户的embedding,然后找到相关的Item进行存储,即用户的推荐列表进行存储(或者Item的相似度列表),当需要访问的时候直接去kv存储中取
将用户已经训练好的向量或者用户画像去倒排文件中找到最相近的目标物品。对于用户有行为的数据那么多,首先对用户偏好进行建模,选出来一部分,结合数据库中可能存有的用户画像,可以获得比如item2item的相似性返回结果,brand2item相似性返回结果,cat2item相似性返回结果。离线方法用kv存储结果。
在线计算,计算出user的embedding,然后在线去recall server上查找结果
选择KEY:用户偏好建模
预测用户对已产生的行为中的偏好
进行KNN检索(shard,把数据放到不同机器上,每个机器都返回一定的结果,然后汇总每个机器学到的结果)(局部敏感哈希:相同的数据点哈希值相同)(KDtree:向量做聚类 Ball tree)
Kdtree查找最近邻的过程,首先找到查询点所属的叶子结点,同时经过的路径上的结点记录下来,以便回溯,以查询点为中心,查询点所属叶子结点距查询点的距离为半径,查找是否和上层结点的其他子节点有交集,若有交集则进行访问,没有交集结束访问。
查找KNN的过程是使用一个大小为k的优先队列进行存储。
2.召回算法:CF;Personal Rank; LFM
2.1.基于邻域的CF:item共现但是不一定就相似,有些结果用户可能不满意
2.2.基于模型的CF:
CF和LFM比较:
ItemCF是基于公式的,LFM是基于学习的;
ItemCF空间复杂度是O(i**2),LFM空间复杂度是O((i + u) * f)
ItemCF时间复杂度是O(u* i ** 2),LFM时间复杂度O(M* k* f* N)N代表N轮迭代。
Item2Item是找到用户最近有过行为的Item,根据item相似度用来给用户进行推荐。(ItemCF,w2v)
User2Item是指根据用户的基本属性历史行为等基于一定的模型,算出最有可能的推荐列表写在kv存储中,当用户访问系统时,将这些列表推荐给用户。(UserCF,lfm, Personal Rank)
embedding能唯一最细致地表示一个模型,不同于dense特征
(1)MF 最简单的embedding,将embedding结果直接进行内积操作
(2)Topic model(LDA)
(3)Word2vec
将用户的行为序列转化为item组成的句子
模仿w2v将item embedding
将学到的embedding和所有其他的embedding进行相乘
TF实现:
1.定义输入输出 placeholder
2.定义变量 Varable(embedding/softmax/softmax bias)
3.进行运算,先选出单词对应的embedding
4.定义损失 sampled_softmax
5.定义优化器最小化损失函数 https://www.cnblogs.com/fourmi/p/9938477.html
6.对embedding后的结果即代表word的一个向量进行归一化
7.验证
word2vec和LDA都是无监督学习(只是知道浏览序列收藏序列这种数据),DNN和MF是有监督学习(知道点击序列和播放序列)
(4)DNN中学embedding
将用户的特征用embedding表示后,放进DNN,得到最终的表示用户的向量,和目标物品的embedding进行内积操作,得到最终的分类结果。
2.3.基于内容的推荐
用户推荐的独立性,其他用户的结果是影响不到该用户的。
Item Profile:关键词刻画;类别刻画
文本的刻画:
Topic finding:选定特征,特征是title和内容主题的词语分词,命名实体识别可以去匹配关键词词表,得到关键词,进行排名,排名最高的给Item完成标签,排名算法TF-IDF,规则基于场景修正错误的规则。
Genre Classify:Title和分词的词向量(浅层Onehot, 深层的embedding),LR/fasttext/textcnn分类器使用多种分类器进行结果线性加权。
短视频的刻画:
关键帧对应的图像的识别;音频对应文字的处理
User Profile:对于不同的种类不同的倾向性,根据用户的打分*时间衰减*item的类别分数
Genre(种类)
Topic(关键词)
Time Decay
Online Recommendation:将item倒排存入搜索引擎中,将用户刻画存入Kv中,实时搜索得到结果。
基于用户的刻画找到用户最感兴趣的Topk分类,分类带有权重;
给每个分类自己找到N个最好的物品(CTR高的,新产品就用预估的CTR)(使用倒排文件,每个类别的物品按照平均得分进行排序);
由于权重的不同n的数目是不同的;
3.召回阶段的多目标
可以通过构造评分矩阵,比如加入购物车+收藏=5分,点击+收藏=1分这种实现多目标;多目标召回,每个目标召回一部分数据。
4.不同算法召回不同的商品,根据算法之前表现来选择召回的个数
网友评论