1. lightgbm 默认使用NaN 来表示缺失值。你可以设置zero_as_missing 参数来改变其行为:

      • zero_as_missing=True 时:NaN0 (包括在稀疏矩阵里,没有显示的值) 都视作缺失值。
      • zero_as_missing=False 时:只有NaN 才是缺失值(默认的行为)
    1. 当使用local categorical 特征(而不是one-hot 编码的特征)时,lightgbm 可以提供良好的精确度。

    2. 要想使用categorical 特征,则启用categorical_feature 参数(参数值为列名字符串或者列名字符串的列表)

      • 首先要将categorical 特征的取值转换为非负整数,而且如果是连续的范围更好
      • 然后使用min_data_per_groupcat_smooth 去处理过拟合(当样本数较小,或者category 取值范围较大时)
    1. 使用max_position 设置 NDCG 优化的位置

    1. lightgbm 已经提供了以下并行学习算法:

      这些并行算法适用于不同场景:

       样本数量较小样本数量巨大
      特征数量较小特征并行数据并行
      特征数量巨大特征并行投票并行
    2. 构建并行版本:

      默认的并行版本基于socket 的并行学习,如果需要基于MPI 的并行版本,则需要手动编译

      • 首先收集所有想要运行并行学习的机器的IP,并指定一个TCP 端口号(要求在这些机器上,这些端口没有被防火墙屏蔽掉)。

        其中要求:

        • 数量必须和num_machines 或者num_machine 参数相等
        • 必须包含127.0.0.1 (或者包含 对应的其它ip),它代表本地
        • port 必须和local_listen_port 或者local_port 参数相等
      • 然后在配置文件中编译以下参数:

        1. tree_learner= 你的并行算法
        2. num_machines= 并行计算的机器的数量
        3. machine_list_file=ip.txt #要求每个并行计算的机器占一行
        4. local_listen_port=port
      • 然后将数据文件、可执行文件、配置文件、以及ip.txt 拷贝到所有并行学习的机器上。

      • 在所有机器上运行以下命令:

        • windowslightgbm.exe config=配置文件
        • Linux: ./lightgbm config=配置文件
    3. 并行学习的注意事项:

      • 当前Python 版本不支持并行,必须采用lightgbm 二进制的方式。

        • 必须都包含label 列。推断时,该列的数值不起作用,仅仅是个占位符。
        • 如果有 ,则列的先后顺序不重要。如果没有header,则必须顺序也要保持相同。