






















从“直觉 → 结构 → 训练 → 推理 → 新 item 挂载”一步步来,用通俗语言 + 必要公式把 TDM(Tree-based Deep Model,树模型)彻底讲透。
TDM 是一种把“海量 item 的多分类问题”,变成“在一棵树上逐层二分类/多分类”的算法,用树结构把计算复杂度从 O(N) 降到 O(log N)。
它解决的是一个非常现实的问题:
item 太多了,模型算不过来。
假设你在做推荐系统:
Softmax:
\( P(i \mid u) = \frac{e^{f(u,i)}}{\sum_{j=1}^N e^{f(u,j)}} \)
计算复杂度:
\( O(N) \)
👉 直接爆炸。
别一次性在 100 万个 item 里选,先选“哪一大类”,再选“哪一小类”,最后选到具体 item。
这就是一棵树。
例如:
Root
/ \
Node A Node B
/ \ / \
item1 item2 Node C item6
/ \
item3 item4
\( \pi(i) = (n_0, n_1, \dots, n_L) \)
其中:
这是 TDM 的灵魂。
传统目标:
\( P(i \mid u) \)
TDM 把它拆成:
\(P(i \mid u) = \prod_{l=1}^{L} P(n_l \mid u, n_{l-1})\)
解释人话版:
用户 u
从根开始
每一层只判断:
“在当前节点下,我该往哪个子节点走?”
(B 是每层分支数)
在第 (l) 层:
输入:
输出:
\( s(u, n) = \mathbf{u}^\top \mathbf{v}_n \)
\(P(n_l \mid u, n_{l-1})=\frac{e^{s(u,n_l)}}{\sum_{c \in \text{Children}(n_{l-1})} e^{s(u,c)}}\)
👉 注意:
softmax 只在“兄弟节点”里算,不是全局。
每条样本是:
\( (u, i) \)
但我们把它变成:
\( (u, \pi(i)) \)
也就是:
\(\mathcal{L}= \sum_{l=1}^{L} \log P(n_l \mid u, n_{l-1})\)
直觉解释:
复杂度:
\( O(K \cdot L) \)
👉 非常适合在线服务。
“TDM 树里边新 item 挂载:找特征最相似的叶子节点路径,相当于给这个新 item 一个更合理的起点”
这句话 完全正确。
\( \mathbf{e}_{new} \)
在第 (l) 层:
$n_l^*=\arg\max_{c \in \text{Children}(n_{l-1})} \mathbf{e}_{new}^\top \mathbf{v}_c $
这条路径:
\( \pi(i_{new}) \)
就是新 item 的初始位置。
冷启动 item:
语义挂载:
| 场景 | 本质 |
|---|---|
一句话统一:
不要从随机点开始学习,要从“语义正确的位置”开始。
你可以直接这么说:
TDM 将大规模 item 召回建模为树路径预测问题,通过概率分解把 O(N) 的分类复杂度降为 O(log N),并允许新 item 通过语义相似路径挂载,实现高效、可扩展的推荐召回。
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。