Python sklearn词典学习中的错误计算

Python sklearn词典学习中的错误计算,python,dictionary,scikit-learn,Python,Dictionary,Scikit Learn,我试图重新计算字典学习的重建错误 当根据这里的公式重新计算这个错误时,我得到的结果与sklearn输出的结果不同 从我在sklearn的代码中所了解的情况来看,这可能与transform_算法的选择有关,但我不清楚到底是什么 下面是一段代码片段,说明了这个问题 当将alpha设置为0时,我的错误计算是正确的,因此我假设我以正确的方式计算残差。所以问题在于误差的第二项,它涉及α 提前谢谢 NicofarrNico,根据您的代码,您使用与目标函数中相同的公式计算误差,以找到最佳稀疏拟合,即“残差

我试图重新计算字典学习的重建错误

当根据这里的公式重新计算这个错误时,我得到的结果与sklearn输出的结果不同

从我在sklearn的代码中所了解的情况来看,这可能与transform_算法的选择有关,但我不清楚到底是什么

下面是一段代码片段,说明了这个问题

当将alpha设置为0时,我的错误计算是正确的,因此我假设我以正确的方式计算残差。所以问题在于误差的第二项,它涉及α

提前谢谢


Nicofarr

Nico,根据您的代码,您使用与目标函数中相同的公式计算误差,以找到最佳稀疏拟合,即“残差”+“α*惩罚”。增加惩罚是为了强制解决方案中的稀疏性,但不应将其用于计算误差。您要查找的错误由残差给出。您是否检查过代码和sklearn中的最佳参数(u和v)是否相同?

Nico,根据您的代码,您使用与目标函数相同的公式计算误差,以找到最佳稀疏拟合,即“残差”+“α*惩罚”。增加惩罚是为了强制解决方案中的稀疏性,但不应将其用于计算误差。您要查找的错误由残差给出。您是否检查过代码和sklearn中的最佳参数(u和v)是否相同?

gist中的示例很小(一个观察作为输入),但足以说明问题。随着观察次数的增加,差异似乎越来越大。gist上的示例很小(一个观察作为输入),但足以说明问题。随着观察次数的增加,差异似乎越来越大。谢谢Yury。实际上,sklearn给出的错误包括惩罚;请参见此处:。我从他们的上一次迭代中获取错误。这可能很愚蠢,但他们似乎在代码中按1/n_分量缩放alpha。如果在代码中用alpha/n_comp替换alpha,它会匹配吗?谢谢你。实际上,sklearn给出的错误包括惩罚;请参见此处:。我从他们的上一次迭代中获取错误。这可能很愚蠢,但他们似乎在代码中按1/n_分量缩放alpha。如果在代码中用alpha/n_comp替换alpha,它是否匹配?