Künstliche neuronale Netzwerke in SQL Server einsetzen III

Smarte Datenbanken - Teil 3

Anwendung des trainierten neuronalen Netzes

Das in Teil 2 des Artikels erzeugte Modell setze ich in diesem Teil in SQL Server ein, um Diagnosen über neue Tumorbiopsie-Daten zu erhalten.

Bereitstellung und Anwendung

  1. Legen Sie im SQL Server mithilfe des Skripts aus Listing 4 eine Tabelle an, in der neue Datensätze abgelegt werden können. Die Tabelle spiegelt die Datenstruktur des Tumorbiopsie-Beispiels wider.

Listing 4: Anlage einer Biopsie-Tabelle für die Dateneingabe

  1. Öffnen Sie in RStudio eine Verbindung zum SQL Server und erstellen Sie eine Tabelle namens Models, in der das trainierte Netzwerk abgelegt werden soll (Listing 5). Die Tabelle kann selbstverständlich auch im SQL Server direkt angelegt werden; es soll hier aber demonstriert werden, wie Sie SQL-Befehle von RStudio aus absetzen können.

Listing 5: Anlage einer Tabelle für das trainierte Modell

  1. Speichern Sie das Modell über die rxWriteObject-Funktion in der Tabelle ab, wobei es serialisiert und komprimiert wird.rxWriteObject( ds, “rxNeuralNet”, trained_net, version = “1.0”, keyName = “Name”, valueName = “Model”, versionName = “Version” )
  2. Legen Sie im SQL Server eine Gespeicherte Prozedur namens PredictBiopsy gemäß Listing 6 an. Die Aufgabe dieser Prozedur ist, Messwerte entgegenzunehmen, an ein beliebiges Modell weiterzureichen und die aus dem Modell stammenden Ergebnissätze zurückzuliefern. Dabei wird ein externes R-Skript aufgerufen, das innerhalb der Gespeicherten Prozedur definiert ist (siehe auch Verwenden von R-Code in Transact-SQL).

Listing 6: Die Gespeicherte Prozedur PredictBiopsy zum Aufruf des Modells

  1. Legen Sie die Gespeicherte Prozedur PredictNewBiopsies aus Listing 7 an. Sie ermittelt alle Datensätze aus der Tabelle Biopsy, für die noch keine Diagnose gestellt wurde, übergibt die ID und die Messwerte V1 bis V9 an die Prozedur PredictBiopsy, speichert das zurückgelieferte Ergebnis in der Tabellenvariablen @result und aktualisiert zuletzt die Tabelle Biopsy mit den Ergebnissen. In Fällen, in denen das Modell keine Voraussage machen kann, weil ein Messwert fehlt, wird die Diagnose auf NA (nicht anwendbar) gesetzt.

Listing 7: Die Gespeicherte Prozedur PredictNewBiopsies für die Auswertung neuer Testdaten

  1. Um Ihr neuronales Netz in Aktion zu sehen, tragen Sie neue Datensätze in die Tabelle Biopsy ein und starten Sie die Gespeicherte Prozedur wie folgt:EXEC PredictNewBiopsies @ModelName = ‘rxNeuralNet’, @Version = ‘1.0’

Fazit

Es ist nicht schwierig, eine Datenbank mit maßgeschneiderten künstlichen neuronalen Netzen auszustatten und damit datenbankbasierte Anwendungen um lernfähige Algorithmen zu erweitern. Wer SQL Server ohnehin einsetzt, der benötigt in Zukunft auch keine weitere Serversoftware. Damit wird die Einstiegshürde zur Entwicklung “smarter” Anwendungen im Microsoft-Umfeld deutlich gesenkt.

Was sicherlich noch fehlt, ist eine Integration in die .NET-Welt. Derzeit führt SQL Server lediglich R- und Python-Skripte aus. Auch müssen die Skripte in Gespeicherte Prozeduren eingebunden werden, was kein besonders eleganter Ansatz ist. Aber Microsoft R steht noch am Anfang. Interessant wird die Einbindung in Visual Studio mittels der gerade in Version 1.0 erschienenen R Tools for Visual Studio.

Artikelserie "Smarte Datenbank"

Jetzt teilen: