问题标签 [lightgbm]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - XGBoost/lightGBM 如何评估 ndcg 的排序任务?
我目前正在 XGBoost/lightGBM 之间进行测试,以了解它们对项目进行排名的能力。我正在复制此处提供的基准:https ://github.com/guolinke/boosting_tree_benchmarks 。
我已经能够成功地重现他们工作中提到的基准。我想确保我正确实施了我自己的 ndcg 指标版本,并且正确理解了排名问题。
我的问题是:
使用 ndcg 创建测试集的验证时 - 有一个 test.group 文件说前 X 行是第 0 组,等等。为了获得该组的建议,我得到预测值和已知相关性分数并对其进行排序按每组的预测值降序排列?
为了从上面创建的列表中获得最终的 ndcg 分数 - 我是否获得 ndcg 分数并取所有分数的平均值?这是否与评估阶段的 XGBoost/lightGBM 相同的评估方法?
这是我在模型完成训练后评估测试集的方法。
对于我运行时的最后一棵树,我lightGBM
在验证集上获得了这些值:
我的最后一步是获取测试集的预测输出并计算预测的 ndcg 值。
这是我用于计算 ndcg 的 python 代码:
在获得特定组(GROUP-0)的测试集的预测后,我有以下预测:
笔记
Group-0实际上有大约 112 行。
然后,我按降序对元组列表进行排序,从而提供相关分数列表:
最后,对于每个查询 id,我计算了相关列表上的 ndcg 分数,然后取为每个查询 id 计算的所有 ndcg 分数的平均值:
我得到的值是~0.497193
。
python - LightGBM 中的交叉验证
我们应该如何使用字典输出lightgbm.cv
来改进我们的预测?
这是一个示例 - 我们使用以下代码训练我们的 cv 模型:
我们如何使用从上述代码的最佳迭代中找到的参数来预测输出?在这种情况下,cv_mod
没有像 那样的“预测”方法lightgbm.train
,并且在 中使用时,来自的字典输出lightgbm.cv
会引发错误lightgbm.train.predict(..., pred_parameters = cv_mod)
。
我错过了一个重要的转型步骤吗?
python - lightgbm.sklearn.LGBMRegressor 未能适合简单的行
我对 LightGBM 很陌生,我正在尝试通过 LGBMRegressor 拟合简单的线条。
我做错了什么?也许我需要更多功能?
我的 LightGBM 版本是 2.0.7(来自 github 源),python 版本是 2.7.12
PS对不起我的英语不好
r - 在 R 中使用 tree_method = 'hist' 的 xgboost
根据 GBM 与 xgboost 与 LightGBM(https://www.kaggle.com/nschneider/gbm-vs-xgboost-vs-lightgbm)的基准测试,可以使用参数实现 xgboost
在 R。
但是这样做总是给我一个错误:
我错过了什么?
python-2.7 - 加载 lightgbm 模型并使用具有并行 for 循环冻结的预测 (Python)
我需要使用我的模型在 python 中批量和并行进行预测。如果我加载模型并在常规 for 循环中创建数据帧并使用 predict 函数,它可以正常工作。如果我在 python 中使用多处理并行创建不相交的数据帧,然后使用 predict 函数,for 循环将无限期冻结。为什么会出现这种行为?
这是我的代码片段:
这有效,但速度很慢:
这打破了:
如果有人可以帮助我,我将非常感激。
r - Lightgbm stoppong 在 10 棵树后 - R
我正在尝试在 R 中运行 lightGBM,并且算法很快停止(仅在 10 棵树之后)。
这就是我得到的:
我正在运行此代码:
我已经在参数中包含了我可以找到的迭代次数的每个替代方案,这就是为什么最后有这么多值为 500 的参数。
你知道它为什么这么早就停止了吗?
谢谢你,弗拉德
python-3.x - lightgbm 和 sklearn 之间的神秘交互
在我的系统上导入 lightgbm 会以某种方式干扰 sklearn 的性能:
结果是
这不是我所期望的。注释掉import lightgbm
第一行的 会产生预期的结果:
这是在 macOS 10.12.6 上,最近安装了 Anaconda3 发行版,后跟pip install lightgbm
. 我还卸载了 lightgbm 并从源代码构建它,但这似乎没有什么不同。我无法在 ubuntu 上复制它。
更新:我完全卸载了 anaconda 和 homebrew,然后只用 homebrew + pip 来管理一切。看起来错误消失了。但我仍然很好奇这是否适用于 Mac + anaconda 上的任何人,因为我更喜欢使用 anaconda。
machine-learning - LightGBM:Sklearn 和 Native API 等效
我正在通过培训 API http://lightgbm.readthedocs.io/en/latest/Python-API.html#training-api和 Scikit-learn API http://lightgbm.readthedocs.io/en/latest/试验 LightGBM Python-API.html#scikit-learn-api。
我无法在两个 API 之间做出清晰的映射,如下面的示例中突出显示的。基本思想是在 50% 的合成数据集上进行训练。
输出
问题
我在哪里可以找到两个 API 参数之间的明确等效性?
非常感谢。
machine-learning - 情感分析的最佳预处理技术是什么?
我正在尝试将评论数据集分为两类,即 A 类和 B 类。我LightGBM
用来分类。
我已经多次更改分类器的参数,但我无法在结果中获得巨大差异。
我认为问题在于预处理步骤。我定义了一个如下所示的函数来处理预处理。我使用Stemming
并删除了stopwords
. 我不知道我错过了什么。我已经尝试LancasterStemmer
过PorterStemmer
是否有更多的预处理步骤需要做以获得更好的精度。?
数据集的 URL:数据集
编辑 :
我使用的参数如下所述。
我和其他人一起改变了depth
和参数。num_leaves
但是准确度有点卡在一定水平..
lightgbm - 如何为我的自定义损失函数修改 lightgbm?
添加我自己的自定义损失函数时应该更改哪些文件?我知道我可以在 ObjectiveFunction 中添加我的目标和梯度/粗麻布计算,只是想知道是否还有其他需要做的事情,或者是否有其他替代方法可以用于自定义损失函数。