我有一個非常龐大的資料集,需要使用 TSNE 將 768 維的嵌入減少到 128 維。由于我有超過 100 萬行,因此需要數周以上才能完成整個資料集的降維,所以我想也許我可以將資料集分成不同的部分,然后分別執行每個部分。我沒有 GPU,所以只有 CPU。
from sklearn.manifold import TSNE
tsne = TSNE(n_components=128, init='pca', random_state=1001, perplexity=30, method='exact', n_iter=250, verbose=1)
X_tsne = tsne.fit_transform(df_dataset[:1000000]) # this will either fail or take a while (most likely overnight)
I am wondering whether my way is considered OK?
以上還沒有使用拆分,只是加載所有資料集。我只想確認拆分為多個批次然后 fit_transform 每個批次是否正確。
另外,我檢查了以下有關美白句子表示的鏈接,但不確定是否可以通過將 tsne 替換為美白來使用我的上述方法。https://deep-ch.medium.com/dimension-reduction-by-whitening-bert-roberta-5e103093f782
uj5u.com熱心網友回復:
這可能取決于您要做什么,但我懷疑答案是這樣做是錯誤的。
在不同批次之間,很難保證降維表示具有可比性,因為它們會被獨立優化,而不是使用相同的資料。因此,當它們在原始表示中不相似時,您最終可能會得到在低 D 表示中看起來相似的資料。
看起來 PCA 可能更適合您,因為它非常快。或者 UMAP,因為它也很快,但另外還有一些方法可以處理批處理資料等。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/511433.html
