ngboost LinAlgError: Singular matrix报错解决方案-完美解决

作者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版权协议,转载请附上原文出处链接及本声明。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值