lightgbm
默认使用NaN
来表示缺失值。你可以设置zero_as_missing
参数来改变其行为:zero_as_missing=True
时:NaN
和0
(包括在稀疏矩阵里,没有显示的值) 都视作缺失值。zero_as_missing=False
时:只有NaN
才是缺失值(默认的行为)
当使用
local categorical
特征(而不是one-hot
编码的特征)时,lightgbm
可以提供良好的精确度。要想使用
categorical
特征,则启用categorical_feature
参数(参数值为列名字符串或者列名字符串的列表)- 首先要将
categorical
特征的取值转换为非负整数,而且如果是连续的范围更好 - 然后使用
min_data_per_group
和cat_smooth
去处理过拟合(当样本数较小,或者category
取值范围较大时)
- 首先要将
使用
max_position
设置NDCG
优化的位置
lightgbm
已经提供了以下并行学习算法:这些并行算法适用于不同场景:
样本数量较小 样本数量巨大 特征数量较小 特征并行 数据并行 特征数量巨大 特征并行 投票并行 构建并行版本:
默认的并行版本基于
socket
的并行学习,如果需要基于MPI
的并行版本,则需要手动编译首先收集所有想要运行并行学习的机器的
IP
,并指定一个TCP
端口号(要求在这些机器上,这些端口没有被防火墙屏蔽掉)。其中要求:
- 数量必须和
num_machines
或者num_machine
参数相等 - 必须包含
127.0.0.1
(或者包含 对应的其它ip
),它代表本地 port
必须和local_listen_port
或者local_port
参数相等
- 数量必须和
然后在配置文件中编译以下参数:
tree_learner= 你的并行算法
num_machines= 并行计算的机器的数量
machine_list_file=ip.txt #要求每个并行计算的机器占一行
local_listen_port=port
然后将数据文件、可执行文件、配置文件、以及
ip.txt
拷贝到所有并行学习的机器上。在所有机器上运行以下命令:
windows
:lightgbm.exe config=配置文件
Linux
:./lightgbm config=配置文件
并行学习的注意事项:
当前
Python
版本不支持并行,必须采用lightgbm
二进制的方式。-
- 必须都包含
label
列。推断时,该列的数值不起作用,仅仅是个占位符。 - 如果有 ,则列的先后顺序不重要。如果没有
header
,则必须顺序也要保持相同。
- 必须都包含