在看到 t-SNE 可以很好地分離類別之後,應該使用什麼分類算法?
假設我們有一個分類問題,首先我們想從數據中獲得一些洞察力,我們做 t-SNE。t-SNE 的結果很好地分離了類。這意味著可以建立分類模型,該模型也可以很好地分離類(如果 t-SNE 不能很好地分離,那麼它並不意味著太多)。
知道 t-SNE 專注於局部結構並且它可以很好地分離類:哪些分類算法應該可以很好地解決這個問題?Scikit 建議使用高斯 RBF 內核的 SVM,但其他的是什麼?
首先是一個簡短的答案,然後是更長的評論:
回答
SNE 技術在原始數據空間和低維嵌入空間中計算 N ×N 相似度矩陣,使得相似度在對像對上形成概率分佈。具體來說,概率通常由根據輸入數據或嵌入計算的歸一化高斯核給出。在分類方面,這立即讓人想起基於實例的學習方法。您列出了其中之一:帶 RBF 的 SVM,@amoeba 列出了 kNN。還有徑向基函數網絡,我不是專家。
評論
話雖如此,我會更加小心地對僅查看 t-SNE 圖的數據集進行推斷。t-SNE 不一定關注局部結構。但是,您可以通過調整
perplexity
參數來調整它,該參數(鬆散地)調節如何在數據的本地和全局方面之間平衡注意力。在這種情況下,
perplexity
它本身就是在黑暗中刺探每個觀察可能有多少近鄰,並且是用戶提供的。原始論文指出:“t-SNE 的性能對 perplexity 的變化相當穩健,典型值在 5 到 50 之間。” 然而,我的經驗是,充分利用 t-SNE 可能意味著分析具有不同困惑度的多個圖。換句話說,調整
learning rate
和perplexity
,對於相同數量的訓練步驟並使用相同的數據,可以獲得看起來非常不同的二維圖。這篇Distill論文How to Use t-SNE Effectively很好地總結了 t-SNE 分析的常見缺陷。總結要點是:
- 那些超參數(例如學習率、困惑度)真的很重要
- t-SNE 圖中的簇大小沒有任何意義
- 集群之間的距離可能沒有任何意義
- 隨機噪聲並不總是看起來隨機的。
- 你可以看到一些形狀,有時
- 對於拓撲,您可能需要多個繪圖
特別是從上面的第 2、3 和 6 點來看,我會三思而後行,通過查看單個 t-SNE 圖來推斷數據的可分離性。在許多情況下,您可以使用正確的參數“製造”顯示清晰集群的圖。