- 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 - 資料集結構
LightGBM 以其處理大型資料集的能力、高效的記憶體使用率和較短的訓練時間而聞名。LightGBM 的主要資料結構稱為資料集。這種結構主要用於以一種使預測和訓練速度更快的方式儲存資料。讓我們來看看這個資料集的使用和重要性。
資料集結構
LightGBM 中的資料集是梯度提升模型訓練中使用的一種高效的資料儲存格式。從你的輸入資料(例如 NumPy 陣列或 Pandas DataFrame)生成 LightGBM 資料集是應用 LightGBM 的第一步。
資料集的結構有助於 LightGBM:
透過有效地儲存資料來減少記憶體使用量。
預計算一些資料(例如特徵直方圖)以加快訓練速度。
有效地處理稀疏資料,即具有大量缺失值或零值的資料。
建立資料集
要建立一個 LightGBM 資料集,你通常需要遵循以下步驟:
步驟 1:載入你的資料
你的資料可以採用各種格式,例如:
Pandas DataFrame: data = pd.DataFrame(...)
NumPy 陣列: data = np.array(...)
CSV 檔案: data = pd.read_csv('data.csv')
步驟 2:將你的資料轉換為 LightGBM 資料集格式
如下所示,你可以將你的資料轉換為 LightGBM 資料集格式:
import lightgbm as lgb # Example with Pandas DataFrame lgb_data = lgb.Dataset(data, label=labels)
這裡,data 是你的輸入資料集,labels 是你想要預測的目標值。
步驟 3:儲存為二進位制格式
你可以使用 LightGBM 的二進位制格式儲存資料集,這對於較大的資料集更有效:
lgb_data.save_binary('data.bin')
載入和使用資料集
建立資料集後,你可以將其用於訓練。以下是使用 LightGBM 訓練模型的方法:
params = {
'objective': 'binary', # Example for binary classification
'metric': 'binary_logloss'
}
# Train the model
model = lgb.train(params, lgb_data, num_boost_round=100)
如果你需要對同一部分資料執行多個測試,你也可以在多個指令碼或會話中重用資料集。
LightGBM 資料結構的關鍵特性
以下是 LightGBM 資料結構的一些關鍵特性:
LightGBM 最大限度地提高資料訪問和儲存效率,以充分利用記憶體。
為了管理記憶體中無法容納的大型資料集,它使用壓縮的二進位制格式中的資料。
稀疏資料在現實世界的應用程式(如自然語言處理 (NLP) 和推薦系統)中很常見,其中大量屬性包含零值或缺失值。
LightGBM 透過僅儲存非零值來有效地處理稀疏資料,從而減少記憶體使用量並加快計算速度。
LightGBM 預設支援類別特徵。與可能導致數百個額外列的獨熱編碼不同,LightGBM 對這些特徵的處理方式有所不同。
LightGBM 使用基於直方圖的技術將資料劃分到決策樹中。基本上,它生成特徵值直方圖,這使得它能夠比傳統方法更快地找到最佳分割點。
LightGBM 如何處理不同的資料型別
LightGBM 可以處理不同的資料型別,如下所示:
數值特徵
LightGBM 將數值特徵視為連續資料。為了確定最佳分割方式,它會自動將其劃分為直方圖。LightGBM 能夠處理特徵而無需縮放或歸一化。
類別特徵
正如我們前面所看到的,LightGBM 原生支援類別特徵。當您將某些列標記為類別特徵時,它會自動處理類別的排序和組織,從而實現更好的分割。
缺失值
使用 LightGBM 處理缺失資料時,不需要進行插補(例如,用均值、中位數等填充空白)。它透過將缺失值識別為獨立值,在訓練過程中自動確定如何以最佳方式處理缺失值。