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 處理缺失資料時,不需要進行插補(例如,用均值、中位數等填充空白)。它透過將缺失值識別為獨立值,在訓練過程中自動確定如何以最佳方式處理缺失值。

廣告
© . All rights reserved.