全部產品
Search
文件中心

AnalyticDB:使用SQL實現機器學習預測

更新時間:Aug 12, 2025

本文介紹如何在AnalyticDB for MySQL中,利用SQL語言快速部署BST(Behavior Sequence Transformer)模型執行機器學習任務,包括從資料加工、模型建立、訓練到最終的評估與預測的整個流程。

使用情境

您可以通過SQL查詢快速部署模型訓練和推理服務,輕鬆利用SQL來完成資料預先處理、訓練和推理。

AnalyticDB for MySQL支援部署BST模型,該模型適用於需要理解使用者行為模式、分析使用者偏好、預測未來趨勢以及實現個人化推薦等應用情境。例如,在遊戲或電子商務領域,通過捕捉使用者行為之間的長期依賴關係,可以更準確地理解和預測使用者的行為模式和偏好,從而提供個人化的服務和推薦。

更多BST模型的介紹

BST模型是一種用於處理行為序列資料的模型。該模型接收由行為事件ID組成的序列作為輸入,並輸出0或1,作為對這個序列分類的結果。

假設在一款遊戲中,玩家的互動行為可以被記錄並轉換成一系列的行為事件。

例如,一位玩家在遊戲中可能產生如下行為序列:登入、領取登入獎勵、接受任務、戰鬥、戰鬥、戰鬥、完成任務、儲值、戰鬥、登出。

這些具體的行為序列會被轉化為以下事件ID序列:0、1、2、3、3、3、4、5、3、6。此序列隨後將以字串格式提供給BST模型。模型分析後,將返回一個分類結果,即0或1,用來指示特定的行為序列屬於哪個預設類別。

前提條件

步驟一:建立AI資源群組並綁定普通資源群組

使用SQL執行機器學習任務,需要兩種資源群組:

  • AI資源群組:專為支援機器學習任務設計,用於管理機器學習任務所需的GPU資源,支援模型訓練和預測中的計算密集型操作。

  • 普通資源群組:用於處理常規SQL查詢,如產生訓練資料或執行預測函數。

SQL會被首先提交至普通資源群組執行,若執行過程中發現SQL有AI計算需求,則會自動投遞AI計算到與之綁定的AI資源群組上執行。

因此請先按照下列步驟建立AI資源群組並綁定普通資源群組。

  1. 登入雲原生資料倉儲AnalyticDB MySQL控制台,在左上方選擇叢集所在地區。在左側導覽列,單擊集群清單,然後單擊目的地組群ID。

  2. 在左側導覽列,單擊集群管理>資源管理,單擊資源組管理頁簽。

  3. 單擊資源群組列表右上方的新增資源組,並建立AI資源群組。

    參數名稱

    說明

    資源組名稱

    自訂資源群組的名稱。輸入長度在2~30位,以字母開頭,只能包含字母、數字和底線。

    任務類型

    在下拉式清單中選擇AI型資源群組。

    重要

    如果沒有AI選項,說明您的執行個體尚未開通AI資源群組功能,請聯絡支援人員。

    規格

    GPU、CPU和記憶體的資源群組合。可選擇ADB.MLLarge.24ADB.MLLarge.2或者ADB.MLAdvavced.6

    最小個數

    資源群組合的最小數量。

    最大個數

    資源群組合的最大數量。

  4. 單擊確定,完成建立資源群組。

  5. 選擇目標普通資源群組操作列的修改,並使用ML作業投遞規則將該資源群組綁定到新建立的目標AI資源群組。

步驟二:資料加工

資料加工是將業務中產生的未經處理資料轉換為適合模型訓練所需格式的過程。這一過程緊密依賴於三個關鍵因素:未經處理資料的具體形態、未經處理資料的儲存位置以及模型對輸入資料格式的要求。

模型訓練資料表結構要求

  • 輸入特徵列:此列為字串類型,包含一系列以逗號分隔的整數。每個條目代表一個樣本的特徵向量。

  • 目標標籤列:此列包含兩個可能的值(例如0或1),用於表示分類任務中的類別標籤。

資料表結構樣本:('1,2,3',0),('3,2,1',1)。

資料加工方法

如果您的未經處理資料格式和模型訓練所需格式有差異,請使用下面方法加工資料:

  1. 準備JAR包:把編寫的Spark資料加工程式打包成的JAR包,上傳到OSS儲存空間。

  2. 配置Spark作業參數:在提交Spark作業時,配置作業需要的參數。配置參數詳情請參見Spark應用配置參數說明

如果您的未經處理資料符合模型訓練所需格式,可省略此步驟。

步驟三:模型建立與訓練

建立一個機器學習模型,定義模型參數、指定訓練資料以及檢查模型狀態。

  1. 在左側導覽列,單擊作業開發 > SQL開發

  2. SQLConsole中使用模型語句,建立模型並訓練。

-- 建立模型
-- 指定資源群組
/*+resource_group=itrain*/
CREATE MODEL bstdemo.bst-- 模型名稱
OPTIONS (
  model_type='bst_classification', -- 模型類型
  feature_cols=(event_list),  -- 特徵列
  target_cols=(target),  -- 要預測的目標列
  hyperparameters = (  -- 其他模型超參
    use_best_ckpt = 'False',
    early_stopping_patience='0'
  )
)
AS SELECT event_list, target FROM bstdemo.adb; -- 模型資料來源,此查詢的結果將會提供給上述引用的變數進行訓練

-- 查看模型訓練狀態,當狀態進入READY後即訓練完成
SHOW MODEL bstdemo.bst;

步驟四:模型評估

評估已經建立好的機器學習模型,驗證模型正確性。

-- 語句形式與建立模型類似
/*resource_group=rg1*/
EVALUATE MODEL bstdemo.bst
OPTIONS (
    feature_cols=(event_list), 
    target_cols=(target),  
)
AS SELECT event_list, target FROM bstdemo.adb01;

步驟五:模型預測

從表中選取特徵列,將這些資料傳遞給已訓練好的模型,並擷取基於這些輸入資料的預測結果。

-- 使用訓練好的模型進行預測;
-- ml_predict函數的第一個參數是模型名稱,後續入參是模型的輸入列;
SELECT ML_PREDICT('bstdemo.bst', event_list) FROM bstdemo.adb02;