推荐算法CB
写在前面
推荐算法我这边接触到了两种,CB和CF,这篇我只讲一下我学习CB过程中的一些理解! 为了不让篇幅太长导致杂乱,CF留到下一篇描述。需要的同学麻烦点赞收藏。
一 为什么要做推荐系统
由于信息过载,导致对信息反映的速度远远低于信息传播的速度;信息量远远的高于用户受众所能消费、承受和需要的信息量;且有大量无关的冗余数据信息会严重干扰用户的视线以及降低用户的产品体验。于是推荐系统便是为了解决此类问题而产生。当然搜索系统也能解决此类问题
二 基于内容推荐是什么?
基于内容的推荐CB是在推荐引擎出现之初应用最为广泛的推荐机制,它的核心思想是根据推荐物品或内容的元数据,发现物品或者内容的相关性,然后基于用户以往的喜好记录,推荐给用户相似的物品。比如你看了复仇者联盟I,基于内容的推荐算法发现复仇者联盟ll-lV,与你以前观看的在内容上面(共有很多关键词)有很大关联性,就把后者推荐给你
1 引入Item属性的Content Based推荐
从图上可以看出这种推荐方式的:
- 优点:
- 推荐结果可以解释(用户刚浏览过的数据,立马就可以推荐相关item给他)
- 简单易操作 (流程简单)
- 实时性好
- 缺点:
- 无个性化
- 精度不好,依赖于对item的深度分析(如果item数量过多不适合)
2 引入User属性的Content Based推荐
从图上可以看出基于用户行为这种推荐方式的:
- 优点:
- 用户画像(刻画了用户的兴趣需求)
- 推荐形式多样,具有个性化
- 结果可解释
- 缺点:
- 推荐精度较低
- 用户行为数据稀疏会导致推荐覆盖率低
三 正排表与倒排表
正排
item -》token1:score1,token2:score2,token3:score3
无线蓝牙耳机 :通过中文分词可以得到 : (无线/蓝牙/耳机)这三个token
举例:query(无线蓝牙耳机)
商家的商品列表(一亿的商品)
item | 分词(token) | Score |
---|---|---|
入耳式蓝牙耳机 | 入耳式/蓝牙/耳机 | 0.8 |
beats无线蓝牙耳机 | beats/无线/蓝牙/耳机 | 0.9 |
蓝牙音箱 | 蓝牙/音箱 | 0.3 |
无线便携充电宝 | 无线/便携/充电宝 | 0.2 |
头戴式电竞版耳机 | 头戴式\电竞版\耳机 | 0.5 |
… | … | … |
倒排
token -》item1:score1,item2:score2,item3:score3
对以上正排表可以得到
倒排索引表:
token | item |
---|---|
无线 | beats无线蓝牙耳机、无线便携充电宝 |
蓝牙 | 入耳式蓝牙耳机、beats无线蓝牙耳机、蓝牙音箱 |
耳机 | 入耳式蓝牙耳机、beats无线蓝牙耳机、头戴式电竞版耳机 |
例子解释索引表
例如:
正排表:分数为:TFIDF,中文分词的分数
item1 => token1:score1, token2:score2, token3:score3
item2 => token4:score4, token5:score5, token3:score6
item3 => token2:score7, token3:score8, token4:score9
可以得到倒排表:
token1 => item1:score1
token2 => item1:score2, item3:score7
token3 => item1:score3, item2:score6, item3:score8
token4 => item2:score4, item3:score9
token5 => item2:socre5
假设现在用户输入一个itemX
itemX通过分词包含token2,token3
那么可以得到3个商品:
token2 => item1:score2, item3:score7
token3 => item1:score3, item2:score6, item3:score8
item1:score2+score3
item3:score7+score8
item2:score6
里面物品有重复的说明商品越重要,因为重复得越多,说明被匹配的token就越多
最后将重复的商品分数相加后的score进项倒序排序,输出topN个相关的item
item1:score2+score3 = 0.89
item3:score7+score8 = 0.80
item2:score6 = 0.60
假设只需要top2的话,那么推荐商品最后返回的就是item1和item3