Im folgenden Code verwenden sie Autoencoder als überwachte Clustering oder Klassifizierung, da sie Datenbeschriftungen haben. http://amunategui.github.io/anomaly-detection-h2o/ Aber kann ich Autoencoder verwenden, um Daten zu gruppieren, wenn ich seine Etiketten nicht hatte? GrüßeKann ich Autoencoder für das Clustering verwenden?
Antwort
Der Deep-Learning-Autoencoder ist immer unüberwacht zu lernen. Der "überwachte" Teil des Artikels, auf den Sie verlinken, ist zu bewerten, wie gut es funktioniert.
Das folgende Beispiel (aus Kapitel 7 meines Buches, Practical Machine Learning mit H2O, wo ich alle H2O unbeaufsichtigten Algorithmen auf dem gleichen Datensatz versuchen - bitte entschuldigen Sie den Stecker) nimmt 563 Funktionen und versucht zu verschlüsseln sie in nur zwei versteckte Knoten.
m <- h2o.deeplearning(
2:564, training_frame = tfidf,
hidden = c(2), auto-encoder = T, activation = "Tanh"
)
f <- h2o.deepfeatures(m, tfidf, layer = 1)
Der zweite Befehl extrahiert die versteckten Knotengewichtungen. f
ist ein Datenrahmen mit zwei numerischen Spalten und einer Zeile für jede Zeile in den Quelldaten tfidf
. Ich wählte nur zwei versteckte Knoten, so dass ich die Cluster zeichnen könnte:
Ergebnisse bei jedem Durchlauf ändern. Sie können (vielleicht) bessere Ergebnisse mit gestapelten Auto-Encodern erzielen oder mehr versteckte Knoten verwenden (aber dann können Sie sie nicht plotten). Hier fühlte ich, dass die Ergebnisse durch die Daten begrenzt waren.
BTW, habe ich das oben Grundstück mit diesem Code:
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. Die Originaldaten kamen aus Brandon Rose's excellent article on using NLTK.)
In einigen Aspekten kodieren Daten und Clustering-Daten teilen einige überlappende Theorie. Daher können Sie mit Autoencoder Daten clustern (kodieren).
Ein einfaches Beispiel zur Visualisierung ist, wenn Sie eine Reihe von Trainingsdaten haben, von denen Sie annehmen, dass sie zwei primäre Klassen haben. Wie Wählerhistorie Daten für Republikaner und Demokraten. Wenn Sie einen Autoencoder nehmen und ihn in zwei Dimensionen codieren und dann auf einem Streudiagramm plotten, wird dieses Clustering klarer. Unten ist ein Beispielergebnis von einem meiner Modelle. Sie sehen eine merkliche Trennung zwischen den beiden Klassen sowie ein wenig erwartete Überlappung.
Der Code kann here
Diese Methode erfordert nicht nur zwei binäre Klassen gefunden werden, können Sie auch so viele verschiedene Klassen auf trainieren, wie Sie es wünschen. Zwei polarisierte Klassen sind einfach zu visualisieren.
Diese Methode ist nicht auf zwei Ausgabedimensionen beschränkt. In der Tat, Sie können es schwierig finden, bestimmte, große Dimensionsräume auf solch einen kleinen Raum sinnvoll abzubilden.
In Fällen, in denen die codierte (geclusterte) Ebene eine größere Dimension aufweist, ist es nicht so einfach, Feature-Cluster zu "visualisieren". Dies ist, wo es ein bisschen schwieriger wird, wie Sie eine Form des überwachten Lernens verwenden müssen, um die codierten (geclusterten) Features zu Ihren Trainingsetiketten zuzuordnen.
Ein paar Wege, um zu bestimmen, zu welchen Klassenmerkmalen gehören, ist, die Daten in knn-Clustering-Algorithmus zu pumpen. Oder ich ziehe es vor, die kodierten Vektoren zu nehmen und sie an ein neuronales Standard-Netzwerk mit Rückfehlerausbreitung weiterzuleiten.Beachten Sie, dass abhängig von Ihren Daten, können Sie feststellen, dass nur die Daten direkt in Ihr Back-Propagation Neuronal Netzwerk pumpen ist ausreichend.
- 1. Sparse Autoencoder für Weka
- 2. Get Decoder für Deep Autoencoder
- 3. Das Decoder-Modell für Sequenz-Sequenz-Autoencoder in Keras machen
- 4. Wie kann ich das Gewicht von Features für das K-Means-Clustering ändern?
- 5. Wie kann ich K-Means-Clustering für Zeitreihendaten durchführen?
- 6. Welchen Algorithmus sollte ich für das Clustering von Wörtern basierend auf Mengen verwenden
- 7. Variations-Autoencoder zur Merkmalsextraktion
- 8. Caffe Autoencoder
- 9. tensorflow Autoencoder kann nicht im Training lernen
- 10. Klassifizierung mit Keras Autoencoder
- 11. Stacked Sparse Autoencoder Parameter
- 12. Kann ich den Websphere-Anwendungsserver V8.0.0.10 (Netzwerkimplementierung) für Mobilefirst 7.1-Clustering verwenden?
- 13. Wie funktioniert das DB-Clustering?
- 14. Wie spezifiziert man eine Entfernungsfunktion für das Clustering?
- 15. Gestapelte Autoencoder für Klassifizierung mit Mnist
- 16. keras autoencoder konvergiert nicht
- 17. Clustering-Techniken für binäre Daten
- 18. Spectral Clustering vs hierarchische Clustering
- 19. Autoencoder Mismatch Dimension Fehler
- 20. Welche Bedeutung hat das Clustering?
- 21. Grafana Clustering für Alerting
- 22. Keras Convolutional Autoencoder: Schichtformen
- 23. Keras deep variational Autoencoder
- 24. Kann ich DBSCAN für nicht numerische Daten verwenden?
- 25. Welchen Theme Editor kann ich für das Thema Shopify verwenden?
- 26. Kann ich das Featureplugin nur für meine installierbare App verwenden?
- 27. Kann ich das Spring-Framework für die Android-Entwicklung verwenden?
- 28. Wie kann ich AddHour für das benutzerdefinierte Datum verwenden?
- 29. Wie kann ich Travis für das Unterverzeichnis verwenden?
- 30. Wie kann ich das Message Queuing System für Kannel verwenden
Danke, Darren, für diese Erklärung dies. Wenn ich mehr als zwei versteckte Ebenen verwende, wie kann ich die Ergebnisse grafisch darstellen? Vielen Dank – forever
@forever Sie könnten 'hidden = c (32,2,32)' verwenden, was 32 Neuronen bedeutet, dann 2, dann wieder zurück zu 32. Sie extrahieren dann die mittlere Ebene mit 'f <- h2o.defeatures (m, tfidf, layer = 2) ' –
Wie kann ich wissen, ob ich die richtigen Parameter verwende ?. Wie kann ich den Fehler gegen Epochen grafisch darstellen? – forever