稀疏联合概率矩阵的装配工具
SparseProbability
01 Syntax
Microsoft.VisualBasic.MachineLearning.tSNE.SparseProbability
02 Methods
03 Members
SuggestK(
Double)依据困惑度推荐每一行需要保留的近邻数量
Remarks
沿用 L. van der Maaten 的 bh_tsne 参考实现中的经验取值 3 * perplexity。 这个值直接决定了稀疏矩阵的内存占用(O(N·k))与梯度计算量, 是 Barnes-Hut 模式下精度与开销之间最主要的调节旋钮。
Parameters
| Name | Type | Description |
|---|---|---|
perplexity | Double | - |
Build(
Int64(), Double(), Int32)把 (i, j, v) 三元组排序之后装配为 CSR 稀疏矩阵
Remarks
键 i * N + j 的升序排列天然就是行主序,因此一次排序即可同时完成 「按行分组」与「行内按列有序」两件事,无需再借助哈希表做 O(nnz) 的合并去重: 同一个无序对 {i, j} 在双向展开之后会在第 i 行出现两次(分别为 p{j|i} 与 p{i|j}), 这两条条目在梯度循环中会被简单地累加起来,恰好等价于联合概率定义中的求和。
Parameters
| Name | Type | Description |
|---|---|---|
keys | Int64() | 打包后的键,取值为 |
vals | Double() | 与 keys 一一对应的概率值,排序过程中会被同步重排 |
N | Int32 | 样本数量 |