我正在尝试实现 t-SNE 算法:
我发现要计算成对的亲和力,我必须遵循这个:
我的问题是计算σ一世σ一世. 在维基百科中我发现:
高斯核的带宽σ一世σ一世, 以这样一种方式设置,即条件分布的困惑度等于使用二进制搜索的预定义困惑度。结果,带宽适应了数据的密度:较小的值σ一世σ一世用于数据空间的密集部分。
我不明白这到底是什么意思。我该如何计算σ一世σ一世?
它只是意味着您应该通过二进制搜索设置带宽。它的工作方式是从预设的目标困惑度开始(Mark 的链接建议将 5 到 50 的值作为合理的值),并限制带宽。如果目标困惑度在边界困惑度定义的区间内,则迭代地将搜索空间减半,直到收敛到目标:
如果目标不在初始间隔内,则扩大间隔并重试。
您可以在 Laurens van der Maaten 的页面上找到各种实现:
Laurens van der Maaten 的 t-SNE