Исключение "линейная зависимость в словаре" в склеарне OMP
Я использую sklearns OrthogonalMatchingPursuit, чтобы получить разреженное кодирование сигнала, используя словарь, полученный по алгоритму KSVD. Тем не менее, во время подгонки я получаю следующее RuntimeWarning:
/usr/local/lib/python2.7/dist-packages/sklearn/linear_model/omp.py:391: RuntimeWarning: Orthogonal matching pursuit ended prematurely due to linear
dependence in the dictionary. The requested precision might not have been met.
copy_X=copy_X, return_path=return_path)
В этих случаях результаты действительно не являются удовлетворительными. Я не понимаю смысл этого предупреждения, так как в разреженном кодировании обычно иметь переполненный словарь и, следовательно, линейную зависимость внутри него. Это не должно быть проблемой для OMP. Фактически, предупреждение также появляется, если словарь представляет собой квадратную матрицу.
Может ли это предупреждение также указывать на другие проблемы в приложении?
1 ответ
Проблема была в векторе данных y
в
omp = OrthogonalMatchingPursuit(n_nonzero_coefs=target_sparsity)
omp.fit(D, y)
Это содержало числа с очень маленькой величиной. Когда я нормализую y
так же как D
Подгонка работает с ожидаемой точностью.