我正在尝试重新计算字典学习的重建错误。
当根据这里的公式重新计算这个错误时,我得到的结果与sklearn输出的结果不同。
http://scikit-learn.org/stable/modules/generated/sklearn.decomposition.DictionaryLearning.html
根据我在sklearn的代码中所能理解的,这可能与transform_algorithm的选择有关,但我不明白具体是什么。
下面是一个说明问题的代码片段。
https://gist.github.com/nicofarr/d277fb0c350849e0c3333767b8a1fb2b
当将alpha设置为0时,我的误差计算是正确的,所以我假设我以正确的方式计算残差。所以问题出在误差的第二项上,它涉及阿尔法。
提前感谢
尼科法尔
Nico,根据您的代码,您使用与目标函数中相同的公式来计算误差,您可以最小化以找到最佳稀疏拟合,即"残差"+"alpha*惩罚"。添加惩罚是为了增强解决方案中的稀疏性,但不应用于计算误差。你正在寻找的误差是由残差给出的。你有没有检查过你的代码和sklearn中的最优参数(u和v)是相同的?