我正在尝试对一个方形距离矩阵进行t-SNE分析。这些是我使用的命令。
model = TSNE(n_components = 2,perplexity = 32, verbose = 10,n_iter = 1000, metric = "precomputed")embeddings = model.fit_transform(D)
这是我收到的输出:t-SNE函数的输出
看起来程序运行了75次迭代后就认为已经完成并停止了。当我绘制t-SNE的数据时,它基本上只是一个密集的单一团块。为什么程序提前停止了,我怎样才能让它运行更长时间?
回答:
它停止是因为达到了退出条件。
根据日志的解释,退出条件可能是这里称为梯度范数的梯度度量。如果需要,可以查看梯度下降的基础知识来理解这个直觉。由于每次迭代都是向梯度的负方向迈出一步,微小的梯度不会对目标有太大影响(并且会被解释为:我们找到了局部/全局最小值)。
看起来(仍然只是根据你的日志解释):
if np.linalg.norm(gradient) < 1e-4: return solution
对于这个优化问题的参数化,没有必要继续进行更多的迭代。解决方案不会在最小化方面变得更好。
你只能尝试其他参数(导致其他优化问题)。