用户推荐引擎简介


         

上图给出了推荐引擎的工作原理,简单使用一个公式来表达上图含义如下。

         数据源+算法=推荐结果

推荐系统主要解决的问题是信息过载的问题,当用户面对海量数据时,需要让用户简单、快捷的从海量商品中获取到自己真正想要或者潜在具有购买倾向的商品,从而提交交易量、客单价、点击率等指标。

数据源:

                   商品信息: 商品价格、商品种类、其他商品特征等

                   用户信息:年龄、性别、消费能力等

                   偏好信息:用户点击、收藏、购买、二次购买时间间隔等

上述就是在电商推荐系统中,常用的数据源种类,有时候为了获取到数据源信息,可能需要在整个交易链路中对特定信息进行记录并存储。

         专家系统:由于不同待推品,特征差异很大,比如电商中商品特征就包括品牌、材质、重量,音乐推荐中商品特征就包括曲风、年代、演唱者等,这些都需要具有专业能力的专家凭借自己专业知识对其特征进行提取。

         用户画像:主要是根据显示用户行为偏好分析和隐式偏好挖掘之后,为这个用户生成一个独特的画像,比如A用户是高消费人群并且对数码产品情有独钟。 比如B用户是骨灰级R&B音乐爱好者等。

         偏好数据清理:当系统开始获取用户行为数据之后,会产生大量的行为数据,这个时候需要对各种的数据进行处理,处理之后一方面可以降低数据量,其次可以减少算法在运算过程中噪声数据对最终结果的影响。噪声数据比如:作弊数据、网络中断、用户短时间大量重试操作等

算法:

         基于内容推荐

                   主要是通过待推荐商品的特征来讲商品进行建模,然后将相似商品作为推荐内容,举个栗子,用户A喜欢A电影, A电影的特征flag为科幻、美国、动作。 那么如果电影B的特征falg也为科幻、美国、动作,那么可以将电影B推荐给用户A

                   这种推荐方式主要有三个问题,第一个问题就是在上文提到的专家系统,特征建立的专业程度很大决定了推荐的准确性。第二个问题就是这里面没有考虑人对物品的态度,准确性会有一定影响。第三个问题是推荐的多样性不足,不能给用户推荐出多样性的物品。

         基于协同过滤推荐

                   协同过滤推荐,简单称之为发挥群体的智慧,让参与在当前系统中的每一个人都贡献出自己的兴趣爱好,然后发现兴趣、口味偏好相似的邻居群。类似于归类一样,然后基于这个邻居群对用户进行推荐。举个栗子:用户A喜欢物品AC。 用户B喜欢物品ACD,如果系统计算出A用户和B用户为偏好相似用户。那么可以将物品D推荐用户A。栗子中的是user-baseCF。 与其类似的还有item-baseCF。这种推荐方式存在冷启动问题,就是当新用户进入系统时,由于行为习惯数据太少或者不存在,导致推荐算法无数据可以进行计算,不能得出准确的推荐结果。

         混合推荐

                   由于不同场景各种推荐算法表现出来的效果不一样,所以有时间我们可以混合多种推荐结果,通过线性加权将多种推荐算法按照权限进行组合,得到一个较好的推荐效果。具体算法可以通过离线逻辑回归和在线实时训练得出。

效果评估:

         离线评估:

准确率:正确识别的个体总数识别出的个体总数

简而言之,一次推荐给用户返回了10个商品,那么这10个商品真正被点击的商品为5个,那么准确率为50%

         覆盖率:推荐系统除了能够准确预测用户的倾向之外,还应该照顾到整个推荐集合的完整性,比如书籍推荐、音乐推荐、店铺内推荐,其实都希望能够将书籍、音乐等物品全部覆盖,而不是将一部分热门商品不停的推荐,让冷门商品一直压箱底。因为有的骨灰用户可能就是具有独特的品味,音乐和书籍很突出。

         上述两种评测方法都能够方便的在离线场景下,通过历史数据来评估算法的优劣,实施成本也较低。

         实时评估:

                   实时评估是指在真实在线系统上,通过流量分配,来对比一种或多种算法的效果好坏。通常采用的A/B test进行流量分配和对比。

         A/B Test 主要关注流量分配策略、流量分配粒度、流量多层利用、动态调整等,这里不展开讲。其实A/B Test最主要的应用场景是应用于前端UI的对比优化。这个有兴趣的下来自己看吧。

上一篇:百度UEditor1.4.3.2使用问题小结