scikit-learn中DictionaryLearning和MiniBatchDictionaryLearning的区别

3

我正在尝试使用Python中的scikit-learn库编写有关字典学习(Dictionary Learning)的代码。但是我发现了两个函数,它们看起来很相似。

我想知道它们之间的区别是什么?

1个回答

4

DictionaryLearning 是一种全批量方法,在学习过程中整个数据集都存储在内存中。

MiniBatchDictionaryLearning 是一种小批量方法(每次迭代只需将 n=小批量大小的项目存储在内存中),支持 partial_fit(对小批量进行拟合),以便在不过度占用内存的情况下处理更大的实例。

虽然这些算法的基本思想相同,但它们针对的是不同的用例。

如果您的内存可以使用前者,请使用它。如果不能,请使用后者。

如果使用小批量变体,请记住,关于 partial_fit 仍存在一个未解决的错误。

这里可以找到有关大规模计算和特别是sklearn中的增量学习(其中提到了MiniBatchDictionaryLearning)的概述。它还提到了缺点:调整超参数minibatch-size。

1
我有一个有关于稀疏编码的问题。Scikit-learn中是否有任何集中式稀疏编码函数? - Sudip Das
1
我们通常从字典中找到一种稀疏编码来获得更好的信号,但是在集中式稀疏编码中,找到稀疏编码(通常称为alpha)的方法或公式是不同的。 - Sudip Das
1
模块decomposition中的方法应该是全部了。听起来您想要一个不同的损失函数,但也许您将不得不自己实现它。我认为sklearn在这方面严重依赖于sparse_coder,支持不同的算法,但我怀疑除了额外的权重,损失总是相同的。 - sascha
我的意思是:让我们能够重现你的问题。 - sascha
让我们在聊天中继续这个讨论 - Sudip Das
显示剩余6条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接