进阶主题
缺失值的处理
- LightGBM 通过默认的方式来处理缺失值,你可以通过设置
use_missing=false
来使其无效。
- LightGBM 通过默认的的方式用 NA (NaN) 去表示缺失值,你可以通过设置
zero_as_missing=true
将其变为零。
- 当设置
zero_as_missing=false
(默认)时,在稀疏矩阵里 (和LightSVM) ,没有显示的值视为零。
- 当设置
zero_as_missing=true
时, NA 和 0 (包括在稀疏矩阵里,没有显示的值)视为缺失。
分类特征的支持
- 当使用本地分类特征,LightGBM 能提供良好的精确度。不像简单的 one-hot 编码,LightGBM 可以找到分类特征的最优分割。 相对于 one-hot 编码结果,LightGBM 可以提供更加准确的最优分割。
- 用
categorical_feature
指定分类特征 参考 Parameters 的参数 categorical_feature
- 首先需要转换为 int 类型,并且只支持非负数。 将其转换为连续范围更好。
- 使用
min_data_per_group
, cat_smooth
去处理过拟合(当 #data
比较小,或者 #category
比较大)
- 对于具有高基数的分类特征(
#category
比较大), 最好把它转化为数字特征。
LambdaRank
- 标签应该是 int 类型,较大的数字代表更高的相关性(例如:0:坏,1:公平,2:好,3:完美)。
- 使用
label_gain
设置增益(重量)的 int
标签。
- 使用
max_position
设置 NDCG 优化位置。
参数优化
并行学习
GPU 的支持
GCC 用户的建议 (MinGW, *nix)