一、集成學習框架
對訓練樣本較少的結構化數據領域,Boosting算法仍然是常用項
XGBoost、CatBoost和LightGBM都是以決策樹為基礎的集成學習框架
三個學習框架的發展是:XGBoost是在GBDT的基礎上優化而來,CatBoost和LightGBM是在XGBoost的基礎上優化而來
三個學習框架的決策樹構造方式:XGBoost是按照層生成(level-wise)得到的是對稱樹,避免過擬合但存在冗余分裂;CatBoost也是對稱樹,其為完全二叉樹;LightGBM使用的是葉子生長(level-wise),其得到是一個不對稱樹
三個學習框架對類別特征的處理:XGBoost不能自動處理類別特征,對于其中的類別特征,需要人工手動出來成數值形式用于模型訓練;LightGBM只需要指定類別特征名稱,其內置的算法會自動對其進行處理;CatBoost是專門處理類別特征,其中內置的目標變量統計的特征編碼方式實現對數據類別特征的高效處理
知識補充:對稱樹關注的是結構對稱性,而完全二叉樹強調層序填充的完整性。兩者在定義、構造條件和應用場景上截然不同,但也存在交集(如完全對稱的滿二叉樹)
對稱樹:二叉樹的左右子樹呈鏡像對稱,不能出現左或右子樹缺失,或者對應對稱節點值不等的情況
完全二叉樹:深度為k的二叉樹,若其前k-1層節點數達到最大值,且第k層節點從左到右。
連續排列,則稱為完全二叉樹
在對某一數據集進行多模型訓練和測試分類效果比較時:需要展現的表格效果為:
模型1
模型2
.................
模型n
基本超參數
訓練集AUC
測試集AUC
訓練時間(s)
測試時間(s)
知識補充:AUC是模型在數據上的分類排序能力量化指標,其核心價值在于評估模型擬合能力及輔助判斷過擬合
二、調參優化
機器學習中有大量的參數需要人為事先設定,這些統稱為超參數(hyperparameter),常見的就如同epoch、batch_size、樹深度、學習率和正則化系數等參數的設定
下面來介紹機器學習中常用的調參方法:需要強調的是超參數的最優選擇是在模型的驗證過程中,即此時需要用到驗證集,需要提取對數據集劃分好(因為超參數是不參與模型內部參數的自動更新,其是通過外部調優確定最佳取值)
①隨機調參法( random search,不是所有超參數組合都嘗試)
其采用的方式是對給定分布中抽樣規定數量的參數,對這些抽樣的超參數進行實驗,選取其中模型驗證集損失誤差最小時的超參數組合即可。有時這種方式更為高效
②網格搜索法(grid search,所有超參數組合都嘗試)
這種方法的思路很好理解,其主要適用的場景包括:優化三個及其以下的超參數數量。具體方法:比如我現在有三個參數a/b/c,我想得到三個參數組合的最優模型參數,那么我預先設定三個參數的候選值列表(預設一個待搜索的參數列表空間):a:[0.1,0.3.0.5],b:[50,100,150],c:[3,5,7],那么此時總共的組合方式為3×3×3=27種(笛卡爾乘積組合),此時就依次遍歷這27種組合用于模型的參數設置,選擇其中模型驗證集損失誤差最小時的超參數組合即可
③貝葉斯調參優化法(bayesian optimization,這種方式可以同時出來很多參數,當然其計算資源的增加也是指數級別的增加)
貝葉斯優化調參是目前最好的調參方法,貝葉斯優化的核心價值在于以最少試錯成本逼近全局最優解。其中的優化方法涉及高斯過程和貝葉斯定理。其高斯過程的核心是對已有的數據點預測區域進行函數建模,求其不確定性和概率分布,對其中概率較大的區間的進行迭代,使得模型的損失達到最低時對應的超參數組合選擇,但是這種方式比較消耗計算資源
其核心思想很好理解:比如在使用貝葉斯優化方法時,我希望在目前選擇的一個參數1條件下(前提),使得其去組合另外一個參數2,使得模型效果更好,那么我怎么更好的去尋找到滿足前提條件中最好的值(即這個前提條件是最優的),此時尋找的方法就可以使用高斯過程,找到這個最好的前提條件值,此時就只需要對另外一個參數2做考慮即可,迭代參數2的范圍,找到模型性能最好的那組對應的超參數組合。幸運的是,目前這個好理解但實現復雜的方法已經被封裝在bayes_opt中,可以在pycharm中直接調用使用