- LightGBM教程
- LightGBM - 首頁
- LightGBM - 概述
- LightGBM - 架構
- LightGBM - 安裝
- LightGBM - 核心引數
- LightGBM - Boosting演算法
- LightGBM - 樹生長策略
- LightGBM - 資料集結構
- LightGBM - 二分類
- LightGBM - 迴歸
- LightGBM - 排序
- LightGBM - Python實現
- LightGBM - 引數調優
- LightGBM - 繪圖功能
- LightGBM - 早停訓練
- LightGBM - 特徵互動約束
- LightGBM 與其他Boosting演算法對比
- LightGBM 有用資源
- LightGBM - 有用資源
- LightGBM - 討論
LightGBM - 與其他Boosting演算法對比
LightGBM 在處理分類資料集方面也表現出色,因為它使用分裂或分組方法處理分類特徵。我們將所有分類特徵轉換為類別資料型別,以便與LightGBM中的分類特徵進行互動。完成後,分類資料將由LightGBM自動處理,無需手動管理。
LightGBM 使用GOSS方法在訓練決策樹時對資料進行取樣。此方法設定每個資料樣本的方差,並按降序排列。方差較低的資料樣本已經表現良好,因此在對資料集進行取樣時,它們的權重會較低。
因此,在本章中,我們將重點關注Boosting演算法之間的差異,並將它們與LightGBM進行比較。
您應該使用哪種Boosting演算法?
現在,問題很簡單:如果所有這些機器學習演算法都表現良好、速度快且精度更高,那麼您應該選擇哪一個?!!
這些問題的答案不能是單一的Boosting策略,因為每種策略最適合您將要處理的特定問題型別。
例如,如果您認為您的資料集需要正則化,那麼您可以肯定地使用XGBoost。CatBoost和LightGBM是處理分類資料的不錯選擇。如果您需要更多關於該方法的社群支援,可以探索諸如XGBoost或Gradient Boosting之類的演算法,這些演算法是在幾年前開發的。
Boosting演算法之間的比較
將資料擬合到模型後,所有策略都提供了相對相似的結果。與其他演算法相比,LightGBM的效能似乎較差,但在這種情況下,XGBoost的效能良好。
為了展示每個演算法在相同資料上的表現,我們可以顯示其y_test和y_pred值的圖形。
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np
# Example data
y_test = np.linspace(0, 100, 100)
# Predictions with some noise
y_pred1 = y_test + np.random.normal(0, 10, 100)
y_pred2 = y_test + np.random.normal(0, 8, 100)
y_pred3 = y_test + np.random.normal(0, 6, 100)
y_pred4 = y_test + np.random.normal(0, 4, 100)
y_pred5 = y_test + np.random.normal(0, 2, 100)
fig, ax = plt.subplots(figsize=(11, 5))
# Plot each model's predictions
sns.lineplot(x=y_test, y=y_pred1, label='GradientBoosting', ax=ax)
sns.lineplot(x=y_test, y=y_pred2, label='XGBoost', ax=ax)
sns.lineplot(x=y_test, y=y_pred3, label='AdaBoost', ax=ax)
sns.lineplot(x=y_test, y=y_pred4, label='CatBoost', ax=ax)
sns.lineplot(x=y_test, y=y_pred5, label='LightGBM', ax=ax)
# Set labels
ax.set_xlabel('y_test', color='g')
ax.set_ylabel('y_pred', color='g')
# Display the plot
plt.show()
輸出
以下是上述程式碼的結果 -
上圖顯示了每種方法預期的y_test和y_pred值。我們可以看到,與其他演算法相比,LightGBM和CatBoost的效能較差,因為它們預測的y_pred值遠高於或低於其他方法。從圖中可以看出,XGBoost和GradientBoosting在這組資料上優於所有其他演算法,其預測值似乎是所有演算法的平均值。
不同Boosting演算法之間的區別
以下是不同Boosting演算法之間的表格差異 -
| 特徵 | 梯度提升 | LightGBM | XGBoost | CatBoost | AdaBoost |
|---|---|---|---|---|---|
| 引入年份 | 不確定 | 2017 | 2014 | 2017 | 1995 |
| 處理分類資料 | 需要額外步驟,例如獨熱編碼 | 需要額外步驟 | 無需特殊步驟 | 自動處理 | 無需特殊步驟 |
| 速度/可擴充套件性 | 中等 | 快速 | 快速 | 中等 | 快速 |
| 記憶體使用 | 中等 | 低 | 中等 | 高 | 低 |
| 正則化(防止過擬合) | 否 | 是 | 是 | 是 | 否 |
| 並行處理(同時執行多個任務) | 否 | 是 | 是 | 是 | 否 |
| GPU支援(可以使用顯示卡) | 否 | 是 | 是 | 是 | 否 |
| 特徵重要性(顯示哪些特徵重要) | 是 | 是 | 是 | 是 | 是 |