上周需要改一個降維的模型,之前的人用的是sklearn里的t-SNE把數據從高維降到了二維。我大概看了下算法的原理,和isomap有點類似,和dbscan也有點類似。不過這里就不詳細講了,這里說最重要的perplexity參數應該怎么調。
百度了一些文章,都說5-50就行。人雲亦雲,一個地方抄另外一個地方。perplexity的原本定義是“expected density”,也就是說預估每個cluster可能有多少個元素,有點類似dbscan里的min_sample。
這里有一個可以玩的網站,試試t-sne在不同的參數下跑的結果怎么樣。
https://distill.pub/2016/misread-tsne/
作者自己做了實驗,每個cluster有50個點的情況下,看不同的perplexity會有什么結果。

你也可以自己嘗試,就是選第二個實驗,“Two clusters with equal numbers of points.”,然后我自己參數point per cluster是20,然后perplexity選了40。最后無法收斂。所以你大概也能猜來這個參數到底應該選什么了,文章里也說了,應該要比point per cluster小。
文章里也討論了t-sne的其他特性和表現。這里就不再闡述了,有興趣的可以看看。

