我正在用人工神经网络做一个4级的分类任务.我的目标是想象这4个类的分离程度,以及来自每个类的数据有多一致,以及它们之间的“距离”有多远。
我的方法是在最后一个隐层中使用两个神经元,并在一个散射图中绘制神经元的输出图。但是,我的当前输出通常如下所示,不同的颜色代表数据来自的实际类:

显然,这不是很有用。首先,我希望各点不会都是一样的,第二,我不知道这是否可以用我想要的方式来解释。
我用R中的神经网络软件包训练网络,使用线性输出。我猜想,如果这种方法能够工作,激活函数的选择将是至关重要的。
我是神经网络的新手,我不确定是否可以这样做,我希望能得到一些评论。
发布于 2015-12-21 21:42:06
我对这个话题也有点陌生,但我认为你要寻找的是一个自动编码器。我只在h2o深度学习包中使用过它,但它似乎运行得很好。
自动编码器背后的想法是从输入开始,编码到较少的节点(两个是视觉表示的好方法),然后再解码回原来的输出(ass尽可能准确)。

如果自动编码器可以解码回您输入的准确表示,那么在这两个节点中保留了足够的重要信息。然后,您可以绘制这两个节点在一个类似于有界PCA图的二维图中所持有的特征。
而且,自动编码器不像PCA那样被限制为线性。下面是一些代码的快速片段,希望它能有所帮助。
library(h2o)
localH2O = h2o.init(ip = "localhost", port = 54321, startH2O = TRUE, min_mem_size = "3g", max_mem_size = "4g", nthreads = -1)
dat_h2o <- as.h2o(train.df)
unsupervised <-
h2o.deeplearning(x = 24:356, # column numbers to use
training_frame = dat_h2o, # data in H2O format
autoencoder = TRUE, ## unsupervised autoencoding
activation = "Tanh", # or 'Tanh' 'Rectifier' 'WithDropout' node activation function, Tanh seems to work best for autoencoding
hidden = c(5,2,5), # three layers of nodes, with 5/2/5 nodes, respectively
epochs = 1) # max. no. of epochs
## layer 1 corresponds to hidden[1], so it will reduce to 5 variables
## below is roughly similar to using predict(pca.object, newdata)
training_data <- h2o.deepfeatures(unsupervised, dat_h2o, layer = 1)
testing_data <- h2o.deepfeatures(unsupervised, test_h2o, layer = 1)
## explore the second layer with 2 nodes, similar to exploring PC1 vs PC2
train_supervised_features2 = h2o.deepfeatures(unsupervised, dat_h2o, layer=2)
plotdata2 = as.data.frame(train_supervised_features2)
plotdata2$label = as.character(as.vector(dat_h2o[,364]))
## L2 corresponds to layer 2, so use L2
qplot(DF.L2.C1, DF.L2.C2, data = plotdata2, color = label, main = 'Neural network: 5-2-5')发布于 2015-12-22 01:17:41
首先,我认为这个阴谋是有用的。在那个空间里,这些类确实是可分离的。
可视化的第一个选择应该是PCA,尽管正如其他答案所指出的,它将只考虑特征的线性组合。
如果您想在分类器做得有多好的上下文中可视化类的可分性,那么您所绘制的图是一个很好的选择。它表明,虽然存在一些混淆(特别是绿色),但您可以很容易地将该图上的每个类分组。
如果您想要可视化类的自然可分性,那么PCA或低维自动编码器就是方法之一。
区别在于,如果您关心的是前者,那么优化表示以分离类是一件好事。如果你关心后者,自动编码器的无监督性质就更合适了。
https://datascience.stackexchange.com/questions/8428
复制相似问题