降维后无需重算即可新增投影点的二维绘图算法咨询
核心结论
不存在能完全满足你所有要求的算法——本质上100维空间的拓扑结构不可能无损失嵌入二维平面,没法做到所有二维平面上相邻的点,在原始100维空间里都严格相邻,这是维度差带来的固有信息损失,靠算法设计绕不开。
但有非常多成熟可落地的方案,能做到一次训练/计算后固定投影规则,新增点位不需要全局重算,已经投影好的点位坐标完全不会变动,同时尽可能保证局部邻域的一致性,完全适配你单参数取值0-99的100维数据绘图需求。
可落地的实现方案
- 参数化降维模型
这类方案把降维从“全局拟合所有点位位置”改成“训练一个固定的映射函数”,函数参数确定后不会再变,输入任意新高维点就能直接输出二维坐标,不会改动已有点位的投影结果:- 自编码器(AutoEncoder):用简单的全连接网络做自监督训练,网络结构设计为输入层(100维)→ 若干隐藏层 → 瓶颈层(2维)→ 若干隐藏层 → 输出层(100维),训练目标是让输出尽可能还原输入。训练收敛后只保留从输入到瓶颈层的编码器部分做投影即可,重构损失会强制让高维空间相似的点在2维瓶颈层尽可能靠近,对非线性邻域关系的保留效果远好于线性PCA,推理就是纯前向计算,速度很快。
- 参数化t-SNE/UMAP:原生t-SNE、UMAP是直接拟合所有点位的二维位置,本身不支持新点直接推理,但可以用神经网络拟合初始批次点位的t-SNE/UMAP投影结果,网络收敛后权重完全固定,后续新点直接输入网络就能得到二维坐标,不需要重新跑全局降维,邻域保留效果和原生t-SNE/UMAP基本一致。
- 线性投影(邻域精度要求低时可选):除了PCA,有标签的场景可以用LDA,无标签追求极致速度可以用随机投影,这类方法本质是一个固定的变换矩阵,矩阵算好之后,所有点(包括新增点)直接做矩阵乘法就能得到二维坐标,速度极快,缺点是没法保留非线性的邻域关系。
- 基于锚点的插值投影
如果你已经用原生UMAP/t-SNE跑完了一批初始点位的二维投影,不想额外训练模型,可以用这个零训练成本的方案,全程不会改动已有点位的坐标:- 把已经算好投影的所有点位作为锚点,同时保存它们的原始100维坐标和对应的二维坐标
- 新点到来时,先在100维空间计算它和所有锚点的距离,取距离最近的5-10个锚点
- 用高维距离的倒数作为权重,加权平均这几个近邻锚点的二维坐标,结果就是新点的投影坐标
只要你的初始锚点能覆盖大部分数据分布,这个方案的邻域保留效果完全够用,几行代码就能实现,唯一要注意的是如果新点和所有锚点的距离都非常远(属于分布外数据),投影结果参考价值会很低。
- 固定哈希投影
如果你的数据规模极大,对投影速度要求极高,可以用局部敏感哈希(LSH)做投影:选定针对欧氏距离(或者你实际用的距离度量)的LSH哈希函数,把100维输入直接哈希到二维整数坐标即可。LSH本身的特性就是高维空间越相似的点,哈希后落在同一个/相邻位置的概率越高,而且哈希函数一旦选定就完全固定,新点直接算哈希值就能得到坐标,不需要任何预计算,缺点是邻域保留精度比前两类方案稍差。
选型参考
- 对邻域保留精度要求最高,愿意搭简单神经网络:优先选参数化UMAP,效果最接近原生UMAP,推理速度快
- 已经跑完了一批初始点的降维结果,想快速支持新增点:直接用K近邻锚点加权插值,实现成本最低
- 数据规模超百万,对投影速度要求远高于精度:选随机投影或者固定LSH映射
内容的提问来源于stack exchange,提问作者DocBrown
相关产品推荐
相关产品推荐

