当前位置: 首页> 财经> 金融 > ngboost LinAlgError: Singular matrix报错解决方案

ngboost LinAlgError: Singular matrix报错解决方案

时间:2025/7/13 9:43:01来源:https://blog.csdn.net/fulk6667g78o8/article/details/142185208 浏览次数:0次

作者Toby,原文来源公众号:python风控模型,ngboost LinAlgError: Singular matrix报错解决方案

各位同学大家好,之前有学员咨询ngboost模型运行报错LinAlgError: Singular matrix。

图片

LinAlgError: Singular matrix概述

LinAlgError: Singular matrix 是一个错误信息,通常在使用 Python 的 NumPy 或 SciPy 库进行线性代数运算时出现。这个错误表明你尝试进行的运算涉及到了一个奇异矩阵(singular matrix),也就是说,这个矩阵是不可逆的。

奇异矩阵是指其行列式(determinant)为零的矩阵,这意味着它没有逆矩阵。在许多线性代数运算中,如果涉及到奇异矩阵,就会导致错误或无法计算结果。

以下是一些可能导致这个错误的常见情况:

  1. 矩阵求逆

    • 尝试求一个奇异矩阵的逆矩阵。

  2. 解线性方程组

    • 尝试解一个系数矩阵为奇异矩阵的线性方程组。

  3. 计算特征值

    • 尝试计算一个奇异矩阵的特征值。

  4. 计算伪逆

    • 使用 numpy.pinv 或 scipy.linalg.pinv 等函数计算奇异矩阵的伪逆。

  5. 矩阵分解

    • 尝试对奇异矩阵进行分解,如 QR 分解、Cholesky 分解等。

解决方案


 

如下代码,参数natural_gradient = False即可解决问题。如下图,ngboost完美训练模型,并得到预测结果。

ngb = NGBClassifier(n_estimators=500,natural_gradient = False)

图片

自然梯度natural_gradient

NGBoost 是一种新的提升算法,它使用自然梯度提升,一种用于概率预测的模块化提升算法。该算法由基学习器、参数概率分布和评分规则组成。

图片

图片

普通梯度可能非常不适合学习多参数概率分布(例如正态分布)。如上面的概率回归示例所示,使用自然梯度的训练动态往往更加稳定并产生更好的拟合。

自然梯度和传统指标方面的竞争表现

与竞争方法相比,NGBoost 所需的专业知识要少得多,并且在常见的基准测试中表现同样出色。NGBoost 在较小的数据集上具有特别强的性能。

图片

总结

总结,ngboost模型遇到 LinAlgError: Singular matrix报错时,尝试natural_gradient = False,关闭自然梯度功能。ngboost是2019年算法,也是集成树的最新算法。Toby老师在大量项目和实验中发现ngboost很多功能并不完善,整体接口支持不如xgboost,lightgbm,catboost完善。自然梯度是ngboost的最大特征,关闭了有点可惜,也期待ngboost的美国斯坦福团队继续改进和优化算法。

版权声明:文章来自公众号(python风控模型),未经许可,不得抄袭。遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。


 

关键字:ngboost LinAlgError: Singular matrix报错解决方案

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: