dask_lightgbm使用的完整训练集?

问题描述

我正在阅读dask-lightgbm估计器的实现(特别是dask_lightgb.core.py中的_train_part函数),但看不到训练集的整体情况习惯于适合最终的估算器?

_train_part函数接受布尔参数return_model,并且在train函数的实现中(使用client.submit在每个工作程序上调用_train_part ),return_model仅在工作人员为“ master_worker”(其本身似乎是随机选择的Dask工作人员)时才为true。从逻辑上讲,每个工作人员都被分配了整个模型训练集的1 / n块-其中n =工人总数-然后,每个工人在训练集的自己子集上训练自己的独立模型。 return_model参数控制_train_part是否返回每个工作人员的模型,因此,除一个工作人员外,它对所有工作人员-因此所有模型都返回None。

代码:

def _train_part(params,model_factory,list_of_parts,worker_addresses,return_model,local_listen_port=12400,time_out=120,**kwargs):

    network_params = build_network_params(worker_addresses,get_worker().address,local_listen_port,time_out)
    params.update(network_params)

    # Concatenate many parts into one
    parts = tuple(zip(*list_of_parts))
    data = concat(parts[0])
    label = concat(parts[1])
    weight = concat(parts[2]) if len(parts) == 3 else None

    try:
        model = model_factory(**params)
        model.fit(data,label,sample_weight=weight)
    finally:
        _safe_call(_LIB.LGBM_NetworkFree())

    return model if return_model else None

这是否等同于在训练集的1 / n子样本上训练lightgbm估计器的非分布式版本?我想念什么吗?我感觉好像缺少了一部分,要么将工人的独立模型合并为一个模型,要么将单个估算器更新为由单独的工人学习的单个树。

谢谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)