我正在尝试使用Python中的scikit-learn库编写有关字典学习(Dictionary Learning)的代码。但是我发现了两个函数,它们看起来很相似。
我想知道它们之间的区别是什么?
我正在尝试使用Python中的scikit-learn库编写有关字典学习(Dictionary Learning)的代码。但是我发现了两个函数,它们看起来很相似。
我想知道它们之间的区别是什么?
DictionaryLearning 是一种全批量方法,在学习过程中整个数据集都存储在内存中。
MiniBatchDictionaryLearning 是一种小批量方法(每次迭代只需将 n=小批量大小的项目存储在内存中),支持 partial_fit
(对小批量进行拟合),以便在不过度占用内存的情况下处理更大的实例。
虽然这些算法的基本思想相同,但它们针对的是不同的用例。
如果您的内存可以使用前者,请使用它。如果不能,请使用后者。
如果使用小批量变体,请记住,关于 partial_fit 仍存在一个未解决的错误。
在这里可以找到有关大规模计算和特别是sklearn中的增量学习(其中提到了MiniBatchDictionaryLearning)的概述。它还提到了缺点:调整超参数minibatch-size。