每天資訊機器學習:LightGBM 與 XGBoost示例及簡單比較

菜單

機器學習:LightGBM 與 XGBoost示例及簡單比較

機器學習:LightGBM 與 XGBoost示例及簡單比較

Light GBM(也被稱為Light Gradient Boosting Machine)和XGBoost(也被稱為Extreme Gradient Boost)是兩種最受歡迎的免費開源決策樹整合演算法,它們使用了梯度Boosting框架。在他們各自的網站上,都聲稱他們的演算法快速且準確。

梯度提升

機器學習:LightGBM 與 XGBoost示例及簡單比較

資料擬合梯度提升算

梯度提升繼承了決策樹演算法,該演算法一次新增一棵樹並整合決策樹以適應和糾正錯誤預測。擬合和糾正誤差預測,也稱為“梯度提升”,因為在訓練模型時損失梯度被最小化。

此外,梯度提升演算法在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 個測試資料集。

機器學習:LightGBM 與 XGBoost示例及簡單比較

在使用定義模型時,我們使用基本模型(不含任何超引數的模型),將其與Scikit-learn交叉驗證的準確性評分和每個模型的執行時間進行比較,也使用資料測試來檢視模型是否過擬合。

模型定義

XGBoost

我們已經從上面的 xgboost 庫中載入了 XGBoostClassifier 類。現在我們可以定義分類器模型。

機器學習:LightGBM 與 XGBoost示例及簡單比較

我們將用訓練資料擬合模型

機器學習:LightGBM 與 XGBoost示例及簡單比較

然後,我們將透過交叉驗證檢查訓練的準確性

機器學習:LightGBM 與 XGBoost示例及簡單比較

最後,我們將預測測試資料並使用 accuracy_score 檢查預測準確度以評估預測結果。

LightGBM

我們已經從上面的 LightGBM 庫中載入了LightGBMClassifier類。現在我們可以定義分類器模型。Python程式碼如下:

機器學習:LightGBM 與 XGBoost示例及簡單比較

我們將用訓練資料擬合模型並檢視執行持續時間

機器學習:LightGBM 與 XGBoost示例及簡單比較

然後,我們再次透過交叉驗證檢查訓練的準確性,Python程式碼如下:

機器學習:LightGBM 與 XGBoost示例及簡單比較

最後,我們將預測測試資料並使用 accuracy_score 檢查預測準確度以評估預測LightGBM演算法的結果。Python程式碼如下:

機器學習:LightGBM 與 XGBoost示例及簡單比較

最後結果

準確度得分

機器學習:LightGBM 與 XGBoost示例及簡單比較

準確度不是精度

基於交叉驗證值,XGBoost 演算法為 97。5%,LightGBM 為 98。3%。這意味著 LightGBM 比 XGBoost 更好。

訓練時間

機器學習:LightGBM 與 XGBoost示例及簡單比較

訓練模型的持續時間

對於訓練執行時間,LightGBM 的速度要快得多,因為 LGBM 與大型資料集相容。

結論

這是否意味著XGBoost不是一個好的演算法呢?XGBoost仍然是一個很棒的演算法,事實上,這個實驗只使用了基本模型(沒有超引數的模型),這意味著我們沒有發揮XGBoost的真正潛力。如果你想嘗試使用大資料集並得到快速的結果來評估,我們建議你使用Light GBM。如果您有更多時間,我們鼓勵您同時使用這兩種演算法。