# 利用上下文信息 ## 概述 - 在对用户进行推荐时,用户所处的空间与时间会对用户的喜好产生影响。例如,最经典的例子,如果当前季节是冬天,推荐系统不应该给用户推荐短袖。这就是一个很经典的时间上下文。同样能被成为上下文信息的包括但不限于,心情,地点等能描述用户当前状态的信息。利用这些上下文信息,我们能将推荐系统的推荐更加精确。 - 将重点讨论基于时间上下文信息的推荐系统 ## 时间上下文 ### 时间信息效应 - 时间信息对于用户的的影响可以主要分为以下几项: - **用户的兴趣是变化的** 对于一个用户,其幼年时期和青年时期喜欢的动画片是不一样的;晴天和雨天想要的物品是不一样的;一个人开始工作前和开始工作后的需求也是不同的。 所以应该关注用户的近期行为,确定他的兴趣,最后给予用户推荐。 - **物品具有生命周期** 流行物品会随着热度持续火爆一段时间,但最终会无人问津;生活必需品无论在什么时候都有稳定的需求量。 - **季节效应** 正如概述中列出的冬衣与夏衣的区别,应该在合适的季节给用户推荐合适的物品。 ### 系统时间特性分析 - 当系统由之前的静态系统变成随时间变化的时变系统后,需要关注特性也会发生变化,则需要重新观测一些数据,以推断系统的关于时间变化的特性。 下面是一些可以用来观测的数据: - **确定系统的用户增长数**,以判断系统的增长情况或是衰退情况。 - **物品的平均在线天数**,即将满足用户物品互动次数的物品标记为在线,测算物品的平均在线天数以标量物品的生命周期。 - 系统的时效性,判断**相隔一段时间的物品流行度向量的相似度**,若是相隔一段时间的相似度仍然较大,说明经过一段时间后,该物品还是被大众喜欢,则说明这件物品具有持久流行性。而对于系统来说,若是系统中大量物品的相似度变化都不大,则说明这个系统是一个推荐热度较持久物品的系统,说明系统的时效性较弱。 - 系统对于用户的黏着性,统计**用户的平均活跃天数**,或者计算**相隔一段时间的用户活跃度**,以此判断系统对于用户的留存力或者说黏着性。 ### 推荐系统的实时性 - 当引入了时间上下文信息后,推荐系统就可以进行实时性推荐,就类似于观看完一个视频后,立马弹出一系列的相关推荐列表“猜你想看”,存在这样特性的推荐系统有如下的特征: - 实时推荐系统能根据用户的行为,实时计算推荐列表,而不是像之前所说的离线计算推荐列表。 - 推荐系统需要平衡用户短期行为和长期行为,用户的推荐列表需要体现其短期的兴趣变化,但是推荐列表的又不能完全受用户近期行为影响,需要保证推荐列表预测的延续性。 ### 推荐算法的时间多样性 - 想象这样一种情况,现在有 ABC 三个系统,A 系统为您推荐您最感兴趣的十样物品,但是不会更新。B 系统为您推荐一百样物品中的十样物品,推荐间隔一周,一周之后的榜单有七件不会是这周的物品。C 系统随机为您推荐一百样物品中的十样物品。 用推荐系统的思想分析上述三个系统:A 系统缺乏了随时间变化的推荐多样性,所以用户对于其满意度会随着时间推移而下降;B 系统兼顾了时间变化和推荐精度,会得到用户较高的好评;C 系统则是过于随机导致推荐精度下降。 综上,时间多样性会提高用户的满意度,所以如何在确保精度的条件下提高系统的时间多样性呢? - **需要用户在有新行为时,更新推荐列表** 传统的离线更新的推荐系统无法满足需求,所以需要使用实时推荐系统。 - **需要用户在没有新行为的时候,经常变化推荐列表** 通常采取以下三种方法: - 生成推荐列表时加入一定的随机性。 - 记录用户每天得到的推荐列表,在一段时间后,降低列表中用户未出现过行为的物品的权重。 - 每次给用户使用不同的推荐算法。 当然,对于推荐系统来说,推荐准度的重要性要大于时间多样性,所以应该在尽量保证准度的基础上强化实践多样性,而这个强化的程度,则需要对推荐系统进行多次实验得到。 ### 时间上下文推荐算法 - **最近最热门** 一种最朴素的思想, 在系统引入了时间信息之后,最简单的非个性化推荐算法就是给用户推荐最近最热门的物品。 给定时间 T,物品 i 在最近的流行度可定义为: $$ n_i(T)= \sum_{(u,i,t) \in Train ,t