重读《内容算法》
最近抽空重读了一下闫泽华的《内容算法》这本书,再次看推荐相关的内容,依然觉得干货满满。这本书比较适合推荐算法入门,但就我个人感受来说,在有一定实战经验和了解之后,再来看这本书,反而将之前做的一些零零散散的内容串了起来。
好了,以下是一些干货部分。
首先,需要了解一下推荐算法的基础架构:

好吧,以上放了一张搜索系统的架构图(现在不太方便电脑画图,先这样吧),就着上图来看一下推荐系统的架构;
以下为针对推荐系统架构做的一些详细扩充:
推荐系统依然分为离线在线两个部分。
1. 离线部分需要通过各种方式来获得待推荐的内容,并从不同的维度对内容进行索引化处理。
1)推荐系统获取内容的方式不再是爬虫,有用户提交、协议同步、数据库导入等方式。就我之前的经验来说,一个内容平台的内容生产会有抓取、UGC、PGC三个部分,这些内容均会经过安全审核阶段,并将是否可推荐的状态同步给推荐引擎来作为推荐候选集。
2)内容的索引化处理:有分类维度、实体词维度等;这个部分刚开始机器是不能完全主动识别的,通常需要由运营人员来标注一定量的数据给到机器学习,来训练机器模型从而逐步实现机器化。另外,分类维度的分类需要尽量穷尽并相互独立,最好是借助权威的分类,以免出现较大的歧义,对推荐结果以及机器理解都会造成较大的损伤。分类维度也不要随意的更改,会造成一定的机器学习成本和清洗数据成本问题。
2. 在线部分基于用户画像,通过不同的召回方式获得推荐候选集,再按照预估目标对候选集进行排序,并经过规则干预后展示给用户。
1)用户画像可以分为两个部分:静态用户画像和动态用户画像;静态的信息比如用户的性别、年龄、常住地址等,可以通过注册引导或第三方登录等方式来获取相关数据;动态的信息通常指用户与平台的交互行为,比如点赞、分享、关注、停留时长等;
2)召回方式主要涉及到基础推荐算法类型:
a. 基于内容属性的相似性推荐:基于固有属性来计算物品与物品之间的相似度,从而推荐与用户历史消费相似的新物品;这种方式优势是仅依赖物品的特性,可以将新的物品、冷僻的物品得到展示;缺点是无法根据用户的品味和调性来做到个性化推荐;
b. 基于用户行为的协同推荐:
(1)基于物品(Item-based)的协同:先确定你喜欢的物品,再通过用户反馈来计算用户的相似度,推荐相似的新物品给你。与上面一种方式的主要差别在于计算物品相似度的角度不同。
(2)基于用户(User-based)的协同:找到与你相似口味的用户,将这一群人喜欢的新东西推荐给你;
(3)基于模型(Model-based)的协同:用用户的喜好来训练算法模型,实时预测用户可能的点击率;
3)规则干预:主要是为了满足产品特定的需求或者解决推荐算法中的一些问题;以下是几个常见的问题:
a. 推荐重复:即出现列表页或详情页相同的内容
b. 推荐密集:即用户的推荐列表中同一类的内容占比过高
c. 易反感内容:迷信、暴力、大尺度等问题,可通过规则干预推荐给特定的用户
d. 短时效性内容:热门事件需要快速的获得曝光和消费等
不论是从用户画像层面还是内容层面,完全依赖推荐算法是不可取的。需要人与机器相融合,通过促进机器变得更智能更有人情化,同时借助机器推荐的结果来不断挖掘用户更深层次的需求,从而实现人与机器的共同进步。