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 处理缺失数据时,不需要进行插补(例如,用均值、中位数等填充空白)。它通过将缺失值识别为独立值,在训练过程中自动确定如何以最佳方式处理缺失值。

广告