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