几年前,推荐系统才刚刚开始赢得他们的消费者。 在线商店正在积极使用推荐算法,根据他们的购物历史为其客户提供越来越多的新产品。
在客户服务中,推荐系统不久前就变得很重要。 由于所提供内容的增加,客户开始迷失在需要观看的内容,地点和时间的信息流中。 付费电视运营商和在线电影院让视频内容爱好者感到头疼。

作为解决永恒的问题“看什么?”的有效途径 推荐系统已经出现,它们基于特定的数学模型工作。
两年前,我们引入了推荐系统,随后对其进行了编辑选择,并在销售和使用我们的服务期间都产生了明显的影响。
什么是推荐系统
推荐系统是您要看的东西,但不知道确切的地方时,电视会非常成功地猜出您的偏好。 这是一种内容过滤,可根据喜好和用户行为分析选择电影和电视节目。 操作员使用的系统应预测观众对特定元素的反应,并提供他可能喜欢的内容。
对推荐系统进行编程时,将使用三种主要方法:协作过滤,基于内容的过滤和专家系统(基于知识的系统)。
协作过滤基于三个阶段:收集用户信息,构建用于计算关联的矩阵以及发布可靠的建议。
Netflix使用的Cinematch是协作过滤的一个很好的例子。 用户显式或隐式地给观看的电影给予评级,并且在考虑到他们的用户评级和其他观众的评级的同时形成推荐。 为此,系统会选择具有相似偏好的用户,这些用户的评分接近他们自己的评分。 根据此圈子的意见,将自动为观众提供推荐:观看特定电影。
当然,为了最大程度地发挥推荐系统的作用,累积和收集的数据起着根本性的作用。 有关特定订户消费概况的数据越多,向他发出的建议就越准确。
内容推荐系统是基于分配给每个元素的属性制定的。 如果您观看某种类型的电影,系统会自动在某些位置为您提供与您的类型接近的内容。 潘多拉网站是基于这种推荐系统的。
专家推荐系统提供的推荐不是基于评级,而是基于用户要求和产品说明之间的相似性,或者取决于用户在指定所需产品时设置的限制。 因此,这种类型的系统是唯一的,因为它允许客户端明确指出他想要什么。
专家系统在可用数据量有限的情况下最有效,而协作过滤在存在大量数据的环境中效果最佳。 但是,当数据多样化时,可以通过不同的方法解决相同的问题。 这意味着它将以多种方式最佳地组合收到的建议,从而提高整个系统的质量。
E-Contenta的这种混合系统可在我们的
WiFire TV服务中使用。 它于2016年12月投入运行和调试,并根据以下原则工作:如果系统对用户或内容了解很多,则以协作过滤算法为准。 如果内容是新内容,或者收集到的有关用户与其交互的信息不足,则可以使用内容算法根据现有元数据评估内容的相似性。
推荐算法的构建方式
为了在E-Contenta中建立个性化选择,有必要通过特定用户对该内容感兴趣的可能性来对所有可用内容进行排名。

用户的兴趣主要是在他单击向他推荐的内容时确定的,而概率被定义为单击次数与向该用户推荐该内容的次数之比。
p(点击)= N次点击/ N次显示困难在于,您需要向用户推荐他从未见过的东西,这意味着根本没有有关单击次数或印象数的数据来计算此概率。
因此,决定使用实际概率的估计值而不是实际概率,即预测值。
协作过滤器的想法很简单:
- 获取有关用户查看内容的历史数据
- 根据此数据,将用户按他们查看的内容分组
- 给定用户根据同一组中其他用户的历史数据来预测他对特定内容单元感兴趣的可能性。
因此,用户共同参与选择内容的过程。

有许多不同的方法可以实现此方法:
1.直接使用内容单元的标识符构建模型:

这种方法的缺点是模型“看不到”内容单元之间的任何链接。 例如,她的“终结者”和“终结者2”彼此之间的距离会与“外星人”和“晚安,孩子们!”一样远。 此外,矩阵本身非常稀疏(许多空单元格并有些填充)。
2.使用文章,节目或电影标题中包含的词代替标识符:

3.对于电影,演员姓名,导演姓名或IMDb的数据:

鉴于具有共同特征(具有相同导演或标题中相同词语)的内容的连接,第二和第三选项部分消除了第一种方法的缺点。 但是,矩阵的稀疏性也降低了,但是正如他们所说的,完美无极限。
在内存中保留全面的用户评分非常昂贵。 粗略估算Runet用户数量(8000万)和IMDb数据库的大小(37万张电影),我们得到所需的大小为27 TB。奇异分解是减小矩阵维数的一种方法。
大矩阵T表示为一组较小矩阵的乘积换句话说,搜索“核心”矩阵,该矩阵具有与完整矩阵相同的属性,但是要小得多。 随着尺寸的减小,放电也减小。 在本文中,我们将不涉及实现的复杂性,尤其是因为已经存在用于多种编程语言的现成库。
技术难点
冷启动当缺少新内容的数据或用户不允许提供高质量推荐时(也称为“冷启动”),这是协作过滤的典型问题。
一种解决方案是将内容的多个单元混合到建议中,而这些建议不会收集足够的数据。 同时,将最受欢迎的内容推荐给新用户。
最受欢迎的使用上述方法,重要的是不要忘记,其后果将是系统地增加推荐列表中“最受欢迎”的出现频率。 从经常被提供“最受欢迎”的用户的行为中学习,推荐器系统冒着学习专门推荐最受欢迎内容的风险。

个人推荐和最流行内容的平庸推荐之间的主要区别在于,它们考虑了个人喜好,这可能与“一般”喜好有所不同。
因此,应该对用户对用于训练推荐器模型的内容的反应样本进行标准化。
可用性,故障转移和可伸缩性资源的用户数量每秒可以为推荐系统创建成百上千的请求负载。 此外,一台或多台服务器的故障不应导致拒绝服务。
在这种情况下,经典的解决方案是使用负载平衡器,该负载平衡器将请求发送到群集服务器之一。 另外,每个服务器都能够处理传入的请求。 如果集群中的任何服务器发生故障,平衡器会自动将负载切换到系统中剩余的服务器。 通过选择HTTP作为传输协议,我们可以使用Nginx作为负载平衡器。
随着资源受众的增长,群集中的服务器数量也会增加。 在这种情况下,将准备新服务器的成本降至最低非常重要。
推荐系统需要安装其功能依赖的许多组件。 Docker用于自动执行带有所有依赖项的推荐系统的部署。
Docker允许您收集所有必要的组件,将它们“打包”成一个映像,然后将该映像放入存储库(注册表)中,然后在几分钟之内将其下载并部署到新服务器上。 Docker的一个重要优点是使用时的“开销”极小:与在常规操作系统中运行的应用程序相比,Docker容器中应用程序的调用时间增加了几纳秒。
另一个重要的优点是能够在发生新故障时快速返回到应用程序的先前稳定版本(只需从注册表中获取旧版本)。
您需要处理的第二种系统请求是跟踪用户活动的请求。 为了使用户不必等到系统完全处理他执行的动作后,便执行处理过程,而与记录动作的过程无关。
Apache Kafka被E-Contenta选为平台,该平台可将用户操作的数据传输到处理器。 Kafka实现了架构模式“面向消息的中间件”,该模式能够保证每秒发送数以十万计的消息,并充当缓冲区来保护处理器在高峰时间免受过多数据的侵害。
完整的自学新内容和新用户会定期出现-未经定期培训,模型的质量会下降。 培训应在单独的服务器上进行,以免需要大量计算资源的培训过程不会影响战斗服务器的性能。
Jenkins是编排常规分布式任务的经典解决方案。 计划的服务开始接收新培训样本并对其进行标准化,培训推荐模型,提供新模型并更新所有群集服务器,从而无需额外努力即可保持推荐质量。 如果任何步骤发生故障,Jenkins都会独立地将系统恢复到之前的稳定状态,并通知管理员故障。
关于我们如何在WifireTV上实现它
另外,为了使系统正常工作,我们邀请了一个独立的电视仪表,并请他测量订户的电视广播。 使用数据科学算法对生成的唯一数据进行动画处理。 来自订户的持续工作反馈与建议进行交互,填补了机器学习算法的先例基础,并允许根据订户喜好的更改的隐含迹象(例如一年中的时间,临近的假期或家庭组成的更改)来更改建议。

在测试过程中,我们必须解决与电视内容推荐相关的问题-如何帮助订户了解广播流。 推迟的观看服务也使任务变得复杂。 我们构建了一个系统,该系统代替了无穷循环循环切换,仅需按2-3个按钮,即可帮助您找到有趣的程序。 为此,推荐系统监视新系列节目的发行,并预测观众对不规则节目和电影广播的兴趣。 实际上,机器算法取代了负责的编辑器的工作。

流电视的工作有其自身的特点。 例如,相同的热门电视节目通常在不同的频道上播放。 在这种情况下,推荐系统必须了解信息的重复,并根据订户对频道,传输开始时间等的偏好来选择推荐。 当订户订阅了SD和HD版本的频道时,也会发生这种信息重复。
在过去的两年中,我们尝试了不同版本的推荐系统,并找到了中间立场,这使我们能够提高受众参与度并更有效地利用现有内容获利。 我们使用上述建议的自动选择以及手动调整-编辑选择。
这种方法可以显着(10倍)提高VOD和SVOD服务的获利能力。
编辑推荐是与备受瞩目的首映,假期和令人难忘的日期相关的主题电影和系列作品集。 通知订阅者很方便,让他们有机会观看新电影,热门歌曲或不受欢迎的电影,但我们认为在内容和情节上非常有趣的电影。 我们与供应商紧密联系(在线电影院和其他视频服务,例如ivi,megogo,amediateka),并亲自选择每部对我们的订户而言都很有趣的电影。
在假期,我们会根据特定主题进行特殊选择。 例如,在胜利纪念日,这些都是军事题材的电影。 9月1日-精选儿童内容,包括教育计划,动画片和纪录片。
手动选择可以完美提高订户的忠诚度。 根据我们最保守的估计,我们推荐的订阅者每月观看电影的大约10%,而且该指标还在不断增长。
结果如何?
Wifire TV当前正在运行E-Contenta的智能推荐系统。 它基于运营商90%的订户的数据科学和元数据。 该算法考虑了数百个数据:订户正在观看什么,哪些电影和节目受欢迎,何时使用该服务以及现在谁在屏幕前。 我们想向我们的订户传达订阅高级频道套餐的价值,将它们混合成与用户相关的推荐。 我们还想证明获取和观看合法视频内容是正常,方便和简单的。
推荐系统将告诉订户有趣的电影,即使它们早已不在新产品类别之内:因此,广泛的视频目录不再是尘土飞扬的图书馆,而是成为一个交互式展示,可以灵活地适应订户的品味和心情。