Geldautomaten-Bargeldabhebungsprognose über ein einfaches neuronales Netzwerk

  • Tutorial


Vielleicht haben Sie jemals einen Geldautomaten im Außerbetriebnahmemodus getroffen.

Ein möglicher Grund für diesen Zustand ist der Mangel an Elektrizität in den Kassetten.

Um dies zu verhindern, sind Banken daran interessiert, die Zukunft zu kennen - wie viel Bargeld an Geldautomaten abgehoben wird und wann das Geld ausgeht.

Unter dem Schnitt lösen Sie dieses Problem mit einem einfachen neuronalen Netzwerk.



Lassen Sie uns zunächst herausfinden, was ein neuronales Netzwerk ist. Aus amateurhafter Sicht kann ein neuronales Netzwerk als eine Art „Black Box“ dargestellt werden, die an den Ein- und Ausgängen einen bestimmten Parametersatz empfängt. Ein neuronales Netzwerk zu trainieren bedeutet, es auf einem Referenzsatz von Eingabe- und Ausgabedaten zu trainieren, der als Trainingssatz bezeichnet wird.

Betrachten Sie ein einfaches Beispiel.

Wir lernen mit Hilfe eines neuronalen Netzwerks, den Wert der Funktion "Exklusiv" ODER "zu finden.



Hier sind a und b links Eingabeparameter und a⊕b rechts der Ausgabeparameter. Nachdem wir das neuronale Netzwerk auf der Wahrheitstabelle trainiert haben, können wir dem Netzwerkeingang eine beliebige Kombination von Nullen und Einsen zuführen und am Ausgang das richtige Ergebnis erhalten. Ein aufmerksamer Leser bemerkte, dass unabhängig vom Wert der Nullen und Einsen, die wir nach dem Training annehmen, dieser mit einem der Trainingspaare übereinstimmt. Bei realen Aufgaben ist dies normalerweise nicht der Fall.

Zurück zu unseren Geldautomaten.

Um Vorhersagen zu treffen, müssen Sie sich zuerst etwas einfallen lassenIdentifizieren Sie die Anzeichen, von denen die Höhe der abgehobenen Mittel abhängt. Dies geschieht durch Analyse der Statistiken und Anwendung des gesunden Menschenverstandes. So wurde festgestellt, dass der Geldbetrag, der an denselben Wochentagen abgehoben wird, normalerweise ähnlich ist. Als Ergebnis haben wir das folgende neuronale Netz erhalten:



Für die Vorhersage für Montag von „Woche 3“ werden Daten für die beiden vorherigen Montage an den Eingang des neuronalen Netzes gesendet. Dieses neuronale Netzwerk ist gut, kann jedoch keine Spitzen für Bargeldabhebungen an bestimmten Daten des Monats vorhersagen (Gehalt?). Sie werden vom folgenden neuronalen Netzwerk gut vorhergesagt:



Für die Prognose für den 5. Tag von „Monat 3“ werden Daten für den 4., 5., 6. der letzten zwei Monate in die Eingabe eingespeist (dies hilft, die Prognose zu verbessern, wenn der „Spitzentag“ aufgrund des freien Tages auf ± 1 Tag verschoben wird oder Urlaub).

Infolgedessen könnten wir den Durchschnittswert der Vorhersagen der beiden vorherigen neuronalen Netze verwenden. Die beste Lösung bestand jedoch darin, sie zu einem großen Neuron zu kombinieren:



Um Unternehmensgeheimnisse nicht zu verletzen und einen Artikel aufzublasen, wurden einige wichtige technische Details (Arten von Neuronen, Arten von Schulungen, Datennormalisierung und andere) weggelassen. Aber ich hoffe, dass ein nicht eingeweihter Leser eine Vorstellung davon hat, wie dieses Ding funktioniert.

Herrin Notiz
Für die Implementierung wurde das Encog-Framework für maschinelles Lernen verwendet (verfügbar unter .Net, Java und C ++). Es ermöglicht Ihnen, neuronale Netze auf hoher Ebene zu erstellen, wobei die Arten von Neuronen und ihre Anzahl in jeder Netzwerkschicht angegeben werden:
var network = new BasicNetwork();
network.AddLayer(new BasicLayer(null, true, 2));
network.AddLayer(new BasicLayer(new ActivationSigmoid(), true, 3));
network.AddLayer(new BasicLayer(new ActivationSigmoid(), true, 1));
network.Structure.FinalizeStructure();
network.Reset();

Wenn Sie die ziemlich komplexe Mathematik von Neuronen und Lehrmethoden nicht verstehen möchten, empfehle ich, eine vorgefertigte Bibliothek für Ihre Sprache zu finden.

Jetzt auch beliebt: