推荐系统之眼

简介: 这半个月除了工作上的事,一直忙于学习机器学习基础理论,每天背着四五本书上下班,还蛮有读书时的感觉。之前写了一篇文章,叫基于用户画像的实时异步化视频推荐系统,应该说只是完成了一个心脏,整个数据集经过心脏的起博,开始流动起来,并且能够对外提供服务。
前言
这半个月除了工作上的事,一直忙于学习机器学习基础理论,每天背着四五本书上下班,还蛮有读书时的感觉。之前写了一篇文章,叫 基于用户画像的实时异步化视频推荐系统,应该说只是完成了一个心脏,整个数据集经过心脏的起博,开始流动起来,并且能够对外提供服务。然而此时的系统依然是瞎的,我们不知道它的效果如何,给我们带来了什么收益,会不会出现糟糕的推荐结果,以及我们有没有途径按照自己的想法去调教它。

我们不仅仅希望算法工程师,研发工程师能了解推荐系统的状态,影响推荐系统的效果,我们还希望客户,运营人员也有能力去了解并且影响它。

所以一个强大的推荐系统后台是极其重要的,如果没有他,真个推荐系统就是一个瞎子,并且是不受控制的。


指标体系
整个后台由四部分组成:
  1. 转化率指标
  2. 覆盖率指标
  3. 元信息管理
  4. 系统状态监控

这四个模块分别是解决什么问题的呢?


转化率指标
这个是衡量推荐系统效果的。推荐系统衡量的核心标准是,我给你推荐的,你会不会进行点击。当然,不同场景可能要求是不一样的,比如电商可能核心的效果是购买转化率。以点击曝光转化率为例,我们会计算每个五分钟的值,从而形成一个点击转化率曲线,可以看到趋势。点击转化率是如何计算的呢?点击转换率通常是针对一个推荐位而言的,当然我们也可以计算总的效果。
  • 点击曝光转化率 = 一个统计时间区间内,点击数/曝光次数
  • 曝光次数 = 一个统计时间区间内,视频被曝光的次数
  • 点击数 = 一个统计时间区间内,视频被点击的次数
这里都不会进行去重,并且都指的是某一推荐位。

除了这个,比较重要的还有 用户转化率。另外,我们知道,一个页面假设是一个城市,每一个栏目块就像一个商圈了。不同商圈的流量差异是比较大的,有一个指标叫 曝光推荐转化率 可以衡量是不是有异常情况发生,比如在一个热门的城市,接口请求量可能特别大,但是发现曝光率却很小,那么可能是这个推荐位落在了一个流量非常小的商圈里,比如可能在页面某个疙瘩处。这个指标可以帮助我们校正产品的一些问题。否则流量那么小,你推荐效果再好,也起不到太大作用。
  • 曝光推荐转化率 = 一个统计时间区间内,视频曝光次数/视频推荐数次数

其中食品推荐数来源接口层的日志。


覆盖率指标
如果我们只推热门的视频,转化率肯定应该是不错的。然而互联网的一个典型情况是,长尾视频的流量之和可能大于一些热门的视频流量之和。当然这个结论目前我也没有数据去证实,搜搜的一个LDA 系统(peacock),说是能覆盖百万的主题,长尾的搜索词产生的流量其实大于一些热门搜索词的流量之和的,我想这个应该是可以顺延到很多场景中。

既然是千人千面的推荐,也就是大致大家看到的都是自己喜欢的,重叠度理论上不应该太高。这个时候说明我们的推荐出去的视频要覆盖相当一部分媒资里的视频。我们做了一个新的指标定义:
  • 推荐覆盖率 = 一个统计时间区间内,总推荐视频数/总视频数
如果真的达到了千人千面的推荐,那么这个指标应该是比较高的。结合前面的点击曝光转化率,如果也不错,那么整个效果就比较完美了。

此外还有曝光覆盖率等指标,新视频覆盖率,用户覆盖率等各种指标。


元信息管理
推荐系统应该是个可以由运营人员来tunning的一个系统。我们将推荐算法,程序计算周期等各种参数暴露给到后台,抽象成元信息管理。通过调整这些参数,我们不但可以让算法研发去调整,还可以让运营充分利用自己的经验,还有结合我们前面各种转化率指标,覆盖率指标,制定更加合理的规则。

比较典型的是,各个候选集的大小,用户私有队列的大小以及生存周期,每个算法的每次请求可吐出的数据的数量等。

另外在该界面,你可以做数据探索,获得包括一个视频的访问人数或者一个用户的访问轨迹等。这个主要是我们会将用户行为存储到ES里,借助ES-SQL和Spark-SQL我们可以做非常大规模的探索式查询。

以前我也不相信一个推荐系统是可以tunning的,他应该完全依赖于研发和算法工程师。但是之前和一个做搜索的人接触,他在美国两家知名的搜索服务提供商工作过,对方的搜索系统抽象做的非常好,售后支持可以无需通过编程,和客户一起当场tunning搜索结果,直到客户满意。推荐系统也是一个高度成熟和经过实践的系统,能做到和我刚刚描述的那样,算是一个较高的境界了吧。


系统状态监控
按之前在基于用户画像的实时异步化视频推荐系统的描述,其实我们推荐系统分成了三大部分:
  1. 计算/推荐引擎,由众多的spark 批处理和流式任务组成,也包括一些存储引擎,包括HDFS,ElasticSearch,HBase,Redis Cluster(其实是Codis)等。
  2. API服务,单独的无状态可实现负载均衡的接口服务。主要功能是操作Redis队列。
  3. 后台服务。后台服务包括前面的两个指标体系,一个原信息管理,还有就是这个系统状态监控。其实还有一个,就是一个模拟服务,在该页面上你可以看到一个推荐位,并且选定一个虚拟用户,你的包括点击行为都会在该页面看得到。包括短期兴趣模型等实施的变化情况。
当然,这里的后台服务其实就是我这篇文章的主角,我们称为推荐之眼。

在后台,我们还可以看到计算/推荐引擎的工作状态是不是正常。这个主要针对 计算/推荐引擎模块。以为这些模块是有若干个逻辑上有依赖的任务组成,我们可以在后台的系统状态监控模块看到这些任务是不是都按预期的运行了。并且结合前面的指标体系,我们也能看出 API服务是不是正常的服务。


结束语
后台的开发成本其实远远高于推荐系统对外的功能。考验我们对推荐系统有更好的理解和抽象能力。

目录
相关文章
|
1月前
|
机器学习/深度学习 人工智能 搜索推荐
协同过滤算法:个性化推荐的艺术与科学
协同过滤算法:个性化推荐的艺术与科学
协同过滤算法:个性化推荐的艺术与科学
|
机器学习/深度学习 搜索推荐 自然语言处理
KDD 2019 | 基于知识的个性化推荐理由生成解析
当前电商场景之下,单纯的商品推荐已不足以满足用户需求,基于内容的推荐应运而生。那么其中的关键问题就是我们要为推荐的商品产出优质的推荐理由,从而可以:帮助消费者做出选择;开拓用户对商品的兴趣;引导多种产品以提高多样性。
3218 0
|
4月前
|
机器学习/深度学习 搜索推荐 大数据
[机器学习]电影推荐系统设计(五)
[机器学习]电影推荐系统设计(五)
56 0
|
10月前
|
机器学习/深度学习 搜索推荐 算法
基于协同过滤的旅游推荐系统设计与实现(论文+源码)_kaic
摘要:旅游已经成为了大众节假日放松的主要方式,但因为不熟悉旅游地点带来的选择困难却是不可避免的。随着旅游业的发展旅游行业越来越信息化,用户获取旅游景点信息更加方便。然而,用户在选择旅游目的地时,往往会面对海量的景点信息,这导致他们难以找到适合自己的景点,同时也费时费力 。数量众多的旅游景点存在着信息过载现象且日益严重,用户在网上查找时很难真正搜索到自己感兴趣的旅游景点,对此推荐系统是一种行之有效的解决方法。目前推荐系统已在电影、新闻、音乐、电子商务等方面应用广泛,但在旅游领域还未广泛使用。各大旅游网站多是提供信息查询及订票服务,因此本文将协同过滤算法应用于旅游景点的推荐。
|
机器学习/深度学习 搜索推荐 算法
推荐系统[八]算法实践总结V0:腾讯音乐全民K歌推荐系统架构及粗排设计
推荐系统[八]算法实践总结V0:腾讯音乐全民K歌推荐系统架构及粗排设计
推荐系统[八]算法实践总结V0:腾讯音乐全民K歌推荐系统架构及粗排设计
|
算法 搜索推荐 前端开发
基于协同过滤算法的医学新闻推荐系统
该系统基于协同过滤算法,技术采用SSM整合,mysql数据库,数据库表结构适量,具有完整的业务逻辑,系统主要分为2个角色,分别为用户和管理员,算法核心为找到与目标用户兴趣相似的用户集合,然后找到这个集合中用户喜欢的、并且目标用户没有听说过的新闻推荐给目标用户,详细功能请看演示视频。
基于协同过滤算法的医学新闻推荐系统
|
机器学习/深度学习 搜索推荐 算法
|
机器学习/深度学习 搜索推荐 算法
|
机器学习/深度学习 人工智能 编解码
这是什么选秀节目?数百万人看后想学「机器学习」
这是什么选秀节目?数百万人看后想学「机器学习」
171 0
这是什么选秀节目?数百万人看后想学「机器学习」
|
机器学习/深度学习 SQL 分布式计算
当推荐遇到社交:美图的推荐算法设计优化实践
本文是美图高级算法专家汤斌的一篇文章,重点介绍了社交网络背景下推荐算法面临的挑战,以及应对的方法。
247 0
当推荐遇到社交:美图的推荐算法设计优化实践