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 # 使用 Pandas DataFrame 的示例 lgb_data = lgb.Dataset(data, label=labels)
此处的数据是您的输入数据集,标签是您要输入的目标值想要预测。
步骤 3:以二进制格式保存
您可以使用 LightGBM 的二进制格式存储数据集,这种格式更适用于较大的数据集 −
lgb_data.save_binary('data.bin')
加载和使用数据集
创建数据集后,您可以使用它进行训练。以下是使用 LightGBM 训练模型的方法:
params = { 'objective': 'binary', # 二元分类的示例 'metric': 'binary_logloss' } # 训练模型 model = lgb.train(params, lgb_data, num_boost_round=100)
如果您需要对同一段数据运行多个测试,您还可以在多个脚本或会话中重复使用数据集。
LightGBM 数据结构的主要功能
以下是 LightGBM 数据结构的一些主要功能 −
LightGBM 最大化数据访问和存储,以充分利用内存。
为了管理太大而无法放入内存的数据集,它使用压缩二进制格式的数据。
稀疏数据在自然语言处理 (NLP) 和推荐系统等实际应用中很常见,其中大量属性包含零值或缺失值。
LightGBM 通过仅保存非零值并减少内存使用量并加快计算速度。
LightGBM 默认支持分类特征。与可能导致数百个额外列的独热编码不同,LightGBM 以不同的方式处理这些特征。
LightGBM 使用基于直方图的技术将数据划分为决策树。基本上,它会生成特征值直方图,这使它能够比使用传统方法更快地找到理想的分割点。
LightGBM 如何处理不同的数据类型
LightGBM 可以处理不同的数据类型,它们列在下面 −
数值特征
LightGBM 将数值特征作为连续数据处理。为了确定分离它们的最佳方法,它会自动将它们划分为直方图。 LightGBM 能够处理特征,而无需缩放或规范化。
分类特征
正如我们之前所见,LightGBM 本身支持类别特征。当您将某些列标记为分类时,它会自动对类别进行排序和组织,从而实现更好的拆分。
缺失值
使用 LightGBM 处理缺失数据时,无需进行插补或用平均值、中位数等填补空白。它会在整个训练阶段自动确定如何最佳地处理缺失数据,方法是将它们识别为独立值。