Main Content

Die Übersetzung dieser Seite ist veraltet. Klicken Sie hier, um die neueste Version auf Englisch zu sehen.

Daten-Clustering mit einer selbstorganisierenden Karte

Daten-Clustering ist eine weitere hervorragende Anwendung für neuronale Netze. Bei diesem Prozess werden Daten nach Ähnlichkeit gruppiert. Beispielanwendungen:

  • Marktsegmentierung durch Gruppierung von Kunden nach deren Kaufmustern

  • Data Mining durch Partitionierung von Daten in verwandte Teilmengen

  • Bioinformatische Analyse durch Gruppieren von Genen mit verwandten Expressionsmustern

Angenommen, Sie möchten Blumenarten nach Blütenblattlänge, Blütenblattbreite, Kelchblattlänge und Kelchblattbreite zu Clustern zusammenfassen. Es liegen Ihnen 150 Beispielfälle mit diesen vier Messwerten vor.

Genau wie bei der Funktionsanpassung und Mustererkennung gibt es auch für dieses Problem zwei Lösungswege:

Im Allgemeinen ist es am besten, mit der App zu beginnen und diese anschließend zum automatischen Generieren von Befehlszeilenskripten zu verwenden. Bevor Sie eine der beiden Methoden anwenden, definieren Sie zunächst das Problem, indem Sie einen Datensatz auswählen. Jede der Apps zur Entwicklung neuronaler Netze hat Zugang zu Beispieldatensätzen, die Sie zum Experimentieren mit der Toolbox verwenden können (siehe Beispieldatensätze für flache neuronale Netze). Wenn Sie ein bestimmtes Problem lösen möchten, können Sie auch Ihre eigenen Daten in den Arbeitsbereich laden. Das Datenformat ist im nächsten Abschnitt beschrieben.

Definieren eines Problems

Zur Definition eines Clustering-Problems ordnen Sie für das Clustering vorgesehene Eingangsvektoren (Prädiktoren) als Spalten in einer Eingangsmatrix an. Beispielsweise können Sie diese Menge von 10 Vektoren mit zwei Elementen zu einem Cluster zusammenfassen:

predictors = [7 0 6 2 6 5 6 1 0 1; 6 2 5 0 7 5 5 1 2 2]

Der nächste Abschnitt zeigt, wie ein Netz mithilfe der App Neural Net Clustering für das Daten-Clustering trainiert wird. In diesem Beispiel wird ein Beispieldatensatz verwendet, der mit der Toolbox bereitgestellt wird.

Daten-Clustering mithilfe der App „Neural Net Clustering“

Dieses Beispiel veranschaulicht, wie ein flaches neuronales Netz mithilfe der App Neural Net Clustering für das Daten-Clustering trainiert werden kann.

Öffnen Sie die App Neural Net Clustering mithilfe des Befehls nctool.

nctool

Auswählen der Daten

Die App Neural Net Clustering enthält Beispieldaten, die Ihnen den Einstieg in das Training eines neuronalen Netzes erleichtern.

Zum Importieren der Clustering-Daten für das Beispiel einer Irisblüte wählen Sie Import > Import Iris Flowers Data Set (Datensatz für Irisblüten importieren) aus. Wenn Sie Ihre eigenen Daten aus einer Datei oder aus dem Arbeitsbereich importieren, müssen Sie die Prädiktoren angeben und festlegen, ob die Beobachtungen in Zeilen oder Spalten vorliegen.

Informationen über die importierten Daten werden im Fenster Model Summary (Modellzusammenfassung) angezeigt. Dieser Datensatz enthält 150 Beobachtungen mit jeweils vier Merkmalen.

Erstellen des Netzes

Für Clustering-Probleme ist die selbstorganisierende Merkmalskarte (Self-Organizing feature Map, SOM) das am häufigsten verwendete Netz. Dieses Netz besteht aus einer Schicht, in der Neuronen in einem Raster angeordnet sind. Selbstorganisierende Karten lernen, Daten basierend auf deren Ähnlichkeit in Clustern zusammenzufassen. Weitere Informationen zur SOM finden Sie unter Cluster with Self-Organizing Map Neural Network.

Zum Erstellen des Netzes geben Sie die Größe der Karte an, die der Anzahl der Zeilen und Spalten des Netzes entspricht. Für dieses Beispiel setzen Sie den Wert für Map size (Kartengröße) auf 10, was einem Raster mit 10 Zeilen und 10 Spalten entspricht. Die Gesamtzahl der Neuronen ist gleich der Anzahl der Punkte im Raster (in diesem Beispiel hat die Karte 100 Neuronen). Die Netzarchitektur wird im Fensterbereich Network angezeigt.

Trainieren des Netzes

Klicken Sie zum Trainieren des Netzes auf Train. Im Fensterbereich Training wird der Trainingsfortschritt angezeigt. Das Training wird so lange fortgesetzt, bis eines der Stoppkriterien erfüllt ist. In diesem Beispiel wird das Training fortgesetzt, bis die maximale Anzahl der Epochen erreicht wurde.

Analysieren der Ergebnisse

Generieren Sie Diagramme, um die Trainingsergebnisse zu analysieren. Beim SOM-Training wird der Gewichtungsvektor, der den einzelnen Neuronen zugeordnet ist, so verschoben, dass er zum Zentrum eines Clusters von Eingangsvektoren wird. Darüber hinaus sollten sich Neuronen, die in der Topologie benachbart sind, auch im Eingangsraum dicht beieinander bewegen, sodass es möglich ist, einen hochdimensionalen Eingangsraum in den zwei Dimensionen der Netztopologie zu visualisieren. Standardmäßig weist die SOM eine hexagonale Topologie auf.

Zum Darstellen der SOM-Beispieltreffer klicken Sie im Abschnitt Plots (Diagramme) auf Sample Hits (Beispieltreffer). In der folgenden Abbildung sind die Positionen der Neuronen in der Topologie dargestellt und es wird angegeben, wie viele der Beobachtungen den einzelnen Neuronen (Clusterzentren) zugeordnet sind. Die Topologie ist ein 10x10-Raster, das heißt, es gibt 100 Neuronen. Jedem Neuron sind maximal 5 Treffer zugeordnet. Daher enthält dieser Cluster 5 Eingangsvektoren.

Erstellen Sie ein Diagramm mit den Gewichtungsebenen (auch als Komponentenebenen bezeichnet). Klicken Sie im Abschnitt Plots (Diagramme) auf Weight Planes (Gewichtungsebenen). Diese Abbildung veranschaulicht, dass eine Gewichtungsebene für jedes Element der Eingangsmerkmale vorliegt (in diesem Beispiel also vier). Im Diagramm sind die Gewichtungen angegeben, die jeden Eingang mit den jeweiligen Neuronen verbinden, wobei dunklere Farben höhere Gewichtungen darstellen. Wenn die Verbindungsmuster zweier Merkmale sehr ähnlich sind, kann davon ausgegangen werden, dass die Merkmale stark korrelieren.

Wenn Sie mit der Leistung des Netzes nicht zufrieden sind, können Sie eine der folgenden Möglichkeiten nutzen:

  • Trainieren Sie das Netz neu. Jedes Training wird mit unterschiedlichen Anfangsgewichtungen und -verzerrungen des Netzes ausgeführt und so kann nach einem Neutraining ein verbessertes Netz entstehen.

  • Erhöhen Sie die Anzahl der Neuronen, indem Sie die Karte vergrößern.

  • Verwenden Sie einen größeren Trainingsdatensatz.

Sie können die Leistung des Netzes auch anhand einer zusätzlichen Testmenge beurteilen. Um zusätzliche Testdaten zur Beurteilung des Netzes zu laden, klicken Sie im Abschnitt Test auf Test. Generieren Sie Diagramme, um die zusätzlichen Testergebnisse zu analysieren.

Generieren von Code

Wählen Sie Generate Code > Generate Simple Training Script (Einfaches Trainingsskript generieren) aus, um MATLAB-Programmcode zu erstellen, mit dem die vorherigen Schritte über die Befehlszeile reproduziert werden können. Das Erstellen von MATLAB-Programmcode kann hilfreich sein, wenn Sie lernen möchten, wie die Befehlszeilenfunktionen der Toolbox zum Anpassen des Trainingsprozesses genutzt werden können. In Daten-Clustering mithilfe von Befehlszeilenfunktionen werden Sie die generierten Skripte näher untersuchen.

Exportieren des Netzes

Sie können Ihr trainiertes Netz in den Arbeitsbereich oder nach Simulink® exportieren. Sie können das Netz auch mit den Tools von MATLAB Compiler™ und anderen MATLAB-Tools zur Codegenerierung bereitstellen. Wählen Sie zum Exportieren Ihres trainierten Netzes und der Ergebnisse die Optionen Export Model > Export to Workspace (In den Arbeitsbereich exportieren) aus.

Daten-Clustering mithilfe von Befehlszeilenfunktionen

Die einfachste Möglichkeit, den Umgang mit den Befehlszeilenfunktionen der Toolbox zu erlernen, besteht darin, mithilfe der Apps Skripte zu generieren und diese anschließend abzuändern, um das Netztraining anzupassen. Sehen Sie sich als Beispiel das einfache Skript an, das im vorherigen Abschnitt mithilfe der App Neural Net Clustering erstellt wurde.

% Solve a Clustering Problem with a Self-Organizing Map
% Script generated by Neural Clustering app
% Created 21-May-2021 10:15:01
%
% This script assumes these variables are defined:
%
%   irisInputs - input data.

x = irisInputs;

% Create a Self-Organizing Map
dimension1 = 10;
dimension2 = 10;
net = selforgmap([dimension1 dimension2]);

% Train the Network
[net,tr] = train(net,x);

% Test the Network
y = net(x);

% View the Network
view(net)

% Plots
% Uncomment these lines to enable various plots.
%figure, plotsomtop(net)
%figure, plotsomnc(net)
%figure, plotsomnd(net)
%figure, plotsomplanes(net)
%figure, plotsomhits(net,x)
%figure, plotsompos(net,x)

Sie können das Skript speichern und es anschließend über die Befehlszeile ausführen, um die Ergebnisse der vorherigen Trainingssitzung zu reproduzieren. Außerdem können Sie das Skript bearbeiten, um den Trainingsprozess individuell anzupassen. In diesem Fall befolgen Sie die einzelnen Schritte im Skript.

Auswählen der Daten

Im Skript wird davon ausgegangen, dass die Prädiktoren bereits in den Arbeitsbereich geladen wurden. Wenn die Daten noch nicht geladen wurden, können Sie sie wie folgt laden:

load iris_dataset

Mit diesem Befehl werden die Prädiktoren irisInputs in den Arbeitsbereich geladen.

Bei diesem Datensatz handelt es sich um einen der Beispieldatensätze, die Teil der Toolbox sind. Informationen zu den verfügbaren Datensätzen finden Sie unter Beispieldatensätze für flache neuronale Netze. Zum Aufrufen einer Liste mit allen verfügbaren Datensätzen geben Sie den Befehl help nndatasets ein. Sie können die Variablen aus jedem dieser Datensätze laden und dabei Ihre eigenen Variablennamen verwenden. Beispielsweise werden mit dem Befehl

x = irisInputs;
die Irisblüten-Prädiktoren in das Array x geladen.

Erstellen des Netzes

Erstellen Sie ein Netz. Für dieses Beispiel verwenden Sie eine selbstorganisierende Karte (SOM). Dieses Netz besteht aus einer Schicht, in der die Neuronen in einem Raster angeordnet sind. Weitere Informationen finden Sie unter Cluster with Self-Organizing Map Neural Network. Zum Erstellen des Netzes mit selforgmap geben Sie die Anzahl der Zeilen und Spalten im Raster an.

dimension1 = 10;
dimension2 = 10;
net = selforgmap([dimension1 dimension2]);

Trainieren des Netzes

Trainieren Sie das Netz. Das SOM-Netz verwendet für das Training den Standard-Batch-SOM-Algorithmus.

[net,tr] = train(net,x);

Während des Trainings wird das Trainingsfenster geöffnet, in dem der Trainingsfortschritt angezeigt wird. Sie können das Training jederzeit unterbrechen, indem Sie auf die Stopp-Schaltfläche klicken.

Neural network training progress window

Testen des Netzes

Testen Sie das Netz. Nachdem das Netz trainiert wurde, können Sie es zur Berechnung der Netzausgänge verwenden.

y = net(x);

Anzeigen des Netzes

Sehen Sie sich das Netzdiagramm an.

view(net)

Graphical representation of the clustering network. The network has input size 4 and output size 100.

Analysieren der Ergebnisse

Beim SOM-Training wird der Gewichtungsvektor, der den einzelnen Neuronen zugeordnet ist, so verschoben, dass er zum Zentrum eines Clusters von Eingangsvektoren wird. Darüber hinaus sollten sich Neuronen, die in der Topologie benachbart sind, auch im Eingangsraum dicht beieinander bewegen, sodass es möglich ist, einen hochdimensionalen Eingangsraum in den zwei Dimensionen der Netztopologie zu visualisieren. Die Standard-SOM-Topologie ist hexagonal. Um sie anzuzeigen, geben Sie die folgenden Befehle ein:

figure, plotsomtop(net)

SOM topology displaying a 10-by-10 grid of hexagons

In dieser Abbildung stellt jedes Hexagon ein Neuron dar. Es handelt sich um ein 10x10-Raster, sodass sich in diesem Netz insgesamt 100 Neuronen befinden. Es gibt in jedem Eingangsvektor vier Merkmale, sodass der Eingangsraum vierdimensional ist. Die Gewichtungsvektoren (Clusterzentren) liegen innerhalb dieses Raums.

Da diese SOM eine zweidimensionale Topologie aufweist, können Sie die Beziehungen zwischen den vierdimensionalen Clusterzentren in zwei Dimensionen darstellen. Ein Visualisierungstool für die SOM ist die Gewichtungs-Distanz-Matrix (auch U-Matrix genannt).

Zum Anzeigen der U-Matrix klicken Sie im Trainingsfenster auf SOM Neighbor Distances (Distanzen zu den Nachbarn in der SOM).

SOM neighbor weight distance plot

In dieser Abbildung sind die Neuronen durch blaue Sechsecke dargestellt. Die roten Linien verbinden die benachbarten Neuronen. Die Farben in den Bereichen mit den roten Linien weisen auf die Distanzen zwischen den Neuronen hin. Die dunkleren Farben stehen für größere Distanzen, die helleren Farben für kleinere Distanzen. Durch die Karte verläuft ein Band mit dunklen Segmenten. Es scheint, als habe das SOM-Netz die Blumen in zwei verschiedenen Gruppen zu Clustern zusammengefasst.

Weitere Schritte

Wenn Sie mehr Erfahrung mit Befehlszeilenoperationen sammeln möchten, können Sie die folgenden Aufgaben ausprobieren:

Siehe auch

| | | |

Verwandte Themen