Oracle 20c 新特性:XGBoost 機器學習演算法和 AutoML 的支援
墨墨導讀:XGBoost是一個高效、可擴充套件的機器學習演算法,用於迴歸和分類(regression and classification),使得XGBoost Gradient Boosting開源包可用。
為什麼 XGBoost 如此受到歡迎?
XGBoost 是基於決策樹的整合機器學習演算法,它以梯度提升(Gradient Boost)為框架。在非結構資料(影像、文字等)的預測問題中,人工神經網路的表現要優於其他演算法或框架。但在處理中小型結構資料或表格資料時,現在普遍認為基於決策樹的演算法是最好的。下圖列出了近年來基於樹的演算法的演變過程:
應用範圍廣泛:該演算法可以解決迴歸、分類、排序以及使用者自定義的預測問題; 可移植性:該演算法可以在 Windows、Linux 和 OS X 上流暢地執行; 語言:支援包括 C++、Python、R、Java、Scala 和 Julia 在內的幾乎所有主流程式語言; 雲整合:支援 AWS、Azure 和 Yarn 叢集,也可以很好地配合 Flink、 Spark 等其他生態系統。
常規的機器學習模型(例如決策樹)僅使用訓練資料集來訓練單個模型,並且僅將此模型用於預測。儘管決策樹的建立非常簡單(並且非常快),具有模型可解釋性,但其預測能力可能不如大多數其他演算法好。 為了克服此限制,可以使用整合方法建立多個決策樹,並將其組合以用於預測目的。 Bagging演算法(英語:Bootstrap aggregating,引導聚集演算法,又稱裝袋演算法)是一種使用多數表決將來自多個DT模型的預測進行合併的方法。 在裝袋方法的基礎上,Random Forest使用功能的不同子集和訓練資料的子集,以不同的方式將它們組合以建立DT模型的集合,並作為一個模型呈現給使用者。 Boosting透過建立順序模型與每個後續模型的方式,採用一種更迭代的方法來完善模型,其重點是最大程度地減少先前模型的誤差。 梯度提升使用梯度下降演算法來最小化後續模型中的誤差。 藉助XGBoost,可以在上述步驟的基礎上進行並行處理,樹修剪,資料丟失處理,正則化以及實現更好的快取,記憶體和硬體最佳化。通常稱為梯度增強。
決策樹,以非常快速的、可解釋的模型,來進行判斷選擇,支援決策 多決策樹,用於組合預測,增加準確性 Bagging 演算法,也就是所謂的 裝袋演算法 Bagging 特點在“隨機取樣”。隨機取樣(bootsrap)就是從訓練集採集固定個數的樣本,但是每採集一個樣本後,都將樣本放回。也就是說,之前採集到的樣本在放回後有可能繼續被採集到。 Random Forest ,隨機森林 演算法
RF在實際中使用非常頻繁,其本質上和bagging並無不同,只是RF更具體一些。一般而言可以將RF理解為bagging和DT(CART)的結合。隨機森林是由很多決策樹構成的,不同決策樹之間沒有關聯。RF中的基學習器使用的是CART樹,由於演算法本身能降低方差(variance),所以會選擇完全生長的CART樹。抽樣方法使用bootstrap,除此之外,RF認為隨機程度越高,演算法的效果越好。所以RF中還經常隨機選取樣本的特徵屬性、甚至於將樣本的特徵屬性透過對映矩陣對映到隨機的子空間來增大子模型的隨機性、多樣性。RF預測的結果為子樹結果的平均值。RF具有很好的降噪性,相比單棵的CART樹,RF模型邊界更加平滑,置信區間也比較大。一般而言,RF中,樹越多模型越穩定。 Boosting
Boosting 和 bagging 最本質的差別在於他對基礎模型不是一致對待的,而是經過不停的考驗和篩選來挑選出「精英」,然後給精英更多的投票權,表現不好的基礎模型則給較少的投票權,然後綜合所有人的投票得到最終結果。大部分情況下,經過 boosting 得到的結果偏差(bias)更小。梯度提升樹演算法
梯度提升樹演算法實際上是提升演算法的擴充套件版,在原始的提升演算法中,如果損失函式為平方損失或指數損失,求解損失函式的最小值問題會非常簡單,但如果損失函式為更一般的函式(如絕對值損失函式或Huber損失函式等),目標值的求解就會相對複雜很多。梯度提升演算法,是在第?輪基礎模型中,利用損失函式的負梯度值作為該輪基礎模型損失值的近似,並利用這個近似值構建下一輪基礎模型。利用損失函式的負梯度值近似殘差的計算就是梯度提升演算法在提升演算法上的擴充套件,這樣的擴充套件使得目標函式的求解更為方便。 XGBoost
就是在上述演算法的基礎上進行並行處理,樹修剪,資料丟失處理,正則化以及實現更好的快取,記憶體和硬體最佳化。因而通常稱為梯度增強。
-- Create the setting table xgc_sh_settings.
CREATE TABLE xgc_sh_settings(setting_name VARCHAR2(30),
setting_value VARCHAR2(128));
-- Populate the settings table.
BEGIN
INSERT INTO xgc_sh_settings (setting_name, setting_value) VALUES
(dbms_data_mining.algo_name, dbms_data_mining.algo_xgboost);
-- For 0/1 target, choose binary:logistic as the objective.
INSERT INTO xgc_sh_settings (setting_name, setting_value) VALUES
(dbms_data_mining.xgboost_objective, 'binary:logistic');
INSERT INTO xgc_sh_settings (setting_name, setting_value) VALUES
(dbms_data_mining.xgboost_max_depth, '3');
INSERT INTO xgc_sh_settings (setting_name, setting_value) VALUES
(dbms_data_mining.xgboost_eta, '1');
-- Choose error and auc as eval_metric to evaluate the training dataset.
INSERT INTO xgc_sh_settings (setting_name, setting_value) VALUES
(dbms_data_mining.xgboost_eval_metric, 'error,auc');
INSERT INTO xgc_sh_settings (setting_name, setting_value) VALUES
(dbms_data_mining.xgboost_num_round, '10');
END;
/
-- Create a model.
BEGIN
DBMS_DATA_MINING.CREATE_MODEL(
model_name => 'XGC_SH_MODEL',
mining_function => dbms_data_mining.classification,
data_table_name => 'mining_data_build_v',
case_id_column_name => 'cust_id',
target_column_name => 'affinity_card',
settings_table_name => 'xgc_sh_settings');
END;
/
-- Display the model settings.
SELECT setting_name, setting_value
FROM user_mining_model_settings
WHERE model_name = 'XGC_SH_MODEL'
ORDER BY setting_name;
-- The query produces the following output.
SETTING_NAME SETTING_VALUE
------------------------------ ------------------------------
ALGO_NAME ALGO_XGBOOST
CLAS_WEIGHTS_BALANCED OFF
ODMS_DETAILS ODMS_ENABLE
ODMS_MISSING_VALUE_TREATMENT ODMS_MISSING_VALUE_AUTO
ODMS_SAMPLING ODMS_SAMPLING_DISABLE
PREP_AUTO ON
booster gbtree
eta 1
eval_metric error,auc
max_depth 3
ntree_limit 0
num_round 10
objective binary:logistic
13 rows selected.
-- Show the atribute importance of the top 10 important features. SELECT * FROM(SELECT attribute_name, attribute_value, gain, cover, frequency FROM DM$VIXGC_SH_MODEL ORDER BY gain desc) WHERE rownum <= 10; The query produces the following output. ATTRIBUTE_NAME ATTRIBUTE_VALUE GAIN COVER FREQUENCY ------------------------- --------------- ------ ------ --------- YRS_RESIDENCE .259 .143 .117 HOUSEHOLD_SIZE 2 .110 .044 .033 AGE .093 .156 .250 HOUSEHOLD_SIZE 9+ .085 .031 .033 CUST_MARITAL_STATUS NeverM .073 .067 .033 BOOKKEEPING_APPLICATION .055 .035 .033 EDUCATION Bach. .053 .047 .033 OCCUPATION Prof. .048 .032 .033 EDUCATION Masters .045 .052 .050 OCCUPATION Other .029 .055 .033 10 rows selected.
-- Create the setting table xgr_sh_settings.
CREATE TABLE xgr_sh_settings(setting_name VARCHAR2(30),
setting_value VARCHAR2(128));
-- Populate the settings table.
BEGIN
INSERT INTO xgr_sh_settings (setting_name, setting_value) VALUES
(dbms_data_mining.algo_name, dbms_data_mining.algo_xgboost);
-- For 0/1 target, choose binary:logistic as the objective.
INSERT INTO xgr_sh_settings (setting_name, setting_value) VALUES
(dbms_data_mining.xgboost_booster, 'gblinear');
INSERT INTO xgr_sh_settings (setting_name, setting_value) VALUES
(dbms_data_mining.xgboost_alpha, '0.0001');
INSERT INTO xgr_sh_settings (setting_name, setting_value) VALUES
(dbms_data_mining.xgboost_lambda, '1');
INSERT INTO xgr_sh_settings (setting_name, setting_value) VALUES
(dbms_data_mining.xgboost_num_round, '100');
END;
/
-- Create a model.
BEGIN
DBMS_DATA_MINING.CREATE_MODEL(
model_name => 'XGR_SH_MODEL',
mining_function => dbms_data_mining.regression,
data_table_name => 'mining_data_build_v',
case_id_column_name => 'cust_id',
target_column_name => 'age',
settings_table_name => 'xgr_sh_settings');
END;
/
-- Display the model settings.
SELECT setting_name, setting_value
FROM user_mining_model_settings
WHERE model_name = 'XGR_SH_MODEL'
ORDER BY setting_name;
The query produces the following output.
SETTING_NAME SETTING_VALUE
------------------------------ ------------------------------
ALGO_NAME ALGO_XGBOOST
ODMS_DETAILS ODMS_ENABLE
ODMS_MISSING_VALUE_TREATMENT ODMS_MISSING_VALUE_AUTO
ODMS_SAMPLING ODMS_SAMPLING_DISABLE
PREP_AUTO ON
alpha 0.0001
booster gblinear
lambda 1
ntree_limit 0
num_round 100
10 rows selected.
-- Show the atribute importance of the top 5 important features.
SSELECT *
FROM(SELECT attribute_name, attribute_value, weight
FROM DM$VIXGR_SH_MODEL
ORDER BY abs(weight) desc)
WHERE rownum <= 5;
The query produces the following output.
ATTRIBUTE_NAME ATTRIBUTE_VALUE WEIGHT
---------------------- --------------- ------
YRS_RESIDENCE 3.109
HOME_THEATER_PACKAGE 2.332
Y_BOX_GAMES -1.804
CUST_MARITAL_STATUS NeverM -1.131
HOUSEHOLD_SIZE 1 -.696
5 rows selected.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31556440/viewspace-2691695/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Oracle 20c 的 In-Memory 新特性 Spatial 和 Text 支援Oracle
- Oracle 20c 新特性:SQL 巨集支援(SQL Macro)Scalar 和 Table 模式OracleSQLMac模式
- 【機器學習演算法】XGBoost原理機器學習演算法
- Oracle 20c 新特性:原生的區塊鏈支援 Native Blockchain tablesOracle區塊鏈Blockchain
- Oracle 19c和20c新特性最全解密Oracle解密
- Oracle 20C 多租戶_新特性Oracle
- 機器學習演算法(15)之Xgboost演算法機器學習演算法
- 【19c】Oracle 19c 和 20c 的新特性解密Oracle解密
- ORACLE 18C 19C 20C新特性Oracle
- 機器學習之Xgboost詳解機器學習
- Oracle 20c 新特性:自主的 In-Memory 管理 - Self-ManagingOracle
- 自動機器學習簡述(AutoML)機器學習TOML
- Oracle 20c 新特性:Online SecureFiles Defragmentation 線上的 LOB 碎片整理OracleFragment
- 通用機器學習演算法:線性迴歸+決策樹+Xgboost機器學習演算法
- 機器學習之 基於xgboost的特徵篩選機器學習特徵
- 【kingsql分享】Oracle Database 20c 十大新特性介紹SQLOracleDatabase
- 【機器學習】--xgboost從初識到應用機器學習
- LightDB 22.4 新特性之支援Oracle cardinality和ordered_predicates hintOracle
- LightDB 23.1相容Oracle新特性支援Oracle
- 使用scikit-learn機器學習庫裡面的xgboost機器學習
- [機器學習 ]RandomForest、GBDT、XGBoost、lightGBM 原理與區別機器學習randomREST
- 一文讀懂機器學習大殺器XGBoost原理機器學習
- 機器學習演算法筆記之5:支援向量機SVM機器學習演算法筆記
- Smartbi AutoML三步點選直接搞定機器學習!TOML機器學習
- 阿里雲機器學習 AutoML 引擎介紹與應用阿里機器學習TOML
- 機器學習——支援向量機(SVM)機器學習
- 機器學習:支援向量機(SVM)機器學習
- Python中XGBoost的特性重要性和特性選擇Python
- 機器學習之支援向量機原理和sklearn實踐機器學習
- 直播預告丨先睹為快!Oracle 20c新特性解析 - 2020雲和恩墨大講堂Oracle
- LightDB23.1新特性支援Oracle hint增強DB2Oracle
- 【機器學習】--xgboost初始之程式碼實現分類機器學習
- oracle 20c 不支援non-cdb架構Oracle架構
- OceanBase學習之路11|體驗 DDL 新特性(Oracle 模式)Oracle模式
- 【機器學習】新手必看的十種機器學習演算法機器學習演算法
- K近鄰演算法:機器學習萌新必學演算法演算法機器學習
- AutoML:機器學習的下一波浪潮(附程式碼&連結)TOML機器學習
- 機器學習之支援向量機的超平面機器學習