Maschinelles Lernen in SQL Server





ML Toolkit in SQL Server In



diesem Artikel werden die Schritte zum Erstellen einer Prozedur beschrieben, bei der mithilfe des in R enthaltenen mtcars-Datasets ein einfaches verallgemeinertes lineares Modell (GLM) erstellt wird, mit dem die Wahrscheinlichkeit vorhergesagt werden kann, dass ein Fahrzeug mit einem manuellen Getriebe ausgestattet ist. Die zweite Prozedur dient der Schätzung - sie ruft das in der ersten Prozedur erstellte Modell auf, um eine Reihe von Vorhersagen basierend auf den neuen Daten auszugeben.



Erläuterung der Begriffe



SQL ist eine Sprache für strukturierte Abfragen, die an die Datenbank gesendet werden.



SQL Server ist eine relationale Datenbank von Microsoft.



Machine Learning Services ist eine Komponente von SQL Server, mit der Sie Python- und R-Skripte für Daten ausführen können.



Ein Trigger in SQL ist ein Mechanismus, um auf eine Änderung des Status einer Datenbank zu reagieren.



Skripte sind kleine Programme, die für einen engen, meist periodischen Aufgabenbereich konzipiert sind.



R ist eine Programmiersprache, die speziell für die Datenverarbeitung erstellt wurde.



Gründe, warum SQL Server für das maschinelle Lernen von



Vorteil ist Lassen Sie uns die Liste der verfügbaren Vorteile der Verwendung von ML in SQL Server diskutieren.



Einer der wichtigsten Gründe ist die bequeme Speicherung von SQL-Befehlen und ML-Code in einem gemeinsamen Sichtbarkeitsbereich, sodass Sie die beiden Technologien optimal nutzen können.



Ein weiterer wichtiger Grund ist die Sicherheit, denn wenn sich der bedingte Datenbankserver an einem Ort befindet und Anforderungen an ihn von einem anderen Ort kommen, können die Daten abgefangen werden. Wenn der DBMS-Kernel sowohl Daten speichert als auch Code aufruft, kann dieses Problem vermieden werden.



SQL Server bietet unter anderem eine gute Unterstützung für die Programmiersprache R, sowohl in Bezug auf die bereitgestellten Bibliotheken als auch in Bezug auf die Leistung. Nach den neuesten Benchmarks kann die Datenbank-Engine etwa eine Million R-Vorhersagen pro Sekunde berechnen ( Link ).



Überprüfen des Zustands von SQL Server



Stellen wir zunächst sicher, dass der maschinelle Lerndienst und die Erweiterungen für R wie erwartet funktionieren. Führen Sie dazu den folgenden Code aus.



EXEC sp_execute_external_script @language = N'R'
, @script = N'
OutputDataSet <- data.frame(installed.packages()[,c("Package", ...;'
WITH result sets((Package NVARCHAR(255)
, Version NVARCHAR(100)...));


Ergebnis:







Lassen Sie uns den SQL-Befehl kurz analysieren:



1.  EXEC sp_execute_external_script @language = N'R'
Hier definieren wir, dass der Kernel die R-Sprache verarbeiten soll



2.  @script = N'OutputDataSet <- data.frame(installed...'
Skript Dies ist eine spezielle Variable, die in einer nachfolgenden Anforderung verarbeitet werden kann und dem Ergebnis des R-Befehls entspricht



3.  WITH result sets((Package NVARCHAR(255)..
Es wird eine rekursive Inhaltsanzeigeoperation verwendet Skriptin Form einer Tabelle.



Ein Beispiel für die Verwendung von ML in SQL Server ( Link )



Erstellen Sie eine Tabelle zum Speichern der Daten, mit denen das Modell trainiert wird:



CREATE TABLE dbo.MTCars(
hp int NOT NULL,
...
wt decimal(10, 3) NOT NULL,
am int NOT NULL);


Wir geben Daten ein:



INSERT INTO dbo.MTCars
EXEC sp_execute_external_script @language = N'R'
    , @script = N'MTCars <- mtcars;'
    , @input_data_1 = N''
    , @output_data_1_name = N'MTCars';


Ergebnis:







Modell erstellen und trainieren:



CREATE PROCEDURE generate_GLM
... , @script = N'carsModel <- carsModel <- glm(... data = MTCarsData, ...;
        trained_model <- ...'
    , @input_data_1 = N'SELECT hp, wt, am FROM MTCars'
    , @input_data_1_name = N'MTCarsData'
    ...;


In diesem Stadium möchte ich mich darauf konzentrieren, wie R Daten in der SQL Server-Engine empfängt: @ input_data_1 sind die Tabellenspalten, die im Code als Variable @ input_data_1_name dargestellt werden.



Erstellen Sie eine Tabelle für das Modell:



CREATE TABLE GLM_models (
    model_name varchar(30) not null default('default model') primary key,
    model varbinary(max) not null
);


Wir speichern das Modell:



INSERT INTO GLM_models(model)
EXEC generate_GLM;


Ergebnis:







SQL Server kann trainierte Modelle in Tabellen laden, damit sie später schnell wiederverwendet werden können.



Wir erstellen eine Tabelle, in der Daten für die Analyse gespeichert werden:



CREATE TABLE dbo.NewMTCars(
    hp INT NOT NULL
    , wt DECIMAL (10,3) NOT NULL
    , am INT NULL)


Wir füllen mit zufälligen Daten innerhalb des erforderlichen Bereichs:




INSERT INTO dbo.NewMTCars(hp, wt) VALUES (110, 2.634)
INSERT INTO dbo.NewMTCars(hp, wt) VALUES (72, 3.435)
INSERT INTO dbo.NewMTCars(hp, wt) VALUES (220, 5.220)
INSERT INTO dbo.NewMTCars(hp, wt) VALUES (120, 2.800)


Ergebnis: Wir







prognostizieren das Ergebnis für neue Daten:



DECLARE @glmmodel varbinary(max) = ...
    ...    , @script = N'
            --     
            '
   --    ;


Ergebnis:







Je näher predicated_am an eins liegt, desto größer ist die Wahrscheinlichkeit, dass das Auto über ein Schaltgetriebe verfügt.



Schlussfolgerung



Zusätzlich zu diesem Beispiel kann maschinelles Lernen in der Datenverarbeitung verwendet werden, um nützliche Informationen vom Rauschen zu trennen, Abhängigkeiten zwischen Spalten zu finden und vieles mehr.



Zusätzlich zu den oben dargestellten Funktionen können Sie erweiterte Vorhersagemethoden anwenden und Trigger einrichten, die jedes Mal ausgelöst werden, wenn neue Informationen eingehen:



CREATE TRIGGER `add_car` AFTER INSERT ON `NewMTCars `


… Wenden Sie das Prognoseverfahren an.



All Articles