Klassifikationsmodell mit künstlichen neuronalen Netzen (KNN)

Veröffentlicht: 2020-12-01

In der Terminologie des maschinellen Lernens bezieht sich die Klassifizierung auf ein Vorhersagemodellierungsproblem, bei dem die Eingabedaten als eine der vordefinierten gekennzeichneten Klassen klassifiziert werden. Beispielsweise fällt die Vorhersage von „Ja“ oder „Nein“, „Wahr“ oder „Falsch“ in die Kategorie der binären Klassifizierung, da die Anzahl der Ausgaben auf zwei Labels begrenzt ist.

In ähnlicher Weise werden Ausgaben mit mehreren Klassen wie die Klassifizierung verschiedener Altersgruppen als Mehrklassen-Klassifizierungsprobleme bezeichnet. Klassifizierungsprobleme sind eine der am häufigsten verwendeten oder definierten Arten von ML-Problemen, die in verschiedenen Anwendungsfällen verwendet werden können. Es gibt verschiedene Modelle des maschinellen Lernens, die für Klassifizierungsprobleme verwendet werden können.

Angefangen von Bagging- bis hin zu Boosting-Techniken, obwohl ML mehr als in der Lage ist, Klassifizierungsanwendungsfälle zu handhaben, kommen neuronale Netze ins Bild, wenn wir eine große Anzahl von Ausgabeklassen und eine große Datenmenge haben, um die Leistung des Modells zu unterstützen. In Zukunft werden wir uns ansehen, wie wir ein Klassifizierungsmodell mit neuronalen Netzwerken auf Keras (Python) implementieren können.

Lernen Sie künstliche Intelligenz von den besten Universitäten der Welt. Erwerben Sie Master-, Executive PGP- oder Advanced Certificate-Programme, um Ihre Karriere zu beschleunigen.

Inhaltsverzeichnis

Neuronale Netze

Neuronale Netze sind grob repräsentativ für das Lernen des menschlichen Gehirns. Ein künstliches neuronales Netzwerk besteht aus Neuronen, die wiederum für die Erstellung von Schichten verantwortlich sind. Diese Neuronen werden auch als abgestimmte Parameter bezeichnet.

Die Ausgabe jeder Schicht wird an die nächste Schicht weitergegeben. Es gibt verschiedene nichtlineare Aktivierungsfunktionen für jede Schicht, was den Lernprozess und die Ausgabe jeder Schicht unterstützt. Die Ausgangsschicht wird auch als Terminalneuron bezeichnet.

Quelle: Wikipedia

Die den Neuronen zugeordneten Gewichtungen, die für die Gesamtvorhersagen verantwortlich sind, werden in jeder Epoche aktualisiert. Die Lernrate wird mit verschiedenen Optimierern optimiert. Jedes neurale Netzwerk ist mit einer Kostenfunktion versehen, die minimiert wird, während das Lernen fortfährt. Dann werden die besten Gewichte verwendet, bei denen die Kostenfunktion die besten Ergebnisse liefert.

Lesen Sie: TensorFlow-Objekterkennungs-Tutorial für Anfänger

Klassifikationsproblem

Für diesen Artikel verwenden wir Keras, um das neuronale Netzwerk aufzubauen. Keras können mit den folgenden Befehlen direkt in Python importiert werden.

Tensorflow als tf importieren

von tensorflow import keras

aus keras.models import Sequential

aus keras.layers import Dense

Datensatz und Zielvariable

Wir werden einen Diabetes-Datensatz verwenden, der die folgenden Funktionen haben wird:

Eingabevariablen (X):

  • Schwangerschaften: Anzahl der Schwangerschaften
  • Glukose: Plasmaglukosekonzentration nach 2 Stunden in einem oralen Glukosetoleranztest
  • Blutdruck: Diastolischer Blutdruck (mm Hg)
  • SkinThickness: Hautfaltendicke des Trizeps (mm)
  • Insulin: 2-Stunden-Seruminsulin (mu U/ml)
  • BMI: Body-Mass-Index (Gewicht in kg/(Größe in m)^2)
  • DiabetesPedigreeFunction: Diabetes-Stammbaumfunktion
  • Alter: Alter (Jahre)

Ausgangsvariablen (y):

Ergebnis: Klassenvariable (0 oder 1) [Patient hat Diabetes oder nicht]

# Datensatz laden

df= loadtxt('pima-indians-diabetes.csv', delimiter=',')

# Daten in X (Eingabe) und Y (Ausgabe) aufteilen

X = Datensatz[:,0:8]

y = Datensatz[:,8]

Keras-Modell definieren

Wir können mit dem Aufbau des neuronalen Netzes beginnen, indem wir sequentielle Modelle verwenden. Dieser Top-Down-Ansatz hilft beim Aufbau einer neuronalen Netzarchitektur und spielt mit der Form und den Schichten. Die erste Ebene enthält die Anzahl der Features, die mit input_dim festgelegt werden können. Wir werden es in diesem Zustand auf 8 setzen.

Das Erstellen neuronaler Netze ist kein sehr einfacher Prozess. Es gibt viele Versuche und Irrtümer, die stattfinden, bevor ein gutes Modell gebaut wird. Wir werden eine vollständig verbundene Netzwerkstruktur mit der Dense-Klasse in Keras aufbauen. Das Neuron zählt als erstes Argument, das der dichten Schicht bereitgestellt wird.

Die Aktivierungsfunktion kann mit dem Aktivierungsargument eingestellt werden. Wir verwenden in diesem Fall die Gleichgerichtete Lineareinheit als Aktivierungsfunktion. Es gibt andere Optionen wie Sigmoid oder TanH, aber RELU ist eine sehr allgemeine und bessere Option.

# Definiere das Keras-Modell

Modell = Sequentiell ()

model.add(Dense(12, input_dim=8, activation='relu'))

model.add(Dense(8, activation='relu'))

model.add(Dense(1, activation='sigmoid'))

Kompilieren Sie das Keras-Modell

Das Kompilieren des Modells ist der nächste Schritt nach der Modelldefinition. Tensorflow wird für die Modellkompilierung verwendet. Kompilierung ist der Prozess, bei dem Parameter für Modelltraining und Vorhersagen festgelegt werden. CPU/GPU oder verteilte Speicher können im Hintergrund verwendet werden.

Wir müssen eine Verlustfunktion spezifizieren, die verwendet wird, um die Gewichte für die verschiedenen Schichten auszuwerten. Der Optimierer passt die Lernrate an und geht verschiedene Gewichtungssätze durch. In diesem Fall verwenden wir Binary Cross Entropy als Verlustfunktion. Im Fall des Optimierers verwenden wir ADAM, einen effizienten stochastischen Gradientenabstiegsalgorithmus.

Es wird sehr gerne zum Stimmen verwendet. Da es sich schließlich um ein Klassifizierungsproblem handelt, erfassen und melden wir die Klassifizierungsgenauigkeit, die über das Metrikargument definiert wird. In diesem Fall verwenden wir Genauigkeit.

# das Keras-Modell kompilieren

model.compile(loss='binary_crossentropy', optimizer='adam', metrics=['accuracy'])

Modellanpassung und Bewertung

Das Anpassen des Modells wird im Wesentlichen als Modelltraining bezeichnet. Nach dem Kompilieren des Modells ist das Modell bereit, die Daten effizient durchzugehen und sich selbst zu trainieren. Für den Prozess des Modelltrainings kann die Funktion fit() von Keras verwendet werden. Die zwei Hauptparameter, die vor dem Modelltraining verwendet werden, sind:

  1. Epochen: Ein Durchgang durch den gesamten Datensatz.
  2. Chargengröße: Gewichte werden bei jeder Chargengröße aktualisiert. Epochen bestehen aus gleichmäßig verteilten Datenstapeln.

# Passen Sie das Keras-Modell an den Datensatz an

model.fit(X, y, Epochen=150, Batch_Size=10)

Bei diesem Prozess wird eine GPU oder eine CPU verwendet. Das Training kann je nach Epochen, Stapelgröße und vor allem der Größe der Daten ein sehr langer Prozess sein.

Wir können das Modell auch auf dem Trainingsdatensatz mit der Funktion „evaluieren()“ auswerten. Die Daten können in Trainings- und Testsätze aufgeteilt werden und die Tests X und Y können für die Modellbewertung verwendet werden.

Für jedes Eingabe- und Ausgabepaar wird dies eine Prognose erstellen und Werte sammeln, einschließlich des durchschnittlichen Verlusts und aller Messungen, die wir installiert haben, wie z. B. Präzision.

Eine Liste mit zwei Werten wird von der Funktion „evaluieren()“ zurückgegeben. Der erste ist der Modellverlust im Datensatz und der zweite die Genauigkeit des Modells im Datensatz. Wir sind nur an der Genauigkeit des Berichts interessiert, daher werden wir die Bedeutung des Verlusts außer Acht lassen.

# Bewerten Sie das Keras-Modell

_, Genauigkeit = model.evaluate(Xtest, ytest)

print('Genauigkeit: %.2f' % (Genauigkeit*100))

Lesen Sie auch: Einführung in das neuronale Netzwerkmodell

Fazit

Wir haben ein klassifikationsbasiertes neuronales Netzwerk erstellt und evaluiert. Obwohl die verwendeten Daten in diesem Fall klein waren, eignen sich neuronale Netze hauptsächlich für große numerische Datensätze.

Informieren Sie sich über das Advanced Certificate Program von upGrad in Machine Learning & NLP. Dieser Kurs wurde unter Berücksichtigung verschiedener Arten von Studenten entwickelt, die sich für maschinelles Lernen interessieren, und bietet 1-1-Mentoring und vieles mehr.

Wie können neuronale Netze zur Klassifikation genutzt werden?

Bei der Klassifizierung geht es darum, Objekte in Gruppen zu kategorisieren. Bei einer Art Klassifizierung werden mehrere Klassen vorhergesagt. In neuronalen Netzen sind neuronale Einheiten in Schichten organisiert. In der ersten Schicht wird die Eingabe verarbeitet und eine Ausgabe erzeugt. Diese Ausgabe wird dann durch die verbleibenden Schichten geschickt, um die endgültige Ausgabe zu erzeugen. Dieselbe Eingabe wird durch die Schicht verarbeitet, um unterschiedliche Ausgaben zu erzeugen. Dies kann mit einem mehrschichtigen Perzeptron dargestellt werden. Die Art des für die Klassifizierung verwendeten neuronalen Netzes hängt vom Datensatz ab, aber neuronale Netze wurden für Klassifizierungsprobleme verwendet.

Warum sind künstliche neuronale Netze gut für die Klassifizierung?

Um diese Frage zu beantworten, müssen wir das Grundprinzip neuronaler Netze und das Problem verstehen, das neuronale Netze lösen sollen. Wie der Name schon sagt, sind neuronale Netze ein biologisch inspiriertes Modell des menschlichen Gehirns. Die Grundidee ist, dass wir ein Neuron als mathematische Funktion modellieren wollen. Jedes Neuron nimmt Eingaben von anderen Neuronen und berechnet eine Ausgabe. Dann verbinden wir diese Neuronen auf eine Weise, die das neuronale Netzwerk im Gehirn nachahmt. Ziel ist es, ein Netzwerk zu lernen, das einige Daten aufnehmen und eine entsprechende Ausgabe erzeugen kann.

Wann sollten wir künstliche neuronale Netze einsetzen?

Künstliche neuronale Netze werden in Situationen eingesetzt, in denen Sie versuchen, die Leistung lebender Organismen zu duplizieren oder Muster in Daten zu erkennen. Medizinische Diagnosen, Spracherkennung, Visualisierung von Daten und die Vorhersage handgeschriebener Ziffern sind gute Anwendungsfälle für ein KNN. Künstliche neuronale Netze werden verwendet, wenn es darum geht, komplexe Beziehungen zwischen Eingaben und Ausgaben zu verstehen. Beispielsweise können die Variablen viel Rauschen enthalten und es kann schwierig sein, die Beziehungen zwischen diesen Variablen zu verstehen. Daher ist die Verwendung künstlicher neuronaler Netze eine gängige Praxis, um das Wissen und die Daten zu erhalten.