全部產品
Search
文件中心

:模型及演算法

更新時間:Jul 25, 2025

RDS SQLFlow模型庫中提供了多種不同的模型,適用於各種業務情境。您可以根據所需解決問題的類型選擇合適的模型。本文將介紹不同的模型及其演算法。

模型簡介

分類模型

分類模型用於解決資料集中存在兩個或多個類別的情況,以推測新的資料屬於哪個類別,進而解決“是或否”(二分類)及“A或B還是C”(多分類)的問題。

適用情境

  • 映像分類:應用於手寫數字識別、物體識別等任務。

  • 文本分類:執行情感分析、垃圾郵件識別等相關任務。

  • 推薦系統:在電子商務領域,預測使用者的購買意向等相關行為。

  • 醫學診斷:通過分析患者資料以預測疾病風險等。

迴歸模型

迴歸模型適用於資料中已存在的某些關聯關係,能夠根據這些關係在新的資料集上預測連續值。該模型基於輸入變數(特徵)與輸出變數(目標)之間的關係進行建模,旨在解決“有多少”的問題。

適用情境

  • 經濟學:通過預測樓價、股票價格等經濟指標,線性迴歸能夠有效地協助我們理解不同變數之間的關係。

  • 醫學領域:通過特徵(如生活、基因資訊等)來預測健康結果,例如血糖水平。

  • 市場營銷:分析廣告支出與銷售額之間的關係,以最佳化營銷策略。

  • 工程:可用於預測產品效能,並基於多種參數對結果進行建模。

  • 社會科學:研究社會現象,例如教育水平對收入的影響。

聚類模型

聚類模型適用於在資料集中發現規律特徵,並產生新資料執行個體的模型,旨在解決“資料中有什麼”的問題。聚類模型是機器學習領域的一種無監督學習方法,其主要目標是根據特徵相似性將一組樣本進行分組,使得同一組內的樣本彼此相似,而不同組之間的樣本差異顯著。聚類模型在資料分析和模式識別領域得到了廣泛應用,因為它們能夠在無標籤的情況下有效地識別資料中的潛在結構。

適用情境

  • 客戶細分:商家可以利用群集對顧客的行為模式和偏好進行深入研究,以實施精準營銷策略。

  • 影像處理:在映像分類和對象識別過程中,可以通過聚類將具有相似特徵的像素歸類於同一類別。

  • 異常檢測:通過識別不屬於任何聚類的樣本,以發現潛在的異常值,例如在網路安全領域中的攻擊檢測。

  • 文檔聚類:將大量文檔根據主題或內容進行分組,有助於資訊檢索和資料整理。

  • 生物資訊學:在基因表達資料分析中,群集能夠輔助研究者識別相似的基因群體。

分類模型

DNNClassifier

演算法介紹

DNNClassifier是TensorFlow 提供的一個進階API,用於構建深度神經網路(DNN)模型,主要用於二分類或多分類的預測。該API通過多層全串連網路來捕捉資料中的非線性關係,並通過訓練最佳化權重和偏置,從而最小化模型輸出與實體類別之間的損失。

DNNClassifier具有以下特點:

  • 易用性:提供進階API,簡化了深度學習模型的構建流程。

  • 模組化:能夠靈活配置網路結構,例如隱藏層的數量和規模。

  • 並行訓練:可以利用多核CPU或GPU加速訓練過程。

  • 支援多種輸入特徵:支援數值型和類型特徵的混合。

參數說明

參數

說明

model.hidden_units

在DNN模型中,每個隱層的神經元個數,例如[128, 32],表示該模型包含兩個隱層,且各隱層的神經元個數分別為128和32。

model.n_classes

模型可分類的類別總數(適用於分類器模型),例如:2 表示模型將資料分為兩類。

model.optimizer

配置模型訓練所使用的最佳化器。

model.batch_norm

是否在每個隱層之後使用batch_norm。取值:

  • True:表示使用。

  • False:預設值,表示不使用。

model.dropout

配置dropout機率,比如:0.5,預設值為None。

使用樣本

###訓練
SELECT * FROM iris.train TO TRAIN DNNClassifier WITH
  model.n_classes = 3,
  train.epoch = 10
COLUMN sepal_length, sepal_width, petal_length, petal_width
LABEL class
INTO sqlflow_models.my_dnn_model;

##預測
SELECT * FROM iris.test
TO PREDICT iris.predict.class
USING sqlflow_models.my_dnn_model;

XGBoost gbtree

演算法介紹

XGBoost(Extreme Gradient Boosting)是一種高效的梯度提升樹(Gradient Boosting Tree)演算法,廣泛應用於分類和迴歸問題。其gbtree模型專註於使用決策樹作為基學習器。

該演算法具有以下特點:

  • 高效能:在許多分類任務中,與傳統方法相比,BoostedTreesClassifier通常能夠實現更高的準確性。

  • 適應性強:能夠自動評估特徵的重要性,適應不同的資料分布。

  • 可解釋性:通過特徵重要性分析,可以瞭解模型如何做出決策。

  • 防止過擬合:通過正則化手段,Boosted Trees能夠有效對抗過擬合問題,尤其是在遍曆深層樹時。

  • 處理缺失值的能力:能夠較好地處理樣本中的缺失值,確保不會因缺失值而導致預先處理問題。

  • 支援並行化及分布式訓練:在大規模資料集上能夠更高效地訓練模型。

使用樣本

## 用於二分類
SELECT * FROM train_table
TO TRAIN xgboost.gbtree
WITH objective="binary:logistic", validation.select="SELECT * FROM val_table"
LABEL class
INTO my_xgb_classification_model;

## 用於多分類
SELECT * FROM train_table	
TO TRAIN xgboost.gbtree
WITH objective="multi:softmax", num_class=3, validation.select="SELECT * FROM val_table"
LABEL class
INTO my_xgb_classification_model;

## 用於迴歸任務
SELECT * FROM train_table
TO TRAIN xgboost.gbtree
WITH objective="reg:squarederror", validation.select="SELECT * FROM val_table"
LABEL target
INTO my_xgb_regression_model;

GCN

演算法介紹

GCN(Graph Convolutional Network)是一種專門用於圖資料的深度學習模型。它通過圖卷積的方式處理圖結構資料,能夠有效捕捉節點之間的關係和特徵傳播,適用於分析具有複雜結構和關係的資料,例如社交網路、推薦系統和生物網路等。GCN處理的輸入是圖(Graph),該圖由節點(Nodes)和邊(Edges)組成。在許多業務情境中,資料可以自然地表示為圖結構,例如社交網路和知識圖譜等。GCN借用卷積神經網路中的卷積思想,通過鄰接節點的資訊更新每個節點的表示,使得節點的表示能夠考慮到其鄰域的特徵。

適用情境

  • 社交網路分析:GCN可以用於社交網路中的使用者推薦、關係預測、社區檢測等任務。

  • 節點分類:例如在知識圖譜中,可以對節點(實體)進行分類,預測某個實體所屬的類別,例如品牌、產品等。

  • 映像分割:在像素構成的映像中應用GCN,可以增強映像分割和物體識別的效果。

迴歸模型

DNNRegressor

演算法介紹

DNNRegressor是TensorFlow提供的一個進階API,用於深度學習迴歸任務。它屬於TensorFlow Estimator模組,用於處理結構化資料(例如表格或CSV格式的資料),並能夠學習複雜的非線性關係,從而預測價格或機率等連續值輸出。

參數說明

參數

說明

n_classes

模型可分類的類別總數(適用於分類器模型),例如:2 表示模型將資料分為兩類。

optimizer

配置模型訓練所使用的最佳化器。

sparse_combiner

指定當類別列輸入包含多個相同值時的處理方法,例如:meansqrtnsum

使用樣本

##訓練
SELECT f9, target FROM housing.train
TO TRAIN DNNRegressor WITH model.hidden_units = [10, 20]
COLUMN EMBEDDING(CATEGORY_ID(f9, 1000), 2, "sum")
LABEL target
INTO housing.dnn_model;

##預測
SELECT f9, target FROM housing.test
TO PREDICT housing.predict.class USING housing.dnn_model;

RNNBasedTimeSeriesModel

演算法介紹

RNNBasedTimeSeriesModel(簡稱RNN)是基於LSTM時間序列的預測模型,通過輸入多個時間點的特徵資訊,預測未來多個時間點的表現。RNN是一種能夠處理序列資料的神經網路,在每一個時間步,RNN不僅接收當前的輸入資料,還考慮前一個時間步的狀態資訊。這使得RNN特別適合處理時間序列資料,例如股票價格、氣象資料、自然語言處理等。

RNN具有以下特點:

  • 記憶能力:RNN能夠儲存先前輸入的資訊,使其能夠捕捉時間序列中的長期依賴性。

  • 動態輸入長度:RNN可以處理任意長度的輸入序列,這對於時間序列資料尤為重要。

  • 非線性映射:RNN能夠建立輸入和輸出之間的非線性關係,使其適用於複雜的時間序列預測任務。

  • 序列產生:RNN不僅可以用於預測,還可以用於產生新的時間序列,例如產生音樂或文本。

參數說明

參數

說明

model.stack_units

LSTM層數及每層的大小配置,預設值為:[500, 500]。

model.n_in

輸入的時間點個數。

model.n_out

輸出的時間點個數。

使用樣本

##訓練
SELECT sepal_length, sepal_width, petal_length, concat(petal_width,',',class) as class 
FROM iris.train 
TO TRAIN sqlflow_models.RNNBasedTimeSeriesModel WITH
    model.n_in=3,
    model.stack_units = [10, 10],
    model.n_out=2,
    model.model_type="lstm",
    validation.metrics= "MeanAbsoluteError,MeanSquaredError"
LABEL class
INTO sqlflow_models.my_dnn_regts_model_2;

##預測
SELECT sepal_length, sepal_width, petal_length, concat(petal_width,',',class) as class 
FROM iris.test 
TO PREDICT iris.predict_ts_2.class 
USING sqlflow_models.my_dnn_regts_model_2;

聚類模型

DeepEmbeddingClusterModel

演算法介紹

DeepEmbeddingClusterModel(深度嵌入聚類模型)是一種結合了深度學習與聚類方法的模型。它主要用於自動學習資料的低維嵌入表示,並在這個嵌入空間中進行聚類。

DeepEmbeddingClusterModel主要特點如下:

  • 深度學習:利用深度神經網路進行資料的特徵提取,能夠自動學習資料的有用表示,捕捉複雜的非線性關係。

  • 嵌入表示:將高維資料投影到較低維度嵌入空間中,從而簡化聚類任務,提高聚類效果。

  • 聚類能力:在嵌入空間中直接進行聚類,使得同質資料點距離更近,從而提高聚類的精度和可解釋性。

  • 泛化能力:由於深度學習的特性,模型通常具有較強的泛化能力,可以處理資料的雜訊和複雜性。

  • 可擴充性:適合處理大規模資料集,能夠通過深度學習方法進行有效迭代和更新。

參數說明

參數

說明

model.n_clusters

聚類類別的數量,預設值:10。

model.kmeans_init

執行K-means演算法的次數用於獲得最佳中心點,預設值:20。

model.run_pretrain

是否執行預訓練,預設值:True。

model.pretrain_dims

預訓練autoencoder時,各隱層的維度,預設值:[500, 500, 2000, 10]。

model.pretrain_activation_func

autoencoder部分的啟用函數,預設值:'relu'

model.pretrain_batch_size

autoencoder訓練的批量大小,預設值:256。

model.train_batch_size

訓練的批量大小,預設值:256。

model.pretrain_epochs

執行預訓練的輪數,預設值:10。

model.pretrain_initializer

autoencoder參數的初始化方法,預設值:'glorot_uniform'

model.pretrain_lr

預訓練的學習率,預設值:1。

model.train_lr

訓練學習率,預設值:0.1。

model.train_max_iters

訓練最大迭代步數,預設值:8000。

model.update_interval

更新目標分布的間隔步數,預設值:100 。

model.tol

容忍度(tol),預設值:0.001。

使用樣本

##訓練
SELECT (sepal_length - 4.4) / 3.5 as sepal_length, (sepal_width - 2.0) / 2.2 as sepal_width, (petal_length - 1) / 5.9 as petal_length, (petal_width - 0.1) / 2.4 as petal_width
FROM iris.train
TO TRAIN sqlflow_models.DeepEmbeddingClusterModel
WITH
  model.pretrain_dims = [10,10,3],
  model.n_clusters = 3,
  model.pretrain_epochs=5,
  train.batch_size=10,
  train.verbose=1
INTO sqlflow_models.my_clustering_model;

##預測
SELECT (sepal_length - 4.4) / 3.5 as sepal_length, (sepal_width - 2.0) / 2.2 as sepal_width, (petal_length - 1) / 5.9 as petal_length, (petal_width - 0.1) / 2.4 as petal_width
FROM iris.test
TO PREDICT iris.predict.class
USING sqlflow_models.my_clustering_model;

相關文檔

RDS Custom簡介