回歸演演算法
- 主題:
- 查詢
建立對象:
- 開發人員
本檔案提供各種回歸演演算法的概觀,重點是它們的設定、關鍵引數,以及在進階統計模型中的實際使用。 回歸演演算法可用來建立相依變數和獨立變數之間的關係模型,根據觀察到的資料來預測連續結果。 每個區段都包含引數說明和範常式式碼,協助您針對如線性、隨機森林和生存回歸等工作,實作和最佳化這些演演算法。
Decision Tree回歸
Decision Tree學習是一種監督學習方法,用於統計資料、資料採礦和機器學習。 在這個方法中,分類或回歸決策樹會作為預測模型來得出關於一組觀察結果的結論。
參數
下表概述用於設定和最佳化決策樹模型效能的關鍵引數。
參數 | 說明 | 預設值 | 可能的值 |
---|---|---|---|
MAX_BINS | 此引數指定用來離散化連續特徵的最大桶數,並決定每個節點的分割。 更多的回收桶可提供更精細的詳細資訊和細節。 | 32 | 在任何分類功能中必須至少為2且至少為類別數。 |
CACHE_NODE_IDS | 此引數決定是否快取每個執行個體的節點ID。 如果false ,演演算法會將樹狀結構傳遞給執行程式,以比對執行個體與節點。 如果true ,演演算法會快取每個執行個體的節點ID,這會加快更深入樹狀結構的訓練。 使用者可以設定CHECKPOINT_INTERVAL 來設定快取檢查點或停用的頻率。 | false | true 或false |
CHECKPOINT_INTERVAL | 此引數會指定快取節點ID被檢查的頻率。 例如,將其設定為10 表示快取將每10次反複檢查一次。 這僅適用於CACHE_NODE_IDS 設定為true 且在org.apache.spark.SparkContext 中設定查核點目錄的情況。 | 10 | (>=1) |
IMPURITY | 此引數指定用於計算資訊增益的標準。 支援的值為entropy 和gini 。 | gini | entropy 、gini |
MAX_DEPTH | 此引數指定樹狀結構的最大深度。 例如,深度0 表示1個分葉節點,而深度1 表示1個內部節點和2個分葉節點。 深度必須在範圍[0, 30] 內。 | 5 | [0, 30] |
MIN_INFO_GAIN | 此引數設定分割所需的最小資訊增益,以便在樹狀節點視為有效。 | 0.0 | (>=0.0) |
MIN_WEIGHT_FRACTION_PER_NODE | 此引數會指定每個子節點在分割後所必須擁有之加權樣本計數的最小分數。 如果任一子節點的片段小於此值,則會捨棄分割。 | 0.0 | [0.0, 0.5] |
MIN_INSTANCES_PER_NODE | 此引數設定分割後每個子節點必須擁有的最小例證數目。 如果分割產生的例項少於此值,則會捨棄分割為無效。 | 1 | (>=1) |
MAX_MEMORY_IN_MB | 此引數會指定配置給長條圖彙總的最大記憶體(MB)。 如果記憶體太小,每個疊代只會分割一個節點,其彙總可能會超過此大小。 | 256 | 任何正整數值 |
PREDICTION_COL | 此引數會指定用來儲存預測的資料行名稱。 | "prediction" | 任何字串 |
SEED | 此引數設定模型中使用的隨機種子。 | None | 任何64位元數字 |
WEIGHT_COL | 此引數指定權重資料行的名稱。 如果此引數未設定或空白,則所有執行個體權重都會視為1.0 。 | 未設定 | 任何字串 |
範例
CREATE MODEL modelname OPTIONS(
type = 'decision_tree_regression'
) AS
SELECT col1, col2, col3 FROM training-dataset
Factorization Machines回歸
Factorization Machines是回歸學習演演算法,支援一般漸層下降和AdamW求解器。 演演算法是以S. Rendle (2010)的論文"Factorization Machines"為基礎。
參數
下表概述設定和最佳化Factorization Machines回歸效能的關鍵引數。
參數 | 說明 | 預設值 | 可能的值 |
---|---|---|---|
TOL | 此引數指定演演算法的收斂公差。 值越高收斂速度越快,但精確度越低。 | 1E-6 | (>= 0) |
FACTOR_SIZE | 此引數定義因子的維度。 較高的值會增加模型的複雜性。 | 8 | (>= 0) |
FIT_INTERCEPT | 此引數會指出模型是否應該包含攔截字詞。 | true | true 、false |
FIT_LINEAR | 此引數會指定是否在模型中包含線性字詞(也稱為單向字詞)。 | true | true 、false |
INIT_STD | 此引數定義模型中使用的初始係數的標準差。 | 0.01 | (>= 0) |
MAX_ITER | 此引數會指定演演算法要執行的最大迭代次數。 | 100 | (>= 0) |
MINI_BATCH_FRACTION | 此引數會設定迷你批次分數,這會決定每個批次中使用的資料部分。 它必須在(0, 1] 範圍內。 | 1.0 | (0, 1] |
REG_PARAM | 此引數設定規則化引數以防止過度擬合。 | 0.0 | (>= 0) |
SEED | 此引數指定用於模型初始化的隨機種子。 | None | 任何64位元數字 |
SOLVER | 此引數指定用於最佳化的求解器演演算法。 | "adamW" | gd (漸層下降),adamW |
STEP_SIZE | 此引數指定第一個最佳化步驟的初始步驟大小(或學習速率)。 | 1.0 | 任何正值 |
PREDICTION_COL | 此引數會指定儲存預測的欄名稱。 | "prediction" | 任何字串 |
範例
CREATE MODEL modelname OPTIONS(
type = 'factorization_machines_regression'
) AS
SELECT col1, col2, col3 FROM training-dataset
Generalized Linear回歸
與線性回歸(假設結果遵循正態(高斯)分佈)不同,Generalized Linear模型(GLM)允許結果遵循不同型別的分佈,例如Poisson或二項式,具體取決於資料的性質。
參數
下表概述設定和最佳化Generalized Linear回歸效能的關鍵引數。
MAX_ITER
irls
)。REG_PARAM
TOL
1E-6
AGGREGATION_DEPTH
treeAggregate
的建議深度。FAMILY
gaussian
、binomial
、poisson
、gamma
和tweedie
。gaussian
,binomial
,poisson
,gamma
,tweedie
FIT_INTERCEPT
true
true
、false
LINK
identity
、log
、inverse
、logit
、probit
、cloglog
和sqrt
。identity
,log
,inverse
,logit
,probit
,cloglog
,sqrt
LINK_POWER
1 - variancePower
,這與R statmod
封裝一致。 0、1、-1和0.5的特定連結冪分別對應至Log、Identity、Inverse和Sqrt連結。SOLVER
irls
(反複重新加權的最小平方)。irls
VARIANCE_POWER
[1, inf)
。 方差冪0、1和2分別對應於Gaussian、Poisson和Gamma系列。[1, inf)
LINK_PREDICTION_COL
OFFSET_COL
WEIGHT_COL
1.0
。 在「二項式」系列中,權重會對應試算次數,而非整數的權重會在AIC計算中四捨五入。範例
CREATE MODEL modelname OPTIONS(
type = 'generalized_linear_reg'
) AS
SELECT col1, col2, col3 FROM training-dataset
Gradient Boosted Tree回歸
漸層提升樹(GBT)是分類和回歸的有效方法,結合多個決策樹的預測,以改進預測精確度和模型效能。
參數
下表概述設定和最佳化Gradient Boosted Tree回歸效能的關鍵引數。
MAX_BINS
CACHE_NODE_IDS
false
,演演算法會將樹狀結構傳遞給執行程式,以比對執行個體與節點。 若為true
,演演算法會快取每個執行個體的節點ID。 快取可以加速更深入的樹狀結構的訓練。false
true
、false
CHECKPOINT_INTERVAL
10
表示每10次反複檢查一次快取。MAX_DEPTH
0
表示1個分葉節點,深度1
表示1個內部節點和2個分葉節點。MIN_INFO_GAIN
MIN_WEIGHT_FRACTION_PER_NODE
MIN_INSTANCES_PER_NODE
MAX_MEMORY_IN_MB
PREDICTION_COL
VALIDATION_INDICATOR_COL
false
用於訓練,true
用於驗證。LEAF_COL
FEATURE_SUBSET_STRATEGY
auto
、all
、onethird
、sqrt
、log2
或介於0到1.0之間的分數SEED
WEIGHT_COL
1.0
。LOSS_TYPE
squared
(L2)和absolute
(L1)。 注意:值不區分大小寫。STEP_SIZE
(0, 1]
中的步長大小(也稱為學習率),用來縮小每個估算器的貢獻。(0, 1]
MAX_ITER
SUBSAMPLING_RATE
(0, 1]
。(0, 1]
範例
CREATE MODEL modelname OPTIONS(
type = 'gradient_boosted_tree_regression'
) AS
SELECT col1, col2, col3 FROM training-dataset
Isotonic回歸
Isotonic Regression是一種演演算法,用來反複調整距離,同時保留資料中的相對不相同順序。
參數
下表概述設定和最佳化Isotonic Regression效能的關鍵引數。
ISOTONIC
true
時輸出序列是等調(增加),或是在false
時反調(減少)。true
true
、false
WEIGHT_COL
1.0
。PREDICTION_COL
FEATURE_INDEX
featuresCol
為向量資料行時。 如果未設定,預設值為0
。 否則,就沒有效用。範例
CREATE MODEL modelname OPTIONS(
type = 'isotonic_regression'
) AS
SELECT col1, col2, col3 FROM training-dataset
Linear回歸
Linear Regression是一種監督的機器學習演演算法,可將線性方程式配合到資料,以模擬相依變數和獨立特徵之間的關係。
參數
下表概述設定和最佳化Linear Regression效能的關鍵引數。
MAX_ITER
REGPARAM
ELASTICNETPARAM
範例
CREATE MODEL modelname OPTIONS(
type = 'linear_reg'
) AS
SELECT col1, col2, col3 FROM training-dataset
Random Forest Regression
Random Forest Regression是一種整體演演算法,可在訓練期間建立多個決策樹,並傳回這些決策樹用於回歸任務的平均預測,有助於防止過度擬合。
參數
下表概述設定和最佳化Random Forest Regression效能的關鍵引數。
MAX_BINS
CACHE_NODE_IDS
false
,演演算法會將樹狀結構傳遞給執行程式,以比對執行個體與節點。 如果是true
,演演算法會快取每個執行個體的節點ID,以加速更深層的樹狀結構的訓練。false
true
、false
CHECKPOINT_INTERVAL
10
表示每10次反複檢查一次快取。IMPURITY
entropy
、gini
MAX_DEPTH
0
表示1個分葉節點,深度1
表示1個內部節點和2個分葉節點。MIN_INFO_GAIN
MIN_WEIGHT_FRACTION_PER_NODE
MIN_INSTANCES_PER_NODE
MAX_MEMORY_IN_MB
BOOTSTRAP
true
、false
NUM_TREES
1
,則不會使用任何啟動程式。 如果大於1
,則套用啟動程式。SUBSAMPLING_RATE
(0, 1]
。LEAF_COL
PREDICTION_COL
SEED
WEIGHT_COL
1.0
。範例
CREATE MODEL modelname OPTIONS(
type = 'random_forest_regression'
) AS
SELECT col1, col2, col3 FROM training-dataset
Survival Regression
Survival Regression是用來根據Weibull distribution調整引數存活回歸模型,稱為Accelerated Failure Time (AFT)模型。 它可以將執行個體棧疊到區塊中以提高效能。
參數
下表概述設定和最佳化Survival Regression效能的關鍵引數。
MAX_ITER
TOL
1E-6
AGGREGATION_DEPTH
treeAggregate
的建議深度。 如果特徵尺寸或分割區數量很大,則可將此引數設定為較大的值。FIT_INTERCEPT
true
、false
PREDICTION_COL
CENSOR_COL
1
表示事件已發生(未審查),而0
表示事件已審查。MAX_BLOCK_SIZE_IN_MB
0
的值允許自動調整。範例
CREATE MODEL modelname OPTIONS(
type = 'survival_regression'
) AS
SELECT col1, col2, col3 FROM training-dataset