推荐系统embedding

1.什么是embedding?

直观含义:

比如[0.3,0.5]2个元素,2维embedding,[0.2,0.3,0.4......,0.5,0.7] 1000个元素,1000维embedding

物理意义:

可解释的embedding 代表兴趣强度

用户embedding.[0.8,0.3] 这个人喜欢 0.8强度的喜剧,喜欢0.3强度的动作;

电影embedding.[0.4,0.6] 这个电影0.4强度是喜剧片,0.6的强度是动作片;

求余旋函数[0.8,0.3],[0.4,0.6] 就能算出这个人喜欢这个电影的程度;

机器学习得到用户/物品的embedding;100维的向量,这时候每个数值没法解释

这些兴趣向量 大量使用,叫做latent factor, 隐因子,隐含兴趣向量;

2.embedding怎么使用?

n个物品的100维embedding 向量

物品1

[0.2,0.3,0.4,........,0.6,0.2]

物品2

[0.1,0.8,0.4,........,0.3,0.2]

........

 

物品n

[0.5,0.6,0.4,........,0.2,0.1]

n个用户的100维embedding 向量

用户1

[0.1,0.3,0.4,........,0.1,0.2]

用户2

[0.1,0.2,0.4,........,0.5,0.2]

........

 

用户n

[0.5,0.1,0.4,........,0.6,0.1]

应用1:余选相似度计算物品的embedding的相似度取TOPN

            物-物推荐,相关推荐,买了又买,看了又看

应用2: 使用物品的embedding+用户的embedding向量 利用余选相似度计算topN个物品

           人-物推荐,猜你喜欢,猜你想看,猜你想买

应用3: 计算用户的embedding 向量的余选相似度,取近似的topN

            人人-推荐,猜你认识,推荐好友

3.如何从数据中生成embedding?

3.1.基于内容的word2vec 的embedding;

word2vec 计算

item2vec 算法

3.2 协同过来矩阵分解方法

  1. 输入准备文件:用户iD, 物品id, 评分,时间;

  2. 读取到spark;

  3. 使用spark als 训练
  4. 得到内容的embedding向量

3.3 DNN深度学习方法

4.使用embedding有什么技术难题?

快速的近邻搜索

100w的电影embedding 搜出top10

几个方案:
1.离线暴力搜索

离线使用for循环挨个计算余选相似度,产品top10的电影(电影id,相似top10的电影列表)存入redis 供在线层使用

2.离线LSH降低准确度的相似度搜索

LSH:局部敏感哈希

原理:embedding分桶,在桶或者桶的附近搜索,极大加快搜索速度

3.在线搜索,满足50MS 以下百万、千万的近邻搜索

常用Facebook 开源的faiss 近邻搜索库,可以流式往里面添加embedding,然后ms级别搜索近邻使用的原理为 降维,聚类,索引树等方法

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值