Light GBM(也被稱為Light Gradient Boosting Machine)和XGBoost(也被稱為Extreme Gradient Boost)是兩種最受歡迎的免費開源決策樹整合演算法,它們使用了梯度Boosting框架。在他們各自的網站上,都聲稱他們的演算法快速且準確。
梯度提升
資料擬合梯度提升算
梯度提升繼承了決策樹演算法,該演算法一次新增一棵樹並整合決策樹以適應和糾正錯誤預測。擬合和糾正誤差預測,也稱為“梯度提升”,因為在訓練模型時損失梯度被最小化。
此外,梯度提升演算法在Kaggle機器學習競賽中非常受歡迎,用於解決表格或結構化資料集問題。
XGBoost
XGBoost
(eXtreme Gradient Boosting)是一種機器學習演算法,專注於計算速度和機器學習模型效能。
XGBoost的優點:
相容中小型資料集
可並行處理
具有處理缺失值的內建函式
高度靈活
可以在每次迭代後執行交叉驗證
LightGBM
Light GBM是一個分散式高效能框架,它使用決策樹進行排名、分類和迴歸任務。
Light GBM的優點:
更快的訓練速度和更高的效率
降低記憶體使用率
比其他增強演算法都具有更高的準確性
與大型資料集的相容
支援並行學習
LightGBM和XGBoost 都只在資料中有需要轉換為數值特徵的數值特徵時才接受數值特徵。但是在XGboost中,對於更大的資料集,這是一個問題,因為編碼需要更長的時間。
資料集
我們使用Scikit-learn庫中的Make_Classification來生成一個隨機分類樣本。我們生成1,000,000個數據,並將其分進行拆分。我們有 900,000 個訓練資料集和 100,000 個測試資料集。
在使用定義模型時,我們使用基本模型(不含任何超引數的模型),將其與Scikit-learn交叉驗證的準確性評分和每個模型的執行時間進行比較,也使用資料測試來檢視模型是否過擬合。
模型定義
XGBoost
我們已經從上面的 xgboost 庫中載入了 XGBoostClassifier 類。現在我們可以定義分類器模型。
我們將用訓練資料擬合模型
然後,我們將透過交叉驗證檢查訓練的準確性
最後,我們將預測測試資料並使用 accuracy_score 檢查預測準確度以評估預測結果。
LightGBM
我們已經從上面的 LightGBM 庫中載入了LightGBMClassifier類。現在我們可以定義分類器模型。Python程式碼如下:
我們將用訓練資料擬合模型並檢視執行持續時間
然後,我們再次透過交叉驗證檢查訓練的準確性,Python程式碼如下:
最後,我們將預測測試資料並使用 accuracy_score 檢查預測準確度以評估預測LightGBM演算法的結果。Python程式碼如下:
最後結果
準確度得分
準確度不是精度
基於交叉驗證值,XGBoost 演算法為 97。5%,LightGBM 為 98。3%。這意味著 LightGBM 比 XGBoost 更好。
訓練時間
訓練模型的持續時間
對於訓練執行時間,LightGBM 的速度要快得多,因為 LGBM 與大型資料集相容。
結論
這是否意味著XGBoost不是一個好的演算法呢?XGBoost仍然是一個很棒的演算法,事實上,這個實驗只使用了基本模型(沒有超引數的模型),這意味著我們沒有發揮XGBoost的真正潛力。如果你想嘗試使用大資料集並得到快速的結果來評估,我們建議你使用Light GBM。如果您有更多時間,我們鼓勵您同時使用這兩種演算法。