Pembelajaran Mesin di SQL Server





ML Toolkit Di Dalam SQL Server



Artikel ini menjelaskan langkah-langkah untuk membuat prosedur yang menggunakan set data mtcars yang disertakan dalam R untuk membuat model linier umum sederhana (GLM) yang dapat memprediksi kemungkinan kendaraan dilengkapi dengan transmisi manual. Prosedur kedua adalah untuk estimasi - ia memanggil model yang dibuat pada prosedur pertama untuk mengeluarkan serangkaian prediksi berdasarkan data baru.



Penjelasan istilah



SQL adalah bahasa query terstruktur yang dikirim ke database.



SQL Server adalah database relasional dari Microsoft.



Layanan Pembelajaran Mesin adalah komponen SQL Server yang memungkinkan Anda menjalankan skrip Python dan R pada data.



Pemicu dalam SQL adalah mekanisme untuk bereaksi terhadap perubahan status database.



Skrip adalah program kecil yang dirancang untuk rentang tugas yang sempit, paling sering berkala.



R adalah bahasa pemrograman yang dibuat khusus untuk pemrosesan data.



Alasan Mengapa SQL Server Bermanfaat untuk Pembelajaran Mesin



Mari kita bahas daftar manfaat yang tersedia dari penggunaan ML di SQL Server.



Salah satu alasan terpenting adalah kenyamanan menyimpan perintah SQL dan kode ML di area visibilitas umum, yang memungkinkan Anda memanfaatkan kedua teknologi tersebut sepenuhnya.



Alasan penting lainnya adalah keamanan, karena jika server database bersyarat berada di satu tempat, dan permintaan untuk itu datang dari tempat lain, data dapat dicegat. Jika kernel DBMS menyimpan data dan kode panggilan, masalah ini dapat dihindari.



Antara lain, SQL Server memiliki dukungan yang baik untuk bahasa pemrograman R, baik dari segi perpustakaan yang disediakan maupun dari segi kinerja. Menurut tolok ukur terbaru, mesin database mampu menghitung sekitar satu juta prediksi R per detik ( tautan ).



Memeriksa kesehatan SQL Server



Pertama-tama, pastikan layanan machine learning dan ekstensi untuk R berfungsi seperti yang diharapkan. Untuk melakukan ini, mari kita jalankan kode berikut.



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)...));


Hasil:







Mari menganalisis secara singkat perintah SQL:



1.  EXEC sp_execute_external_script @language = N'R'
Di sini kami mendefinisikan bahwa kernel harus menangani bahasa R.



2.  @script = N'OutputDataSet <- data.frame(installed...'
naskah ini adalah variabel khusus yang dapat diproses dalam permintaan berikutnya, sama dengan hasil dari perintah R.



3.  WITH result sets((Package NVARCHAR(255)..
Operasi tampilan konten rekursif digunakan naskahdalam bentuk tabel.



Contoh penggunaan ML di SQL Server ( link )



Buat tabel untuk menyimpan data yang akan kita latih modelnya:



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


Kami memasukkan data ke dalamnya:



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';


Hasil:







Buat dan latih model:



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'
    ...;


Pada tahap ini, saya ingin fokus pada bagaimana R menerima data pada mesin SQL Server: @ input_data_1 adalah kolom tabel, yang direpresentasikan dalam kode sebagai variabel @ input_data_1_name



Buat tabel untuk model:



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


Kami menyimpan model:



INSERT INTO GLM_models(model)
EXEC generate_GLM;


Hasil:







SQL Server dapat memuat model yang dilatih ke dalam tabel sehingga dapat digunakan kembali dengan cepat nanti.



Kami membuat tabel di mana data untuk analisis akan disimpan:



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


Kami mengisi dengan data acak dalam kisaran yang diperlukan:




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)


Hasil: Kami







memprediksi hasil untuk data baru:



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


Hasilnya:







Semakin dekat predicated_am ke satu, semakin besar kemungkinan mobil tersebut memiliki transmisi manual.



Kesimpulan



Selain contoh ini, pembelajaran mesin dalam pemrosesan data dapat digunakan untuk memisahkan informasi yang berguna dari noise, menemukan dependensi antar kolom, dan banyak lagi.



Selain fungsionalitas yang disajikan di atas, Anda dapat menerapkan metode prediksi yang lebih canggih dan menyiapkan pemicu yang diaktifkan setiap kali informasi baru masuk seperti:



CREATE TRIGGER `add_car` AFTER INSERT ON `NewMTCars `


… Terapkan prosedur peramalan.



All Articles