深度学习自动编码器始终是无监督学习。您链接到的文章的“监督”部分是评估它的表现。
以下示例(取自我的书《Practical Machine Learning with H2O》的第 7 章,其中我在同一数据集上尝试了所有 H2O 无监督算法 - 请原谅插件)采用 563 个特征,并尝试将它们编码为两个隐藏节点。
m <- h2o.deeplearning(
2:564, training_frame = tfidf,
hidden = c(2), auto-encoder = T, activation = "Tanh"
)
f <- h2o.deepfeatures(m, tfidf, layer = 1)
第二个命令提取隐藏节点权重。f
是一个数据框,有两个数字列,每行一行tfidf
源数据。我只选择了两个隐藏节点,以便可以绘制集群:
每次运行的结果都会改变。您(也许)可以使用堆叠自动编码器或使用更多隐藏节点获得更好的结果(但随后您无法绘制它们)。在这里我觉得结果受到数据的限制。
顺便说一句,我用这段代码制作了上面的图:
d <- as.matrix(f[1:30,]) #Just first 30, to avoid over-cluttering
labels <- as.vector(tfidf[1:30, 1])
plot(d, pch = 17) #Triangle
text(d, labels, pos = 3) #pos=3 means above
(P.S.原始数据来自Brandon Rose 关于使用 NLTK 的优秀文章 http://brandonrose.org/clustering. )