第9章 基于时空信息的推荐 --- 通俗讲解
对应教材:刘宏志《推荐系统》第9章(PDF:
推荐算法.pdf,目录见toc.json,PDF 页 158--174 ≈ 书页 147--163)前置章节:第8章情境感知(时间/位置是情境中最常见两类)
后续章节:第10章社交关系、第11章异质信息网络
经典参考:Koren (2009) 时间效应;Rendle et al. (2010) FPMC;Hidasi et al. (2016) Session-based RNN
章节目录速览
| 节 | 标题 | PDF 页 |
|---|---|---|
| 9.1 | 基于时间信息的推荐 | 147 |
| 9.1.1 | 最近最热门推荐算法 | 148 |
| 9.1.2 | 基于时间的项目协同过滤 | 148 |
| 9.1.3 | 基于时间的用户协同过滤 | 149 |
| 9.1.4 | 基于会话的推荐 | 150 |
| 9.2 | 基于序列感知的推荐 | 151 |
| 9.2.1 | 基于马尔可夫模型的序列预测 | 152 |
| 9.2.2 | 基于循环神经网络的序列预测 | 153 |
| 9.2.3 | 基于注意力机制的序列预测 | 157 |
| 9.3 | 基于空间信息的推荐 | 160 |
| 9.3.1 | 位置信息的获取与推理 | 161 |
| 9.3.2 | 基于位置信息的推荐 | 161 |
| 9.3.3 | 融合其他信息的推荐 | 163 |
| 习题 | --- | 163 |
一、先搞懂:第9章在讲什么?
第8章给出了通用情境感知框架 ;第9章聚焦两类最好获取、最常用的情境:
| 维度 | 典型数据 | 核心问题 |
|---|---|---|
| 时间 | 时间戳、会话、行为序列 | 用户口味会变;物品有生命周期 |
| 空间 | GPS、驻留点、POI | 同一人换地点,需求就变 |
生活类比:第8章讲「要考虑情境」;第9章讲「时间和位置这两类情境,具体怎么建模」。
#mermaid-svg-LzVnk7ZW4a4M6tJa{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-LzVnk7ZW4a4M6tJa .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-LzVnk7ZW4a4M6tJa .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-LzVnk7ZW4a4M6tJa .error-icon{fill:#552222;}#mermaid-svg-LzVnk7ZW4a4M6tJa .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-LzVnk7ZW4a4M6tJa .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-LzVnk7ZW4a4M6tJa .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-LzVnk7ZW4a4M6tJa .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-LzVnk7ZW4a4M6tJa .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-LzVnk7ZW4a4M6tJa .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-LzVnk7ZW4a4M6tJa .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-LzVnk7ZW4a4M6tJa .marker{fill:#333333;stroke:#333333;}#mermaid-svg-LzVnk7ZW4a4M6tJa .marker.cross{stroke:#333333;}#mermaid-svg-LzVnk7ZW4a4M6tJa svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-LzVnk7ZW4a4M6tJa p{margin:0;}#mermaid-svg-LzVnk7ZW4a4M6tJa .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-LzVnk7ZW4a4M6tJa .cluster-label text{fill:#333;}#mermaid-svg-LzVnk7ZW4a4M6tJa .cluster-label span{color:#333;}#mermaid-svg-LzVnk7ZW4a4M6tJa .cluster-label span p{background-color:transparent;}#mermaid-svg-LzVnk7ZW4a4M6tJa .label text,#mermaid-svg-LzVnk7ZW4a4M6tJa span{fill:#333;color:#333;}#mermaid-svg-LzVnk7ZW4a4M6tJa .node rect,#mermaid-svg-LzVnk7ZW4a4M6tJa .node circle,#mermaid-svg-LzVnk7ZW4a4M6tJa .node ellipse,#mermaid-svg-LzVnk7ZW4a4M6tJa .node polygon,#mermaid-svg-LzVnk7ZW4a4M6tJa .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-LzVnk7ZW4a4M6tJa .rough-node .label text,#mermaid-svg-LzVnk7ZW4a4M6tJa .node .label text,#mermaid-svg-LzVnk7ZW4a4M6tJa .image-shape .label,#mermaid-svg-LzVnk7ZW4a4M6tJa .icon-shape .label{text-anchor:middle;}#mermaid-svg-LzVnk7ZW4a4M6tJa .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-LzVnk7ZW4a4M6tJa .rough-node .label,#mermaid-svg-LzVnk7ZW4a4M6tJa .node .label,#mermaid-svg-LzVnk7ZW4a4M6tJa .image-shape .label,#mermaid-svg-LzVnk7ZW4a4M6tJa .icon-shape .label{text-align:center;}#mermaid-svg-LzVnk7ZW4a4M6tJa .node.clickable{cursor:pointer;}#mermaid-svg-LzVnk7ZW4a4M6tJa .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-LzVnk7ZW4a4M6tJa .arrowheadPath{fill:#333333;}#mermaid-svg-LzVnk7ZW4a4M6tJa .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-LzVnk7ZW4a4M6tJa .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-LzVnk7ZW4a4M6tJa .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-LzVnk7ZW4a4M6tJa .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-LzVnk7ZW4a4M6tJa .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-LzVnk7ZW4a4M6tJa .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-LzVnk7ZW4a4M6tJa .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-LzVnk7ZW4a4M6tJa .cluster text{fill:#333;}#mermaid-svg-LzVnk7ZW4a4M6tJa .cluster span{color:#333;}#mermaid-svg-LzVnk7ZW4a4M6tJa div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-LzVnk7ZW4a4M6tJa .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-LzVnk7ZW4a4M6tJa rect.text{fill:none;stroke-width:0;}#mermaid-svg-LzVnk7ZW4a4M6tJa .icon-shape,#mermaid-svg-LzVnk7ZW4a4M6tJa .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-LzVnk7ZW4a4M6tJa .icon-shape p,#mermaid-svg-LzVnk7ZW4a4M6tJa .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-LzVnk7ZW4a4M6tJa .icon-shape .label rect,#mermaid-svg-LzVnk7ZW4a4M6tJa .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-LzVnk7ZW4a4M6tJa .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-LzVnk7ZW4a4M6tJa .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-LzVnk7ZW4a4M6tJa :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 第8章 情境感知框架
第9章 时间+空间专章
9.1~9.2 时间: 衰减/会话/序列
9.3 空间: LBS/距离重排
新闻/电商/会话推荐
外卖/到店/LBS
二、9.1 基于时间信息的推荐
2.1 为什么时间重要?
- 易获取:系统时钟、交易时间戳即可。
- 时间效应 :用户兴趣随成长、经历变化;近期行为更能反映当前偏好。
- 物品生命周期:新闻/促销/职位有效期短;T 恤夏天热、羽绒服冬天热。
- 平衡 :既要抓短期偏好 ,也要保留长期偏好连续性。
时间信息的三种建模视角(教材):
| 视角 | 做法 | 对应小节 |
|---|---|---|
| 时间分片 | 连续时间离散化(早/中/晚) | 可用第8章预/后过滤 |
| 时间间隔 | 用「距现在多久」做衰减权重 | 9.1.1~9.1.3 |
| 时间有序性 | 行为顺序本身有规律(先主机后配件) | 9.2 序列感知 |
2.2 9.1.1 最近最热门推荐
思路 :不看用户历史,只看当前什么最火------新闻、论坛常用。
热度公式(式 9-1):
ni(T)=∑(u,i,t)∈Train, t<T11+α(T−t)n_i(T) = \sum_{(u,i,t) \in \text{Train},\, t < T} \frac{1}{1 + \alpha(T - t)}ni(T)=(u,i,t)∈Train,t<T∑1+α(T−t)1
- (T):当前时刻;(t):历史交互时刻。
- (\alpha):时间衰减系数;越近的行为贡献越大。
| 优点 | 缺点 |
|---|---|
| 解决用户冷启动(新用户也能推) | 物品冷启动(新物品无历史) |
| 实现极简 | 无个性化(所有人同一榜单) |
2.3 9.1.2 基于时间的项目协同过滤
在 Item-CF 相似度里加入**「两物品被同一用户交互的时间间隔」**。
标准 Item 相似度(式 9-2):
wij=∣N(i)∩N(j)∣∣N(i)∣⋅∣N(j)∣w_{ij} = \frac{|N(i) \cap N(j)|}{\sqrt{|N(i)| \cdot |N(j)|}}wij=∣N(i)∣⋅∣N(j)∣ ∣N(i)∩N(j)∣
加时间衰减(式 9-4、9-5):
wij=∑u∈N(i)∩N(j)f(∣tui−tuj∣)∣N(i)∣⋅∣N(j)∣w_{ij} = \frac{\sum_{u \in N(i) \cap N(j)} f(|t_{ui} - t_{uj}|)}{\sqrt{|N(i)| \cdot |N(j)|}}wij=∣N(i)∣⋅∣N(j)∣ ∑u∈N(i)∩N(j)f(∣tui−tuj∣)
f(∣tui−tuj∣)=11+α∣tui−tuj∣f(|t_{ui} - t_{uj}|) = \frac{1}{1 + \alpha |t_{ui} - t_{uj}|}f(∣tui−tuj∣)=1+α∣tui−tuj∣1
直觉 :用户几乎同时买/点的两件商品,更可能相似(如手机 + 手机壳)。
兴趣预测(式 9-3、9-6):
p(u,i)=∑j∈N(u)∩S(i,k)wij⋅ruj1+β∣t0−tuj∣p(u, i) = \sum_{j \in N(u) \cap S(i,k)} w_{ij} \cdot \frac{r_{uj}}{1 + \beta |t_0 - t_{uj}|}p(u,i)=j∈N(u)∩S(i,k)∑wij⋅1+β∣t0−tuj∣ruj
- 用户最近交互过的物品,对当前推荐权重更高。
2.4 9.1.3 基于时间的用户协同过滤
对称地,在 User-CF 里:同一用户对两件物品打分/交互的时间越接近,两用户越相似。
用户相似度(式 9-7):
wuv=∑i∈N(u)∩N(v)11+α∣tui−tvi∣∣N(u)∣⋅∣N(v)∣w_{uv} = \frac{\sum_{i \in N(u) \cap N(v)} \frac{1}{1 + \alpha |t_{ui} - t_{vi}|}}{\sqrt{|N(u)| \cdot |N(v)|}}wuv=∣N(u)∣⋅∣N(v)∣ ∑i∈N(u)∩N(v)1+α∣tui−tvi∣1
兴趣预测(式 9-8):
p(u,i)=∑v∈S(u,k)wuv⋅rvi1+β∣t0−tvi∣p(u, i) = \sum_{v \in S(u,k)} w_{uv} \cdot \frac{r_{vi}}{1 + \beta |t_0 - t_{vi}|}p(u,i)=v∈S(u,k)∑wuv⋅1+β∣t0−tvi∣rvi
小结 9.1.1~9.1.3 :都假设「时间间隔越短 → 影响越大 」,但未建模行为的连续性(一条行为链)→ 引出会话与序列。
2.5 9.1.4 基于会话的推荐
会话(Session) :有明确起止的一串行为(一次登录到退出、一次购物流程)。用会话切分时间,解决兴趣漂移。
图 9-1 网络模型:三类节点
| 节点 | 含义 |
|---|---|
| 用户 (U) | 长期偏好 |
| 会话 (S) | 短期偏好(某次访问) |
| 物品 (I) | 被交互对象 |
- (N(u)):用户长期连过的物品
- (N(u,t)):会话 (session(u,t)) 内的物品
边权(式 9-9):
w(v,v′)={1,v∈U∪S, v′∈Iηu,v∈I, v′∈U(长期)ηs,v∈I, v′∈S(短期)w(v,v') = \begin{cases} 1, & v \in U \cup S,\, v' \in I \\ \eta_u, & v \in I,\, v' \in U \quad \text{(长期)} \\ \eta_s, & v \in I,\, v' \in S \quad \text{(短期)} \end{cases}w(v,v′)=⎩ ⎨ ⎧1,ηu,ηs,v∈U∪S,v′∈Iv∈I,v′∈U(长期)v∈I,v′∈S(短期)
(\eta_u, \eta_s) 调节长/短期影响力。之后可用第2章随机游走/物质扩散算用户--物品相关度;会话--物品二部图上也可用余弦相似度(式 9-10)。
三、9.2 基于序列感知的推荐
用户行为是有序时间序列;要预测「下一步会点什么」。
| 方法 | 记忆 | 代表 |
|---|---|---|
| 马尔可夫 | 只看最近 1 步(或有限步) | FPMC |
| RNN/LSTM/GRU | 隐状态传递全历史 | Session-RNN |
| 注意力 | 从历史中「挑选」相关步 | NARM、Transformer |
3.1 9.2.1 马尔可夫模型
购物篮 (B_t) :时刻 (t) 用户一次交互可能含多个物品(集合 (\subseteq I))。
简化 :不建 (2^{|I|} \times 2^{|I|}) 的篮--篮转移,而建物品--物品转移(式 9-11~9-13):
al,i=p(i∈Bt∣l∈Bt−1)a_{l,i} = p(i \in B_t \mid l \in B_{t-1})al,i=p(i∈Bt∣l∈Bt−1)
a^l,i=∣{(Bt,Bt−1):i∈Bt∧l∈Bt−1}∣∣{(Bt,Bt−1):l∈Bt−1}∣\hat{a}{l,i} = \frac{|\{(B_t,B{t-1}): i \in B_t \wedge l \in B_{t-1}\}|}{|\{(B_t,B_{t-1}): l \in B_{t-1}\}|}a^l,i=∣{(Bt,Bt−1):l∈Bt−1}∣∣{(Bt,Bt−1):i∈Bt∧l∈Bt−1}∣
p(i∈Bt∣Bt−1)=1∣Bt−1∣∑l∈Bt−1p(i∈Bt∣l∈Bt−1)p(i \in B_t \mid B_{t-1}) = \frac{1}{|B_{t-1}|} \sum_{l \in B_{t-1}} p(i \in B_t \mid l \in B_{t-1})p(i∈Bt∣Bt−1)=∣Bt−1∣1l∈Bt−1∑p(i∈Bt∣l∈Bt−1)
个性化转移矩阵 (A^u)(式 9-14~9-16):每个用户一张 (|I| \times |I|) 矩阵 → 堆成三维张量 (\mathcal{A} \in 0,1^{|U| \times |I| \times |I|}),MLE 易过拟合 → 张量分解。
FPMC(Factoring Personalized Markov Chains):
x^u,t,i=⟨vuU,I,viI,U⟩+1∣Bt−1u∣∑l∈Bt−1u⟨vlL,I,viI,L⟩\hat{x}{u,t,i} = \langle v_u^{U,I}, v_i^{I,U} \rangle + \frac{1}{|B{t-1}^u|} \sum_{l \in B_{t-1}^u} \langle v_l^{L,I}, v_i^{I,L} \ranglex^u,t,i=⟨vuU,I,viI,U⟩+∣Bt−1u∣1l∈Bt−1u∑⟨vlL,I,viI,L⟩
- 第一项:长期用户--物品偏好(类似 MF)
- 第二项:短期上一篮物品 (l) 对下一物品 (i) 的转移
用 S-BPR(式 9-22~9-24)优化排序,与第7章 BPR 一脉相承。
数据稀疏 :标准马尔可夫链可 Skipping------从 ((a,b,c)) 推断 ((a,c)) 等跳步序列。
3.2 9.2.2 循环神经网络(RNN)
图 9-3:RNN 在时间上展开;(h_t = g(x_t U + h_{t-1} W + b_h))(式 9-26)。
| 环节 | 做法 |
|---|---|
| 输入 | 点击序列 One-Hot:第 (i) 位为 1 表示点了物品 (i) |
| 输出 | 长度 (n) 的概率向量:下一步各物品被点击概率 |
| 训练 | SGD + BPTT |
问题 :长序列 → 梯度消失/爆炸 → 用 LSTM / GRU(图 9-4:输入门、遗忘门、输出门)。
3.3 9.2.3 基于注意力机制
RNN 的局限 :历史物品等权 压缩进 (h_t);无关行为会稀释关键信号。
例子 :智能表 → 手机 → 电脑 → 鼠标;下一步应是手机壳(因手机),但 RNN 把四件混成一团。
注意力(图 9-5、9-6)三阶段:
- 相似度:(s_i = f(Q, K_i))(点积或 MLP)
- 归一化:(a_i = \text{softmax}(s_i))
- 加权求和:(\text{Attention_Value} = \sum_i a_i \text{Value}_i)
记忆网络序列推荐(图 9-7):
- 历史物品嵌入存入记忆 (M^u)
- 候选物品 (q_i) 通过 READ 得到短期表示 (p_u^m)
- 与长期特征 (p_u^s) 合并:(P_u = p_u^s + \alpha p_u^m)
- (\hat{y}_{ui} = \text{PREDICT}(P_u, q_i))
自注意力 + 位置编码:Query/Key/Value 同源;加 (P_1, P_2, \ldots) 保留顺序(Transformer/BERT 思路)。
四、9.3 基于空间信息的推荐
4.1 为什么位置重要?
- 同区域用户可能口味相近(文化/环境)
- 不同区域偏好不同
- 同一人 换地点需求也变:上海用户在北京西单 → 推西单附近餐厅,而非上海常去店
4.2 9.3.1 位置获取与驻留点
| 方式 | 示例 |
|---|---|
| 隐式 | 手机 GPS(最常用) |
| 推理 | 基站、IP、社交签到、刷卡商户位置 |
| 显式 | 用户手动选区域 |
驻留点(Stay Point):轨迹 (p_1 \to \cdots \to p_n) 中,连续点距离 (< \delta) 且停留时间 (> \tau) 的子轨迹------比「路过」更能反映意图(逛商场/公园/景点,图 9-8)。
4.3 9.3.2 基于位置的推荐(LBS)
两个基本假设:
- 区域性偏好:同区域用户兴趣可能相似
- 局部移动 :用户倾向在附近消费,不会为午餐飞回千里之外
与第8章三种融合方式对应:
| 方法 | 空间场景做法 |
|---|---|
| 预过滤 | 按城市/网格/金字塔层级(图 9-9)切数据再 CF;TBHG 对驻留点层次聚类(图 9-10) |
| 后过滤 | 先全局推荐,再按距离重排:(p'(u,i) = p(u,i) / \text{dist}(l_u, l_i)) |
| 情境建模 | 坐标/场景状态入 FM、张量分解等 |
层次泛化:街道 → 区县 → 城市 → 省 → 国,缓解稀疏(与第8章树层次同思路)。
4.4 9.3.3 融合其他信息
- 时间 + 空间:活动/新闻/路线推荐------过期活动、远距离活动都无效
- 路线推荐:空间 + 时间 + 天气 + 路况;可用 9.2 序列模型建模轨迹
- 社交 + 空间:推朋友感兴趣的活动;GPS + Wi-Fi SSID 推断同事/室友关系
五、方法对比与选型
| 场景 | 推荐方法 |
|---|---|
| 新闻/论坛榜单、新用户多 | 9.1.1 时间衰减热门 |
| 有评分/点击时间戳的 CF | 9.1.2/9.1.3 时间加权 CF |
| 单次访问内推荐(未登录/短会话) | 9.1.4 会话 + 9.2 序列 |
| 购物车/点击流「下一步」 | FPMC / RNN / 注意力 |
| 到店/LBS/外卖 | 9.3 距离后过滤或空间预过滤 |
| 轨迹/出行 | 序列 + 驻留点 + 融合模型 |
六、与前几章衔接
| 章节 | 关系 |
|---|---|
| 第2章 CF | 9.1.2/9.1.3 在其相似度/预测上加时间权 |
| 第7章 BPR | FPMC 用 S-BPR;序列模型可用 pairwise 损失 |
| 第8章 | 时间/位置是情境子集;预/后过滤/建模可直接复用 |
| 第10章 | 社交 + 空间融合(9.3.3) |
七、本章小结(背诵版)
- 时间三视角:分片、间隔衰减、有序序列。
- 最近热门:(1/(1+\alpha(T-t))) 衰减,解决用户冷启动。
- 时间 CF:交互时间接近 → 物品/用户更相似;近期行为权更大。
- 会话:长/短期分图;(\eta_u, \eta_s) 调权。
- 马尔可夫/FPMC:物品转移 + MF 长期;S-BPR 训练。
- RNN/LSTM:序列 One-Hot → 下一步概率;注意梯度问题。
- 注意力:软寻址历史,记忆网络合并长短期。
- LBS:驻留点、区域假设、距离后过滤 (p' = p/\text{dist})。
- 融合:时空 + 社交 + 路线是工业常见组合。
八、面试题速记
- 时间效应是什么? 用户兴趣与物品热度随时间变;推荐应加重近期、考虑生命周期。
- 时间 Item-CF 与普适 Item-CF 区别? 共现用户的两物品交互时间越近,相似度贡献越大。
- 会话推荐 vs 全局 CF? 会话抓单次访问短期意图;全局抓长期。
- FPMC 两项含义? MF 长期偏好 + 马尔可夫短期转移。
- 为什么序列推荐需要注意力? 并非所有历史步对下一步同等重要。
- 驻留点为何比 GPS 点更有用? 过滤路过噪声,反映真实停留意图。
- LBS 后过滤公式? (p'(u,i) = p(u,i)/\text{dist}(l_u,l_i))。
- 最近热门能否个性化? 不能;但可解决新用户无历史问题。
九、课后思考(对应习题)
- 简述基于时间间隔、时间分片、时间序列三类思路。
- 实现时间加权 User-CF 并在公开数据上验证。
- 马尔可夫序列预测基本思想。
- FPMC 模型基本思想。
- 调研时空推荐的典型应用场景与案例。
十、延伸阅读
- Koren, Y. (2009). Collaborative Filtering with Temporal Dynamics. KDD.
- Rendle, S. et al. (2010). FPMC: Factorizing Personalized Markov Chains. WWW.
- Hidasi, B. et al. (2016). Session-based Recommendations with RNNs. ICLR Workshop.
- 本书 第8章 :情境预/后过滤;第7章:BPR / S-BPR
文档风格与 p23_第8章_基于情境感知的推荐.md、p22_第7章_基于排序学习的推荐.md 一致。