DAW*_*DAW 10 r machine-learning dimensionality-reduction
目标:我的目标是在R中使用t-SNE(t分布式随机邻域嵌入)来减少我的训练数据的维数(使用N个观测值和K个变量,其中K >> N),并随后旨在得出t-我的测试数据的SNE表示.
示例:假设我的目标是将K变量减少到D = 2维(对于t-SNE ,通常,D = 2或D = 3).有两个R包:Rtsne
而且tsne
,我在这里使用前者.
# load packages
library(Rtsne)
# Generate Training Data: random standard normal matrix with J=400 variables and N=100 observations
x.train <- matrix(nrom(n=40000, mean=0, sd=1), nrow=100, ncol=400)
# Generate Test Data: random standard normal vector with N=1 observation for J=400 variables
x.test <- rnorm(n=400, mean=0, sd=1)
# perform t-SNE
set.seed(1)
fit.tsne <- Rtsne(X=x.train, dims=2)
Run Code Online (Sandbox Code Playgroud)
其中命令fit.tsne$Y
将返回包含数据的t-SNE表示的(100x2)维数据对象; 也可以通过绘制plot(fit.tsne$Y)
.
问题:现在,我正在寻找的是一个函数,它pred
根据训练的t-SNE模型为我的测试数据返回维度(1x2)的预测.就像是,
# The function I am looking for (but doesn't exist yet):
pred <- predict(object=fit.tsne, newdata=x.test)
Run Code Online (Sandbox Code Playgroud)
(这怎么可能?你能帮我解决这个问题吗?
来自作者本人(https://lvdmaaten.github.io/tsne/):
一旦我有了一个t-SNE地图,我该如何在该地图中嵌入传入的测试点?
t-SNE学习非参数映射,这意味着它不学习将数据从输入空间映射到地图的显式函数.因此,无法在现有地图中嵌入测试点(尽管您可以在完整数据集上重新运行t-SNE).处理此问题的一种潜在方法是训练多变量回归量以从输入数据预测地图位置.或者,您也可以使这样的回归量直接最小化t-SNE损失,这就是我在本文中所做的(https://lvdmaaten.github.io/publications/papers/AISTATS_2009.pdf).
因此,您无法直接应用新数据点.但是,您可以在数据和嵌入维度之间拟合多元回归模型.作者认识到这是该方法的局限性,并建议通过这种方式来解决它.
这是Rtsne软件包作者(Jesse Krijthe)的邮件答复:
感谢您提出非常具体的问题。我对此有一个较早的请求,它在GitHub(https://github.com/jkrijthe/Rtsne/issues/6)上是一个未解决的问题。我犹豫要执行这样的事情的主要原因是,从某种意义上说,没有“自然”的方式来解释预测在tsne方面的含义。对我来说,tsne是一种可视化距离矩阵的方法。这样,一个新的样本将导致一个新的距离矩阵,从而产生一个新的可视化。因此,我目前的想法是,唯一明智的方法是重新运行火车和测试仪组合中的tsne程序。
话虽如此,其他人的确认为定义预测是有意义的,例如通过将火车对象固定在地图上并为测试对象找到合适的位置(如本期建议)。我个人更喜欢的一种方法是参量tsne,这是tsne论文的作者Laurens van der Maaten探索的。但是,最好使用除我的程序包以外的其他方法来实现,因为如果用户选择了参数模型,则参数模型可能是最有效的。
所以我的建议是1)使用所有数据重新调整映射,或2)看看是否可以找到参数tsne的实现,我唯一知道的就是Laurens的Matlab实现。
抱歉,我不能提供更多帮助。如果您提出任何其他/更好的解决方案,请告诉我。
t-SNE并不是真的这样工作:
以下是来自t-SNE作者网站(https://lvdmaaten.github.io/tsne/)的专家:
有了t-SNE地图后,如何将传入的测试点嵌入该地图中?
t-SNE学习非参数映射,这意味着它不学习将数据从输入空间映射到映射的显式函数。因此,不可能将测试点嵌入现有地图中(尽管您可以在完整数据集上重新运行t-SNE)。解决此问题的一种潜在方法是训练多元回归变量,以根据输入数据预测地图位置。或者,您也可以使这样的回归器直接将t-SNE损失最小化,这就是我在本文中所做的。
您可能对他的论文感兴趣:https : //lvdmaaten.github.io/publications/papers/AISTATS_2009.pdf
该网站除了非常酷之外,还提供了大量有关t-SNE的信息:http : //distill.pub/2016/misread-tsne/
在Kaggle上,我还看到人们做这样的事情可能也很有趣:https://www.kaggle.com/cherzy/d/dalpozz/creditcardfraud/visualization-on-a-2d-map-with-t- ne
归档时间: |
|
查看次数: |
1808 次 |
最近记录: |