快速入门指南

    参考 先安装 LightGBM 。

    其他有帮助的链接列表

    LightGBM 支持 CSV, 和 LibSVM 格式的输入数据文件。

    Label 是第一列的数据,文件中是不包含 header(标题) 的。

    LightGBM 可以直接使用 categorical feature(类别特征)(不需要单独编码)。 实验显示,与 one-hot 编码相比,其速度提高了 8 倍。

    有关配置的详细信息,请参阅 参数 章节。

    权重和 Query/Group 数据

    LightGBM 也支持加权训练,它需要一个额外的 。 它需要额外的 query 数据 用于排名任务。

    11/3/2016 更新:

    1. 现在支持 header(标题)输入
    2. 可以指定 label 列,权重列和 query/group id 列。 索引和列都支持
    3. 可以指定一个被忽略的列的列表

    一些重要的参数如下 :

    • config, 默认="", type(类型)=string, alias(别名)=config_file
      • 配置文件的路径
    • task, 默认=train, type(类型)=enum, options(可选)=train, predict, convert_model
      • train, alias(别名)=training, 用于训练
      • predict, alias(别名)=prediction, test, 用于预测。
      • convert_model, 用于将模型文件转换为 if-else 格式, 在 中了解更多信息
    • application, 默认=regression, 类型=enum, 可选=regression, regression_l1, huber, fair, poisson, quantile, quantile_l2, binary, multiclass, multiclassova, xentropy, xentlambda, lambdarank, 别名=objective, app
      • 回归 application
        • regression_l2, L2 损失, 别名=regression, mean_squared_error, mse
        • regression_l1, L1 损失, 别名=mean_absolute_error, mae
        • huber, Huber loss
        • poisson,
        • quantile, Quantile regression
        • , 与 quantile 类似, 但是使用 L2 损失
      • binary, 二进制log loss_ 分类 application
      • 多类别分类 application
        • multiclass, 目标函数, num_class 也应该被设置
        • multiclassova, One-vs-All 二元目标函数, num_class 也应该被设置
      • 交叉熵 application
        • xentropy, 交叉熵的目标函数 (可选线性权重), 别名=cross_entropy
        • xentlambda, 交叉熵的替代参数化, 别名=cross_entropy_lambda
        • label 是在 [0, 1] 间隔中的任何东西
      • lambdarank, application
        • 在 lambdarank 任务中 label 应该是 int 类型,而较大的数字表示较高的相关性(例如,0:bad, 1:fair, 2:good, 3:perfect)
        • label_gain 可以用来设置 int label 的 gain(weight)(增益(权重))
    • boosting, 默认=gbdt, type=enum, 选项=gbdt, rf, dart, goss, 别名=boost, boosting_type
    • data, 默认="", 类型=string, 别名=train, train_data
      • 训练数据, LightGBM 将从这个数据训练
    • valid, 默认="", 类型=multi-string, 别名=test, valid_data, test_data
      • 验证/测试 数据,LightGBM 将输出这些数据的指标
      • 支持多个验证数据,使用 , 分开
    • learning_rate, 默认=0.1, 类型=double, 别名=shrinkage_rate
      • shrinkage rate(收敛率)
    • num_leaves, 默认=31, 类型=int, 别名=num_leaf
      • 在一棵树中的叶子数量
    • tree_learner, 默认=serial, 类型=enum, 可选=serial, feature, data, voting, 别名=tree
      • serial, 单个 machine tree 学习器
      • feature, 别名=feature_parallel, feature parallel tree learner(特征并行树学习器)
      • data, 别名=data_parallel, data parallel tree learner(数据并行树学习器)
      • voting, 别名=voting_parallel, voting parallel tree learner(投票并行树学习器)
      • 参考 来了解更多细节
    • num_threads, 默认=OpenMP_default, 类型=int, 别名=num_thread, nthread
      • LightGBM 的线程数
      • 为了获得最好的速度,将其设置为 real CPU cores(真实 CPU 内核) 数量,而不是线程数(大多数 CPU 使用 hyper-threading 来为每个 CPU core 生成 2 个线程)
      • 对于并行学习,不应该使用全部的 CPU cores ,因为这会导致网络性能不佳
    • max_depth, 默认=-1, 类型=int
      • 树模型最大深度的限制。 当 #data 很小的时候,这被用来处理 overfit(过拟合)。 树仍然通过 leaf-wise 生长
      • < 0 意味着没有限制
    • min_data_in_leaf, 默认=20, 类型=int, 别名=min_data_per_leaf , min_data, min_child_samples
      • 一个叶子中的最小数据量。可以用这个来处理过拟合。
    • min_sum_hessian_in_leaf, 默认=1e-3, 类型=double, 别名=min_sum_hessian_per_leaf, min_sum_hessian, min_hessian, min_child_weight
      • 一个叶子节点中最小的 sum hessian 。类似于 min_data_in_leaf ,它可以用来处理过拟合。

    想要了解全部的参数, 请参阅 .

    对于 Windows:

    对于 Unix: