为什么 LightGBM 的性能不如 SVC(线性内核)?【情绪分析】

数据挖掘 机器学习 支持向量机 xgboost
2022-02-26 11:49:08

我已经阅读并听说过强大的 XGBoost,它是当今人们用来解决 Kaggle 挑战的最著名的模型之一。这让我有兴趣发展自己对模型的直觉,所以我决定在我的数据集上尝试 XGBoost,但不幸的是,当我尝试在 mac 上安装 XGBoost 时遇到了很多与依赖相关的问题:(

然而,我做了更多的研究,发现了另一个相关的库,来自微软的 LightGBM,他们声称它比 XGBoost 取得了更好的结果(或者至少是等效的)。因此,我决定改用 LightGBM,因为我在库安装过程中没有遇到任何问题。

我预计该模型的性能应该优于,或者至少与同一数据集上的其他模型相比表现相似。我的数据集包含 14k 个文本文档,并且有 0 或 1 个值,分别将正面和负面情绪作为目标变量。

结果如下图所示,以计数向量器为输入的 LightGBM 以 94.60% 的准确率获得了第 6 位。我很好奇,因为 LightGBM 的准确率不仅低于 SVC,而且低于 Extra Tree 模型(300 个估算器)。

我对这些模型没有足够的基础和扎实的理解,所以我无法对这些结果提出答案。有人可以根据结果给我一个想法或假设吗?

PS。所有模型均经过 5 折交叉验证

model             score
--------------  -------
extraT           0.9528
svc              0.9514
sgd_elas         0.9481
extraT_tfidf     0.9476
svc_tfidf        0.9473
lightGBM         0.9460
sgd_elas_tfidf   0.9458
lightGBM_tfidf   0.9420
randomF          0.9409
randomF_tfidf    0.9345
mulNB            0.9307
berNB            0.9087
berNB_tfidf      0.9087
mulNB_tfidf      0.9036
1个回答

Xgboost 通常会提供更高的准确度(这只是一个观察结果,而不是事实)。但是 xgboost 的诀窍是人们不知道如何最好地使用它。使用 xgboost 最常见的错误是没有让它训练足够。Xgboost 是一种比其他算法具有更多过拟合的算法(过拟合不是正确的术语,应该是 xgboost 比其他算法具有高方差)。在找到合适的学习率(0.01 或 0.1 或 0.3 等)的收敛 nrounds 之前,不要调整其他参数。如果您发现交叉验证准确度远低于训练准确度,则首先调整 gamma(二阶导数),然后再调整其他参数。如果交叉 val 和训练精度有显着但不是很大的差异(假设训练 acc 从 90 变为 99,并且交叉验证在显着迭代后停留在 85)然后尝试减少树的最大深度。如果交叉 val 和训练精度并排运行,那么只需让算法收敛于特定的 eta,然后调整其他参数(除了 gamma 之外的所有参数)。