《推荐系统实践》第1章 好的推荐系统

 

1.1 什么是推荐系统

  • 电商公司APP就是帮助用户找到自己所需要的信息/物品;如果用户知道自己需要什么,就通过搜索框【检索系统】或自己的经验浏览货架;如果提供的商品数量/信息量太大,就利用商品的类目或者属性信息来做初步过滤;如果用户自己也不知道需要什么样的,就要利用推荐系统来给用户推荐出商品。
  •  推荐系统产生的条件:1、用户自己也不清楚自己的购买需求;2、商品数量过多,存在信息过载。 此时,需要一个自动化的“专家”,分析你的历史兴趣,找到符合你兴趣的商品。
  •  推荐系统的任务:1、帮助用户发现自己有价值的信息;2、让信息能够展现在对它感兴趣的用户面前,实现消费者和生产者的双赢,使用户和物品联系的一种工具。
  • 推荐系统和搜索引擎的关系

框架

特点

关系

推荐系统

有明确目的时的主动查找需求

 互补

搜索引擎

没有明确目的帮助他们发现自己感兴趣的东西

 

  • 从物品的角度出发,推荐系统可以更好地发掘物品的长尾。 推荐系统通过发掘用户的行为,找到用户的个性化需求,从而将长尾商品推荐给需要他的用户,帮助用户发现那些他们感兴趣却很难发现的物品。
  • 常见的推荐方式

方式

实现过程

特点

社会化推荐

利用社交网络,好友信息进行推荐

既要考虑兴趣度又要考虑亲密度

内容推荐

商品的 类目,生产信息,属性信息

 

协同过滤

如果能找到和自己兴趣相似的用户,看看他们对那些商品感兴趣

 

1.2 个性化推荐系统的应用

       个性化推荐系统主要来分析用户的行为日志,给不同用户提供不同个性化页面展示,来提高网站点击率和转化率。普遍的个性化系统包括: 前端的展示界面---->后天的日志系统---->推荐算法系统。

1.2.1  电子商务网站

  1. 主要的应用:个性化推荐列表,相关商品推荐列表。
  2. 主要组成部分:

推荐结果的标题,缩略图以及其他的内容属性----->告诉推荐的是什么?

推荐结果的平均分----> 推荐结果的总体质量,推荐的结果怎么样?

推荐理由----> 为什么这么推荐?

  1. Amazon的推荐方式
  • 基于物品的推荐:推荐出和用户喜欢的物品  相似的物品。
  • Amazon 基于用户的推荐,调用的是facebook的好友关系。
  • 相关推荐列表:买了又买,看了又看【利用曝光数据】,点了有点【利用点击数据】,打包销售【outfit】
  • 推荐销售占据亚马逊销售额的20%~30%。

1.2.2  电影和视频网站

  1. 代表性公司:Netflix,Hulu,YouTube
  2. Netflix 推荐结果展示页面的组件:
    • 电影的标题和和海报
    • 用户反馈模块,包括:Play,评分和Not Intersted
    • 推荐理由:因为用户曾经喜欢过别的电影。
  3. Netflix 的基于物品的推荐算法,给用户推荐和他们曾经喜欢的电影相似的电影。 

1.2.3 个性化音乐网络电台

  1. 代表公司:Pandora, Last.fm,豆瓣电台
  2. 前端界面特点
    • 不允许用户点歌
    • 反馈方式:喜欢,不喜欢和跳过。
  1. 音乐视频推荐的特点:

特点

说明

物品空间很大

音乐的数据量很大

消费每首歌的代价很小

和电商的不同,不一定是听了就兴趣度最大

物品种类丰富

 

听一首歌消耗很少

 

物品重用率很高

和电商不同,电商一般只购买一次

用户充满激情

 

上下文相关

用户所需要的心情和所处的环境。

次序很重要

 

很多播放列表资源

推荐场景比较多,需要深刻理解业务

不需要用户全神贯注

 

高度社会化

社交推荐占据的权重比较大

1.2.4 社交网络

  1. 代表的公司:Facebook 和 Twitter,最宝贵的资源是:用户之间的社交网络信息和用户的偏好信息。
  2. 个性化推荐的主要应用场所:
    • 利用用户的社交网络信息对用户进行个性化的物品推荐;
    • 信息流的会话推荐;
    • 给用户推荐好友。
    • FaceBook的个性化推荐APIinstance personaliation

1.2.5 个性化阅读网站

  1. 个性化阅读代表的公司:Google Reader,Zite和Flipboard,Digg
  2. 使用个性化推荐系统前后,用户的好友数,评论数,活跃程度是否增加了

1.2.6 基于位置的服务

  1. 代表公司:美团,大众点评,FourSqaure
  2. 位置是一种很重要的上下文信息,基于位置给用户推荐离他近且他感兴趣的服务。【因此,要同时考虑距离和兴趣度】

1.2.7 个性化邮件

  1. 代表公司:Tapestry----> 通过用户阅读邮件的历史行为和习惯对新的邮件重新进行排序。
  2. 2010年,google通过分析用户对邮件的历史行为,找到用户感兴趣的邮件

1.2.8 个性化广告

  1. 个性化广告与个性化推荐的区别

 

过程

核心

个性化广告

帮助广告找到令他们感兴趣的用户

广告为核心

个性化推荐

帮助用户找到令他们感兴趣的物品

用户为核心

  1. 个性化广告投放技术
    • 上下文广告:通过分析用户正在浏览的网页内容,投放和网页内容相关的广告----》提取网页的关键词
    • 搜索广告:通过分析用户在当前会话中的搜索记录,判断用户的搜索目的,投放和用户目的相关的广告;
    • 个性化展示广告:根据用户的兴趣,不同的用户投放不同的广告。
  2. FaceBook拥有大量的用户个人资料,也就是拥有大量的用户兴趣标签,然后广告商可以圈人。

 

1.3 推荐系统的评测

  1. 推荐系统的一般组成:用户,物品提供者,提供推荐系统的网站,因此好的推荐系统必须考虑这三方面的利益。
  2. 早期将“好”得推荐系统定义为:能够做出准确预测的推荐系统【比如:预测这个物品是否会购买】。 好的推荐系统不仅仅能够准确预测用户的行为,而且能够扩展用户的视野,帮助用户发现那些他们可能会感兴趣但是却不那么容易发现的东西。同时,推荐系统还要能够帮助商家将那些埋没在长尾中的商品推荐给用户。

 

1.3.1 推荐系统的实验方法

  1. 三种评测推荐系统效果的试验方法:离线实验(offline experiment),用户调查(user study) 和在线实验(online experiment)
  2. 离线实验,主要由以下步骤完成:
    • 通过日志系统获取用户的行为日志,并按照一定的格式生成一个标准的数据集。
    • 将数据集按照一定的规则生成训练集和测试集;
    • 在训练集上训练用户的兴趣模型,在测试集上进行测试。
    • 通过事先定义的离线指标评测算法在测试集上的预测结果;
    • 离线指标的优缺点

优点

缺点

不需要对实际系统的控制权

无法计算商业上关心的指标

不需要用户参与实验

离线指标和商业指标存在差距

速度快,可以测试大量算法

 

  1. 用户调研
    • 定位:离线指标和线上指标之间存在差距,因此在上线测试前,要做一次称为用户调查的测试。
    • 步骤: 真实用户在推荐系统上完成一些任务,然后记录他们的行为和答案,最后分析统计用户的行为和答案了解测试系统的性能;
    • 优缺点:

优点

缺点

获得很多体现用户主观感受

招募测试用户成本高

比离线评估分析低

设计双盲实验非常困难

出错后容易弥补

测试环境下的行为和真实用户下的行为不一致

  • 在实际上线的过程中,会有测试人员体验,也有产品,业务,运营同事去体验验收。

             3. 在线实验

  • 采用AB分流系统,网站:Abtests.com ,设计实验,如何设计出合理的AB测试;
  • AB测试的优缺点

优点

缺点

能够公平地获得不同算法实际在线的性能表现

周期比较长,一般只对离线性能较好的算法上AB测试

 

 

切分流量是AB测试中的关键是不同层之间的流量是正交的

 

  • AB测试过程的流程:

                    

  1. 一般来说,一个新算法上线的流程如下:

         Step1:通过 离线实验证明他在很多离线指标上都超过现有的算法;

         Step2:需要通过用户调查确定他的用户满意度不低于现有的算法。

         Step3:通过在线的AB测试确定他在我们关心的指标上是否优于现有的算法;

1.3.2 评测指标

  1. 用户满意度【最重要的指标】
    • 评估方式:只能通过用户调研和在线评估;
    • 用户调查的方式:设计调查问卷,然后进行问卷调查;
    • 在线实验的方式:通过一些用户行为统计得到,比如点击率,用户停留时间,转化率等指标;
    • 其他一些方式:双击,小红心。。。。
  2. 预测准确度【最重要的指标】
    • 评估模型预测用户行为的能力;
    • 评估方法:

                           Step1:收集用户的历史行为记录;

                           Step2:通过时间将记录分成训练集和测试集;

                           Step3:在训练集上建立行为和兴趣模型,并预测用户在测试集上的行为;

                           Step4:计算预测行为和测试集上实际的重合度作为预测准确度;

                       3. 针对不同的问题,有不同的评估指标

                               1.0 评分预测问题

                                预测用于对物品评分的问题:评分预测问题

import numpy as np

def make_records():
    
    rsd = np.random.RandomState(10)
    strs = 'abcdefghigklmnopqrstuvwxyz'
    users = list(strs)
    items = list(strs.upper())
    
    real_score = [_  for _ in range(2, len(strs) + 2)]
    noise = rsd.randn(len(strs))
    pre_score = [real_score[_] + noise[_] for _ in range(len(strs))]
    
    record = {}
    for u, i, r, p in zip(users, items, real_score, pre_score):
        record[u] = [u, i, r, p]
    return record


def RMSE(record):
    
    T = len(record)
    if T == 0:
        return 0.0
    
    error_list = []
    for item in record.values():
        error = item[2] - item[3]
        error_list.append(error)
    score = np.sqrt(np.sum(np.square(error_list))) / T
    
    return score


def MAE(record):
    
    T = len(record)
    if T == 0:
        return 0.0
    
    error_list = []
    for item in record.values():
        error = item[2] - item[3]
        error_list.append(np.abs(error))
        
    score = np.sum(error_list) / T
    
    return score


datas = make_records()
print('rmse:{}'.format(round(RMSE(datas), 4)))
print('mae:{}'.format(round(MAE(datas), 4)))

                               1.1 TopN 推荐问题

                              TopN推荐的预测准确率一般通过准确率(precision) 和召回率(recall)来度量。R(u)是根据用户在训练集上的行为给用户做出的推荐列表,T(u)是用户在测试集上的行为列表,那么推荐结果的召回率一般定义为:

def PrecisionRecall(test, N):
    
    hit = 0
    n_recall = 0
    n_precision = 0
    for user, items in test.items():
        rec_rank = Recommend(user, N)
        cover_goods = tuple(set(items) & set(rank))
        
        hit += len(cover_goods)
        n_recall += len(items)
        n_precision += len(rank)
    
    recall_rate = hit / n_recall
    precision_rate = hit / n_precision
    
    return recall_rate, precision_ratecision_rate

3. 覆盖率

描述推荐系统对物品长尾的发掘能力。简单的定义:推荐系统推荐出来的物品占总物品集合的比例。那么推荐系统的覆盖率定义为:

更加细致的描述方式:信息熵和基尼系数,需要统计推荐列表中不同物品出现次数的分布,如果所有的物品都出现在推荐列表中,并且出现次数差不多,那么推荐系统挖掘长尾的能力就很好。也就是商品分布比较均匀,越均匀表示表示挖掘长尾的能力较强,否则表示越差。

信息熵:

推荐系统应该避免马太效应,通过基尼系数来评测。

 4.  多样性

为了满足用户广泛的兴趣,推荐列表需要覆盖用户的不同兴趣领域,因此推荐列表应该具有多样性。

多样性描述了推荐列表中,物品两两之间的不相似性。假设s(I,j)表示物品i和j之间的相似性,那么用户u的推荐列表R(u)的多样性定义如下:

推荐系统整体的多样性可以定义为:所以用户推荐列表多样性的平均值。

5. 新颖性

  • 新颖性指的是给用户推荐那些他们以前没有听说过的物品。在一个网站中,实现新颖性最直接的方案就是:把用户之前在 网站中有过行为的物品从推荐列表中过滤掉。
  • 可以用推荐列表的平均热门程度【可以用销量的平均值或者点击uv的平均值】,平均热门程度越低,表示新颖性越强;
  • 最精确的方法是需要做用户调研;

6. 惊喜度【serendipity】

推荐结果和用户的历史兴趣不相似,但却让用户觉的很满意,那么算比较好的惊喜度。首先给出一个热门推荐列表,将给用户曝光过的商品直接过滤掉。

7. 信任度

  • 推荐系统的信任度只能通过:问卷调查的方式,询问用户是否信任推荐系统的推荐结果;
  • 提高推荐系统信任度的方法:
    • 增加推荐系统的透明度,而增加推荐系统透明度的主要方法是提供推荐解释;
    • 考虑用户的社交网络信息,利用用户的好友信息给用户做推荐,并且用好友进行推荐。
  • 典型应用:Epinion

8. 实时性

  • 对于一些物品实时性比较强的网站(新闻,微博等),推荐系统的实效性至关重要。【kafka,storm】
  • 推荐系统的实时性包括两个方面:
    • 推荐系统需要实时地更新推荐列表来满足用户的新的行为变化【Recently Viewed】把点击过商品排列出来。或者用户点击过的商品进行加权,排到最前面。可以根据推荐列表的变化速率或者变化情况来评估实时性。
    • 将新加入系统的物品推荐给用户【冷启动问题,利用商品的属性相似度】。

9. 健壮性

  • 健壮性是衡量一个推荐系统抗击作弊的能力,特别是搜索引擎的作弊和反作弊能力。【如果自己的商品称为热门搜索词,会带来极大的商业利益】
  • 常见的作弊方法:行为注入攻击,亚马逊的买了又买,豆瓣的评分系统。【用水军,刷单】
  • 健壮性评测方法:模拟攻击

Step1: 给定一个训练数据集D和推荐算法model,生成用户的推荐列表R(u);

Step2:给训练数据集D注入噪声称为D1,然后利用推荐算法model在D1上给用户u进行推荐,推荐列表为R(u)1;

          【噪声怎么注入?这种对于评分预测问题影响比较大】

Step3:通过比较攻击前后推荐列表的相似度来评测算法的健壮性;【TopN】的重复率。

  • 在实际的系统中,提高系统健壮性的方法:
    • 选择健壮性比较高的算法【主要应该是特征处理过程】;
    • 设计推荐系统时,尽量使用代价比较高的用户行为,【攻击代价比较高的行为成本较大】,比如说使用购买行为,加车行为等。
    • 在使用数据前,进行攻击检测,从而对数据进行清理。

10. 商业目标

  • 最本质的商业目标:平均一个用户给公司带来了多大的盈利;【bauv 和vpm】

 

1.3.3 总结

  1. 如何通过优化离线指标来提高在线指标;
  2. 获取各种评测指标的途径

 

离线实验

问卷调查

在线实验

用户满意度

 

预测准确度

 

覆盖率

 

多样性

 

新颖性

 

 

惊喜度

 

 

3. 离线指标优化的目标:

最大化预测准确率,使得覆盖率>A, 多样性>B,新颖性>C;

1.3.4 评测维度

  • 增加评测维度的目的就是知道一个算法在什么情况下效果最好,这样可以为融合不同算法取得较好的整体性能带来参考。
  • 常见的三种评测维度:

维度

 

用户维度

人口统计学信息,活跃度,是否是新用户

物品维度

物品的属性信息,流行度、平均分以及是不是新加入的物品。

时间维度

季节、是工作日还是周末,是白天还是晚上。

 

  • 评测不同算法的优势,所以应该先对两个线上的算法进行良好的评测;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值