Topik ini menjelaskan cara menggunakan pembelajaran mesin (ML) Lindorm untuk melakukan pembelajaran mesin di dalam basis data, termasuk pelatihan model, inferensi model, dan manajemen model.
Ikhtisar
Lindorm ML adalah layanan pembelajaran mesin dalam basis data siap pakai yang disediakan oleh LindormTSDB. Proses Lindorm ML mencakup langkah-langkah berikut: pelatihan model, inferensi model, dan manajemen model. Setelah mengaktifkan Lindorm ML, Anda dapat mengeksekusi pernyataan SQL untuk melaksanakan seluruh proses pembelajaran mesin di dalam basis data guna mengeksplorasi lebih banyak nilai data. Lindorm ML memiliki keuntungan sebagai berikut:
- Mudah digunakan: Anda dapat mengeksekusi pernyataan SQL standar untuk melaksanakan seluruh proses pembelajaran mesin di dalam basis data tanpa memerlukan pengetahuan profesional tentang pembelajaran mesin.
- Penyimpanan data: Tidak perlu mengekspor data ke platform eksternal untuk pembelajaran mesin. Hal ini meningkatkan efisiensi pembelajaran mesin dan membantu data Anda memenuhi persyaratan regulasi.
- Fitur perusahaan: Di Lindorm ML, model dan data keduanya disimpan di dalam basis data. Oleh karena itu, Anda dapat menggunakan fitur perusahaan yang disediakan untuk basis data dalam pembelajaran mesin, seperti manajemen izin, audit data, dan enkripsi data.
Aktifkan Lindorm ML
Untuk informasi lebih lanjut tentang cara mengaktifkan Lindorm ML, lihat Aktifkan Lindorm ML.
Pelatihan model
Saat melatih model di Lindorm ML, Anda harus menentukan jenis tugas yang perlu dieksekusi oleh model. Lindorm ML menyediakan algoritma yang berbeda untuk jenis tugas yang berbeda. Anda dapat menggunakan pernyataan CREATE MODEL yang diperluas di basis data Anda untuk melatih model.
Sintaks
CREATE MODEL nama_model
DARI { nama_tabel | (pernyataan_select) }
[ TARGET nama_kolom ]
TUGAS ( PERAMALAN_DERET_WAKTU | DETEKSI_ANOMALI_DERET_WAKTU )
ALGORITMA ( DEEPAR | TFT | esd | nsigma | ttest )
[ PREPROCESSORS 'string' ]
PENGATURAN (
EPOCHS bilangan_bulat,
...
)Parameter
- nama_model: Nama model. Nama model unik dalam satu skema.
- DARI { nama_tabel | (pernyataan_select) }: Nama tabel atau pernyataan query yang berisi data yang digunakan untuk melatih model. Hasil dari pernyataan tersebut harus berisi setidaknya dua kolom, salah satunya harus merupakan kolom waktu.
- TARGET nama_kolom: Nama kolom yang digunakan untuk menentukan target peramalan deret waktu atau deteksi anomali deret waktu.
- TUGAS: Jenis tugas yang perlu dieksekusi oleh model. Tabel berikut menjelaskan jenis tugas yang didukung oleh Lindorm ML.
Jenis tugas Kata kunci Peramalan deret waktu PERAMALAN_DERET_WAKTU Deteksi anomali deret waktu DETEKSI_ANOMALI_DERET_WAKTU - ALGORITMA: Algoritma yang digunakan oleh model. Tabel berikut menjelaskan algoritma yang didukung oleh Lindorm ML.
Jenis tugas Algoritma Deskripsi Peramalan deret waktu DeepAR Algoritma DeepAR adalah algoritma jaringan saraf dalam berbasis pada jaringan saraf berulang (RNN). Untuk informasi lebih lanjut, lihat makalah terkait. TFT Algoritma Temporal Fusion Transformer (TFT) adalah algoritma jaringan saraf dalam berbasis pada mekanisme Transformer. Untuk informasi lebih lanjut, lihat makalah terkait. Deteksi anomali deret waktu esd Algoritma ini dikembangkan oleh Akademi DAMO Alibaba dan cocok untuk anomali berpuncak, seperti puncak dalam kurva pemantauan dan skenario di mana sejumlah kecil titik data sangat berbeda dari data lainnya. Untuk informasi lebih lanjut, lihat Deteksi anomali deret waktu. nsigma Algoritma ini dikembangkan oleh Akademi DAMO Alibaba. Algoritma ini sederhana dan mudah untuk menganalisis penyebab anomali. Untuk informasi lebih lanjut, lihat Deteksi anomali deret waktu. ttest Algoritma ini dikembangkan oleh Akademi DAMO Alibaba. Algoritma ini digunakan untuk mengidentifikasi apakah metrik terkait dengan data deret waktu abnormal karena perubahan nilai rata-rata. Untuk informasi lebih lanjut, lihat Deteksi anomali deret waktu. - PREPROCESSORS 'string': Operasi pra-pemrosesan untuk kolom tertentu. Parameter ini opsional. Secara umum, operasi pra-pemrosesan ditentukan oleh string JSON.
Nilai parameter PREPROCESSORS berisi dua komponen: Kolom yang menunjukkan kolom yang perlu diproses dan Transformers yang menunjukkan operasi pra-pemrosesan yang akan dilakukan. Operasi yang ditentukan oleh Transformers dilakukan sesuai urutan yang ditentukan. Setiap komponen Transformers berisi dua bidang: Nama yang menentukan nama operasi pra-pemrosesan dan Parameter yang menentukan parameter terkait operasi pra-pemrosesan. Contoh berikut menunjukkan contoh nilai parameter PREPROCESSORS:
PREPROCESSORS '[ { "Columns":[ "c1" ], "Transformers":[ { "Name": "Imputer", "Parameters": {"value": 0} }, { "Name": "StandardScaler" } ] }, { "Columns":[ "c2", "c3" ], "Transformers":[ { "Name": "OrdinalEncoder" } ] } ]'Catatan Dalam nilai parameter PREPROCESSORS, komponen Kolom dan bidang Parameter keduanya bersifat opsional.Operasi pra-pemrosesan yang ditentukan selama pelatihan model secara otomatis dilakukan dalam inferensi model. Tabel berikut menjelaskan operasi pra-pemrosesan yang didukung oleh Lindorm ML.
Operasi pra-pemrosesan Parameter Deskripsi OneHotEncoder Tidak ada Mengkodekan fitur kategorikal menjadi nilai biner. Operasi ini berlaku untuk fitur kategorikal yang tidak dapat dibandingkan ukurannya. OrdinalEncoder Tidak ada Mengkodekan fitur kategorikal menjadi bilangan bulat mulai dari 0. Operasi ini berlaku untuk fitur kategorikal yang dapat dibandingkan ukurannya. Imputer - method: string yang menunjukkan metode interpolasi. Nilai valid: dummy, mean, median, most_frequent, roll7, dan last. Nilai default: dummy.
- value: bilangan bulat yang perlu diinterpolasi. Nilai default: 0. Parameter ini opsional.
Menginterpolasi nilai yang hilang. Anda dapat memilih beberapa kebijakan interpolasi. StandardScaler Tidak ada Mengonversi data menjadi nilai yang mengikuti distribusi normal standar dengan rata-rata 0 dan deviasi standar 1. Operasi ini juga dikenal sebagai normalisasi z-score. MinMaxScaler - min: bilangan bulat yang menunjukkan nilai minimum rentang.
- max: bilangan bulat yang menunjukkan nilai maksimum rentang. Parameter ini opsional.
Menskalakan data ke dalam rentang (min,max). Secara default, rentang nilainya adalah (0,1). LogTransformer Tidak ada Mengonversi nilai menjadi logaritmanya. - SETTINGS: Parameter lain yang dapat dikonfigurasikan. Anda dapat menentukan parameter yang berbeda untuk jenis tugas yang berbeda. Tabel berikut menjelaskan parameter yang didukung oleh Lindorm ML.
Parameter terkait peramalan deret waktu
Parameter Tipe Deskripsi Diperlukan epochs INTEGER Jumlah epoch untuk pelatihan model. Parameter ini hanya berlaku untuk peramalan deret waktu. Nilai default: 80 Ya time_column VARCHAR Kolom waktu. Ya group_columns VARCHAR Kolom grup. Kolom ini digunakan sebagai kolom TAG untuk menentukan deret waktu. Ya freq VARCHAR Frekuensi data deret waktu. Contoh: 1D. Ya prediction_length INTEGER Ukuran langkah peramalan deret waktu. Ya feat_static_columns VARCHAR Set kolom fitur statis. Pisahkan beberapa kolom dengan koma (,). Tidak Parameter terkait deteksi anomali deret waktu.
Untuk informasi lebih lanjut tentang parameter pelatihan yang didukung oleh deteksi anomali deret waktu, lihat Deteksi Anomali Deret Waktu.
Contoh
CREATE MODEL tft_model
FROM (SELECT * FROM fresh_sales WHERE `time` > '2021-02-08T00:00:00+08:00')
TARGET sales
TASK peramalan_deret_waktu
ALGORITMA tft
PENGATURAN
(
time_column 'time',
group_columns 'id_code',
feat_static_columns 'cate1_id,cate2_id,brand_id',
context_length '28',
prediction_length '6',
epochs '5',
freq '1D'
);Manajemen model
Setelah pernyataan CREATE MODEL dieksekusi, Anda dapat mengeksekusi pernyataan SQL untuk memeriksa apakah model berada dalam status Ready.
Lihat informasi tentang semua model dalam basis data
Anda dapat menggunakan pernyataan SHOW MODELS untuk melihat informasi dasar tentang semua model dalam basis data.
Pernyataan berikut memberikan contoh cara melihat informasi tentang semua model dalam basis data:
SHOW MODELS;Informasi berikut dikembalikan:
+-------------------+--------+--------------------+-------------------------------+-------------------------------+
| name | status | sql_function | created_time | update_time |
+-------------------+--------+--------------------+-------------------------------+-------------------------------+
| tft_model | Ready | forecast | 2022-11-04T11:38:05.873+08:00 | 2022-11-04T11:39:14.046+08:00 |
+-------------------+--------+--------------------+-------------------------------+-------------------------------+
1 rows in set (524 ms)Tabel berikut menjelaskan nilai-nilai yang dikembalikan.
| Nilai yang dikembalikan | Deskripsi |
| name | Nama model. |
| status | Status model. Nilai valid: Init, Training, Ready, dan Failed. Nilai Init menunjukkan bahwa model sedang diinisialisasi. Nilai Training menunjukkan bahwa model sedang dilatih. Nilai Ready menunjukkan bahwa model telah dilatih. Nilai Failed menunjukkan bahwa model gagal dilatih. |
| sql_function | Fungsi inferensi. |
| created_time | Waktu saat model dibuat. |
| update_time | Waktu terakhir model diperbarui. |
Lihat informasi tentang model tertentu
Anda dapat menggunakan pernyataan SHOW MODEL nama_model untuk melihat informasi detail tentang model tertentu.
Pernyataan berikut memberikan contoh cara melihat informasi detail tentang model tertentu:
SHOW MODEL tft_model;Informasi berikut dikembalikan:
+-----------+--------+--------------+----------------------+-----------+------------------------------------+---------------+-------------------------------------------------+--------------------------------+-------------------------------+-------------------------------+
| name | status | sql_function | task_type | algorithm | query | preprocessors | settings | metrics | created_time | update_time |
+-----------+--------+--------------+----------------------+-----------+------------------------------------+---------------+-------------------------------------------------+--------------------------------+-------------------------------+-------------------------------+
| tft_model | Ready | forecast | PERAMALAN_DERET_WAKTU | TFT | SELECT `time`, FIRST(`sales`) AS | [] | {time_column=time, group_columns=id_code, | {MAPE=0.35002756118774414, | 2022-11-04T11:38:05.873+08:00 | 2022-11-04T11:39:14.046+08:00 |
| | | | | | `sales`, `id_code`, `cate1_id`, | | feat_static_columns=cate1_id,cate2_id,brand_id, | MASE=0.41281554008773325, | | |
| | | | | | `cate2_id`, `brand_id` FROM | | context_length=28, prediction_length=6, | MSE=456.3769938151042} | | |
| | | | | | `fresh_sales` WHERE `time` > | | epochs=5, freq=1D,train_mode=LOCAL, | | | |
| | | | | | '2021-02-08T00:00:00+08:00' | | past_length=28, | | | |
| | | | | | sample by 1D fill zero | | forecast_start=2022-07-31 08:00:00} | | | |
+-----------+--------+--------------+----------------------+-----------+------------------------------------+---------------+-------------------------------------------------+--------------------------------+-------------------------------+-------------------------------+
1 rows in set (334 ms)Tabel berikut menjelaskan nilai-nilai yang dikembalikan.
| Nilai yang dikembalikan | Deskripsi |
| task_type | Jenis tugas yang perlu dieksekusi oleh model. |
| algorithm | Nama algoritma yang digunakan oleh model. |
| query | Pernyataan query yang digunakan untuk melatih model. |
| preprocessors | Sintaks untuk operasi pra-pemrosesan. |
| settings | Parameter terkait model. |
| metrics | Metrik untuk model. |
Hapus model tertentu
Anda dapat menggunakan pernyataan DROP MODEL nama_model untuk menghapus model tertentu.
Pernyataan berikut memberikan contoh cara menghapus model tertentu:
DROP MODEL tft_model;Informasi berikut dikembalikan:
No rows affected (0.397 seconds)Inferensi model
Jika model berada dalam status Ready, Anda dapat menggunakan fungsi sistem untuk melakukan inferensi model. Anda dapat menggunakan fungsi yang berbeda untuk jenis tugas yang berbeda.
Sintaks
SELECT nama_fungsi(nama_field, nama_model, params) DARI nama_tabel [WHERE clause] SAMPLE BY 0;- FORECAST: Fungsi yang digunakan untuk peramalan deret waktu. Untuk informasi lebih lanjut tentang cara mengonfigurasi parameter field_name, model_name, dan params dari fungsi FORECAST, lihat Fungsi Peramalan Deret Waktu.
- ANOMALY_DETECT: Fungsi yang digunakan untuk deteksi anomali deret waktu. Untuk informasi lebih lanjut tentang cara mengonfigurasi parameter field_name, model_name, dan params dari fungsi ANOMALY_DETECT, lihat Fungsi Deteksi Anomali Deret Waktu.
Contoh
SELECT device_id, region, `time`, raw(temperature) as temperature, anomaly_detect(temperature, ad_model) as detect_result from sensor WHERE time >= '2022-01-01 00:00:00' and time < '2022-01-01 00:01:00' SAMPLE BY 0;