close
來源:DeepHub IMBA

本文4300字,建議閱讀8分鐘

展示梯度提升模型下表格數據中的數字和分類特徵的各種編碼策略之間的基準測試研究的結果。


為梯度提升學習選擇默認的特徵編碼策略需要考慮的兩個重要因素是訓練時間和與特徵表示相關的預測性能。Automunge庫是處理表格數據常用的庫,它可以填充空值,也可以進行分類的編碼和歸一化等操作,默認的境況下Automunge對分類特徵進行二值化處理,並對數值特徵進行z-score歸一化。本文將通過對一系列不同數據集進行基準測試來驗證這些默認值是否是最優化的選項。

長期以來特徵工程對深度學習應用的有用性一直被認為是一個已解決的否定問題,因為神經網絡本身就是通用函數逼近器(Goodfellow et al., 2016)。但是即使在深度學習的背景下,表格特徵也經常使用某種形式的編碼進行預處理。Automunge (Teague, 2022a) 這個 python 庫最初是為數字和分類特徵的基本編碼而構建的,例如 z-score 標準化和 one-hot 編碼。在迭代開發過程中開始加入了完整的編碼選項庫,包括一系列數字和分類特徵選項,現在也包括自動的規範化、二值化、散列和缺失數據填充場景。儘管這些編碼選項可能對於深度學習來說是多餘的,但這並不排除它們在其他模型中的效用,包括簡單回歸、支持向量機、決策樹或本文的重點梯度提升模型。

本文目的是展示梯度提升模型下表格數據中的數字和分類特徵的各種編碼策略之間的基準測試研究的結果。

梯度提升

梯度提升 (Friedman, 2001) 是一種類似於隨機森林 (Briemen, 2001) 的決策樹學習範式 (Quinlan, 1986),通過遞歸訓練迭代的目標以糾正前一次迭代的性能來提升優化模型。在實踐中一般都會使用 XGBoost 庫 (Chen & Guestrin, 2016) 和 LightGBM (Ke et al, 2017) 來進行建模。

到目前為止梯度提升還是被認為是 Kaggle 平台上表格模態競賽的獲勝解決方案,甚至在用於基於窗口的回歸時,它的效率也在更複雜的應用(如時間序列順序學習)中得到證明(Elsayed ,2022 ) .最近的表格基準測試論文中也說明,梯度提升可能仍然在大多數情況下勝過複雜的神經架構,如transformers (Gorishniy ,2021)。

傳統觀點認為,對於表格應用程序梯度提升模型具有比隨機森林更好的性能,但在沒有超參數調整的情況下會增加過度擬合的概率(Howard & Gugger,2020)。與隨機森林相比,梯度提升對調整參數的敏感性更高,並且運行的參數數量更多,所以通常需要比簡單的網格或隨機搜索更複雜的調整。這樣就出現了各種不同的超參數搜索的方法,例如一種可用的折衷方法是通過不同的參數子集進行順序網格搜索(Jain,2016 ), Optuna 等黑盒優化庫(Akiba ,2019 年)可以使用更自動化甚至並行化的方法進行超參數的搜索,這也是行業研究的一個活躍的方向。

特徵編碼
特徵編碼是指用於為機器學習準備數據的特徵集轉換。特徵編碼準備的常見形式包括數字特徵標準化和分類特徵的編碼,儘管一些學習庫(catboost)可能接受字符串表示中的分類特徵並進行內部編碼,但是手動的進行分類特徵的轉換還是有必要的。在深度學習出現之前,通常使用提取信息的替代表示來補充特徵或以某種方式進行特徵的組合來進行特徵的擴充,這種特徵工程對於梯度提升學習來說還是可以繼續使用的。所以本文的這些基準的目的之一是評估實踐與直接對數據進行訓練相比的好處。

特徵編碼的一個重要問題就是需要領域知識,例如基於填充數值分布派生的 bin 與基於外部數據庫查找提取 bin 來補充特徵之間是否有很大的區別?在 Automunge 的情況下,內部編碼庫的編碼基於固有的數字或字符串屬性,並且不考慮可以根據相關應用程序域推斷出的相鄰屬性。(日期時間格式的功能例外,它在自動化下自動提取工作日、營業時間、節假日等,並根據不同時間尺度的循環周期對條目進行冗餘編碼)

數字特徵
數值標準化在實踐中最常被使用的,例如z-score。在實踐中可能發現的其他變化包括mean scaling 和max scaling 。更複雜的約定可以轉換除尺度之外的分布形狀,例如 box-cox 冪律變換(Box & Cox, 1964) 或Scikit-Learn 的分位數轉換器qttf(Pedregosa ,2011),都可以將特徵轉換成一個更像高斯分布的特性集。數字歸一化更常用於線性模型,而不是樹的模型,例如在神經網絡中,它們的目的是跨特徵進行歸一化梯度更新,應用於數值特徵的標準化類型似乎會影響性能。
分類特徵
分類編碼通常在實踐中使用獨熱編碼進行轉換,這種熱編碼的做法在高基數情況下存在缺陷(分類很多導致生成的特徵多並且離散),梯度提升模型中分類標籤過多時甚至可能導致訓練超過內存限制。Automunge 庫試圖以兩種方式規避這種高基數邊緣情況,首先是默認使用二值化編碼而不是獨熱編碼,其次是通過區分哈希編碼的最高基數集(Teague,2020a),減少唯一條目的數量。

分類二值化是可以理解為將模擬信號轉換成數字信號過程中的量化,返回特徵中每一個byte位代表是否屬於該類

分類表示的第三種常見編碼方式是標籤編碼,他將分類表示為一個連續的數值型變量。
基準基準
本文的基準測試是通過訓練時間和模型性能這兩個關鍵性能指標來評估一系列數字和分類編碼場景。在配備 AMD 3970X 處理器、128Gb RAM 和兩個 Nvidia 3080 GPU 的 Lambda 工作站上進行了約 1.5 周的測試。訓練是通過 Optuna 調整的 XGBoost 進行的,具有 5-fold快速交叉驗證 (Swersky et al, 2013) 和 如果33 次調整迭代沒有改進則停止訓練。性能指標是對25% 驗證集進行根據 f1 分數評估進行的。

以上是對分類任務的偏差和方差性能進行平衡評估的良好默認設置(Stevens ,2020 )。在來自 OpenML 基準測試庫(Vanschoren ,2013)的 31 個表格分類數據集上循環 5 次並取平均值。報告的指標是上面說提到的每種編碼類型的 31 個數據集的 5 次重複的平均值,這些編碼類型都使用了所有用於訓練的數字或分類特徵。

數字特徵的結果如下:


最終模型表現:

default:Automunge 的默認值使用 z 分數規範化(庫中的「nmbr」代碼)從調整持續時間和模型性能的角度來看,默認編碼已被驗證為平均表現最佳的場景。

qttf:具有正態輸出分布的 Scikit-Learn QuantileTransformer,分位數分布轉換的平均表現不如簡單的 z 分數歸一化,儘管它仍然是表現最好的。

powertransform:根據分布屬性在「bxcx」、「mmmx」或「MAD3」之間有條件地編碼(通過Automunge 庫的 powertransform = True 設置),這是效果最差的場景。

mmmx:min max scaling 'mnmx' 將特徵分布轉移到 0-1 範圍內,這種情況的表現比 z-score 歸一化差得多,這可能是由於異常值導致數據在編碼空間中「擠在一起」的情況。
capped quantiles:min max scaling with capped outliers at 0.99 and 0.01 quantiles ('mnm3' code in library),這種情況最好直接與mmmx進行比較,表明了默認設置異常值上限並不能提高平均性能。

binstransform:z-score 歸一化再加上以 5 個獨熱編碼標準偏差箱(通過庫的 binstransform = True 設置),這個配置除了增加了訓練時間以外,似乎對模型性能沒有好處。

分類特徵的結果如下:


default:Automunge 的默認值是分類二值化(庫中的「1010」代碼),從調整持續時間和模型性能的角度來看,默認編碼已被驗證為最好的。

onht:獨熱編碼,這通常用作主流實踐中的默認值,與二值化相比,模型性能影響出人意料地不好。基於這個測試,建議在特殊用例之外(例如,出於特徵重要性分析的目的)停止使用 one-hot 編碼。

ord3:具有按分類頻率「ord3」排序的整數的序數編碼,按類別頻率而不是字母順序對序數整數進行排序顯着有益於模型性能,在大多數情況下,表現比獨熱編碼好,但是仍然不如二值化。

ordl:「ordl」按字母順序排序的整數的序數編碼,字母排序的序數編碼(Scikit-Learn 的 OrdinalEncoder 的默認值)表現不佳,建議在應用序數時默認為頻率排序的整數。

hsh2:散列序號編碼(高基數類別「hsh2」的庫默認值),該基準主要用於參考,由於某些類別可能會合併,因此會對低基數集產生性能影響。

or19:多層字符串解析「or19」(Teague,2020b),多層字符串解析成功地超越了單熱編碼,並且是第二好的表現,但與普通二值化相比,它的性能不足以推薦默認值。如果應用程序可能具有與語法內容相關的某些擴展結構的情況下可以試試。

總結
從訓練時間和模型性能的角度來看, Automunge 庫的 z-score 歸一化和分類二值化在測試中都表現了出了很好的效果,所以如果你在處理表格數據的時候可以優先使用 Automunge 的默認值進行特徵的處理,如果你想自己處理特徵,那麼z-score 歸一化和分類二值化也是首先可以考慮的方法。

基準測試包括以下表格數據集,此處顯示了它們的 OpenML ID 號:

Click prediction / 233146

C.C.FraudD. / 233143

sylvine / 233135

jasmine / 233134

fabert / 233133

APSFailure / 233130

MiniBooNE / 233126

volkert / 233124

jannis / 233123

numerai28.6 / 233120

Jungle-Chess-2pcs / 233119

segment / 233117

car / 233116

Australian / 233115

higgs / 233114

shuttle / 233113

connect-4 / 233112

bank-marketing / 233110

blood-transfusion / 233109

nomao / 233107

ldpa / 233106

skin-segmentation / 233104

phoneme / 233103

walking-activity / 233102

adult / 233099

kc1 / 233096

vehicle / 233094

credit-g / 233088

mfeat-factors / 233093

arrhythmia / 233092

kr-vs-kp / 233091


引用

Akiba, T., Sano, S., Yanase, T., Ohta, T., and Koyama, M. Optuna: A Next-generation Hyperparameter Optimization Framework. In KDD. (2019). URL https://optuna.org/#paper.

Box, G. E. P., and Cox, D. R. An analysis of transformations. Journal of the Royal Statistical Society: Series B (Methodological), 26(2):211–243, (1964). https://www.jstor.org/stable/2984418.

Breiman, L. Random Forests. Machine Learning 45, 5–32 (2001). https://doi.org/10.1023/A:1010933404324.

Chen, T. and Guestrin, C., XGBoost: A Scalable Tree Boosting System. (2016). https://arxiv.org/abs/1603.02754.

Elsayed, S., Thyssens, D., Rashed, A., Samer Jomaa, H., and Schmidt-Thieme, L., Do We Really Need Deep Learning Models for Time Series Forecasting? (2021). https://arxiv.org/abs/2101.02118.

Friedman, J. H. Greedy function approximation: A gradient boosting machine. The Annals of Statistics, 29(5) 1189–1232 (October 2001). https://doi.org/10.1214/aos/1013203451.

Goodfellow, I. J., Bengio, Y., and Courville, A. *Deep Learning*. MIT Press, Cambridge, MA, USA, (2016). http://www.deeplearningbook.org.

Gorishniy, Y., Rubachev, I., Khrulkov, V., and Babenko, A., Revisiting Deep Learning Models for Tabular Data. Advances in Neural Information Processing Systems, volume 30.

Curran Associates, Inc. (2021). URL https://openreview.net/forum?id=i_Q1yrOegLY.

Howard, J. and Gugger, S. *Deep Learning for Coders with fastai and PyTorch*. O』Reilly Media, 2020. https://www.oreilly.com/library/view/deep-learning-for/9781492045519/.

Jain, A. Complete Guide to Parameter Tuning in XGBoost with codes in Python. Analytics Vidhya (2016). https://www.analyticsvidhya.com/blog/2016/03/complete-guide-parameter-tuning-xgboost-with-codes-python/.

Kadra, A., Lindauer, M., Hutter, F., and Grabocka, J. Well-tuned simple nets excel on tabular datasets. In Beygelzimer, A., Dauphin, Y., Liang, P., and Vaughan, J. W. (eds.), Advances in Neural Information Processing Systems, 2021. URL https://openreview.net/forum?id=d3k38LTDCyO.

Ke, G., Meng, Q., Finley, T., Wang, T., Chen, W., Ma, W., Ye, Q., and Liu, T. LightGBM: A Highly Efficient Gradient Boosting Decision Tree. Advances in Neural Information Processing Systems, volume 30. Curran Associates, Inc. (2020). URL https://proceedings.neurips.cc/paper/2017/file/6449f44a102fde848669bdd9eb6b76fa-Paper.pdf.

London, I. Encoding cyclical continuous features — 24-hour time. (2016) URL https://ianlondon.github.io/blog/encoding-cyclical-features-24hour-time/

Pedregosa, F., Varoquaux, G., Gramfort, A., Michel, V., Thirion, B., Grisel, O., Blondel, M.,

Prettenhofer, P., Weiss, R., Dubourg, V., Vanderplas, J., Passos, A., Cournapeau, D., Brucher, M., Perrot, M., Duchesnay, E., Scikit-learn: Machine Learning in Python, JMLR 12, pp. 2825–2830, (2011). https://www.jmlr.org/papers/v12/pedregosa11a.html.

Quinlan, J. R. Induction of Decision Trees. Mach. Learn. 1, 1, 81–106 (March 1986). https://doi.org/10.1023/A:1022643204877.

Ravi, Rakesh. One-Hot Encoding is making your Tree-Based Ensembles worse, here’s why? Towards Data Science, (January 2019). https://towardsdatascience.com/one-hot-encoding-is-making-your-tree-based-ensembles-worse-heres-why-d64b282b5769.

Stevens, E., Antiga, L., Viehmann, T. *Deep Learning with PyTorch*. Manning Publications, (2020). https://www.manning.com/books/deep-learning-with-pytorch.

Swersky, K. and Snoek, J. and Adams, R. P., Multi-Task Bayesian Optimization. Advances in Neural Information Processing Systems, volume 26. Curran Associates, Inc. (2013). URL https://proceedings.neurips.cc/paper/2013/file/f33ba15effa5c10e873bf3842afb46a6-Paper.pdf.

Teague, N. Automunge code repository, documentation, and tutorials, (2022). URL https://github.com/Automunge/AutoMunge.

Teague, N. Custom Transformations with Automunge. (2021). URL https://medium.com/automunge/custom-transformations-with-automunge-ae694c635a7e

Teague, N. Hashed Categoric Encodings with Automunge (2020a) https://medium.com/automunge/hashed-categoric-encodings-with-automunge-92c0c4b7668c.

Teague, N. Parsed Categoric Encodings with Automunge. (2020b) https://medium.com/automunge/string-theory-acbd208eb8ca.

Vanschoren, J., van Rijn, J. N., Bischl, B., and Torgo, L. OpenML: networked science in machine learning. SIGKDD Explorations 15(2), pp 49–60, (2013). https://arxiv.org/abs/1407.7722

編輯:於騰凱

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 鑽石舞台 的頭像
    鑽石舞台

    鑽石舞台

    鑽石舞台 發表在 痞客邦 留言(0) 人氣()