全部产品
Search
文档中心

:Pembelajaran mesin dalam basis data

更新时间:Nov 09, 2025

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 tugasKata kunci
    Peramalan deret waktuPERAMALAN_DERET_WAKTU
    Deteksi anomali deret waktuDETEKSI_ANOMALI_DERET_WAKTU
  • ALGORITMA: Algoritma yang digunakan oleh model. Tabel berikut menjelaskan algoritma yang didukung oleh Lindorm ML.
    Jenis tugasAlgoritmaDeskripsi
    Peramalan deret waktuDeepARAlgoritma DeepAR adalah algoritma jaringan saraf dalam berbasis pada jaringan saraf berulang (RNN). Untuk informasi lebih lanjut, lihat makalah terkait.
    TFTAlgoritma Temporal Fusion Transformer (TFT) adalah algoritma jaringan saraf dalam berbasis pada mekanisme Transformer. Untuk informasi lebih lanjut, lihat makalah terkait.
    Deteksi anomali deret waktuesdAlgoritma 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.
    nsigmaAlgoritma ini dikembangkan oleh Akademi DAMO Alibaba. Algoritma ini sederhana dan mudah untuk menganalisis penyebab anomali. Untuk informasi lebih lanjut, lihat Deteksi anomali deret waktu.
    ttestAlgoritma 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-pemrosesanParameterDeskripsi
    OneHotEncoderTidak adaMengkodekan fitur kategorikal menjadi nilai biner. Operasi ini berlaku untuk fitur kategorikal yang tidak dapat dibandingkan ukurannya.
    OrdinalEncoderTidak adaMengkodekan 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.
    StandardScalerTidak adaMengonversi 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).
    LogTransformerTidak adaMengonversi 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

    ParameterTipeDeskripsiDiperlukan
    epochsINTEGERJumlah epoch untuk pelatihan model. Parameter ini hanya berlaku untuk peramalan deret waktu. Nilai default: 80Ya
    time_columnVARCHARKolom waktu.Ya
    group_columnsVARCHARKolom grup. Kolom ini digunakan sebagai kolom TAG untuk menentukan deret waktu.Ya
    freqVARCHARFrekuensi data deret waktu. Contoh: 1D.Ya
    prediction_lengthINTEGERUkuran langkah peramalan deret waktu.Ya
    feat_static_columnsVARCHARSet 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 dikembalikanDeskripsi
nameNama model.
statusStatus 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_functionFungsi inferensi.
created_timeWaktu saat model dibuat.
update_timeWaktu 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 dikembalikanDeskripsi
task_typeJenis tugas yang perlu dieksekusi oleh model.
algorithmNama algoritma yang digunakan oleh model.
queryPernyataan query yang digunakan untuk melatih model.
preprocessorsSintaks untuk operasi pra-pemrosesan.
settingsParameter terkait model.
metricsMetrik 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;
nama_fungsi: Nama fungsi sistem. Nilai valid:
  • 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;