nnmf

Неотрицательная матричная факторизация

Синтаксис

[W,H] = nnmf(A,k)
[W,H] = nnmf(A,k,param1,val1,param2,val2,...)
[W,H,D] = nnmf(...)

Описание

[W,H] = nnmf(A,k) учитывает неотрицательный n-by-m матричный A в неотрицательные факторы W (n-by-k) и H K- m). Факторизация не точна; W*H приближение более низкого ранга к A. Факторы W и H выбраны, чтобы минимизировать корневой среднеквадратический остаточный D между A и W*H:

D = norm(A-W*H,'fro')/sqrt(N*M)

Факторизация использует итерационный метод начиная со случайных начальных значений для W и H. Поскольку корневой среднеквадратический остаточный D может иметь локальные минимумы, повторенные факторизации могут дать к различному W и H. Иногда алгоритм сходится к решению более низкого ранга, чем k, который может указать, что результат не оптимален.

W и H нормированы так, чтобы строки H имейте единичную длину. Столбцы W упорядочены путем уменьшения длины.

[W,H] = nnmf(A,k,param1,val1,param2,val2,...) задает дополнительное название параметра / пары значения из следующей таблицы.

ПараметрЗначение
'algorithm'

Любой 'als' (значение по умолчанию), чтобы использовать переменный алгоритм наименьших квадратов или 'mult' использовать мультипликативный алгоритм обновления.

В общем случае 'als' алгоритм сходится быстрее и более последовательно. 'mult' алгоритм более чувствителен к начальным значениям, который делает его хорошим выбором при использовании 'replicates' найти W и H от нескольких случайных начальных значений.

'w0'

n-by-k матрица, которая будет использоваться в качестве начального значения для W.

'h0'

k- m матрица, которая будет использоваться в качестве начального значения для H.

'options'

Структура опций, как создано statset функция. nnmf использует следующие поля структуры опций:

  • Display — Level of display. Выбор:

    • 'off' (значение по умолчанию) — Никакое отображение

    • 'final' — Отобразите конечный результат

    • 'iter' — Итеративное отображение промежуточных результатов

  • MaxIter — Максимальное количество итераций. Значением по умолчанию является 100. В отличие от этого, в настройках оптимизации, достигая MaxIter итерации обработаны как сходимость.

  • TolFun — Допуск завершения на изменении в размере невязки. Значением по умолчанию является 1e-4.

  • TolX — Допуск завершения на относительном изменении в элементах W и H. Значением по умолчанию является 1e-4.

  • UseParallel — Установите на true вычислить параллельно. Значением по умолчанию является false.

  • UseSubstreams — Установите на true вычислить параллельно восстанавливаемым способом. Значением по умолчанию является false. Чтобы вычислить восстанавливаемо, установите Streams к типу, позволяющему подпотоки: 'mlfg6331_64' или 'mrg32k3a'.

  • StreamsRandStream объектный массив или массив ячеек таких объектов. Если вы не задаете Streams, nnmf использует поток по умолчанию или потоки. Если вы принимаете решение задать Streams, используйте отдельный объект кроме случая

    • UseParallel true

    • UseSubstreams false

    В этом случае используйте массив ячеек тот же размер в качестве Параллельного пула.

Чтобы вычислить параллельно, вам нужен Parallel Computing Toolbox™.

'replicates'

Число раз, чтобы повторить факторизацию, с помощью новых случайных начальных значений в W и H, кроме при первой репликации, если 'w0' и 'h0' даны. Это является самым выгодным с 'mult' алгоритм. Значением по умолчанию является 1.

[W,H,D] = nnmf(...) также возвращает D, среднеквадратичная невязка.

Примеры

свернуть все

Загрузите выборочные данные.

load fisheriris

Вычислите неотрицательный ранг два приближения измерений этих четырех переменных в ирисовых данных Фишера.

rng(1) % For reproducibility
[W,H] = nnmf(meas,2);
H
H = 2×4

    0.6945    0.2856    0.6220    0.2218
    0.8020    0.5683    0.1834    0.0149

Первые и третьи переменные в meas (длина чашелистика и лепестковая длина, с коэффициентами 0.6945 и 0.6220, соответственно), предоставляют относительно сильные веса первому столбцу W . Первые и вторые переменные в meas (длина чашелистика и ширина чашелистика, с коэффициентами 0.8020 и 0.5683), предоставляют относительно сильные веса второму столбцу W .

Создайте biplot из данных и переменных в meas на пробеле столбца W .

biplot(H','scores',W,'varlabels',{'sl','sw','pl','pw'});
axis([0 1.1 0 1.1])
xlabel('Column 1')
ylabel('Column 2')

Запуск со случайного массива X с рангом 20, попробуйте несколько итераций в нескольких, реплицирует использование мультипликативного алгоритма:

X = rand(100,20)*rand(20,50);
opt = statset('MaxIter',5,'Display','final');
[W0,H0] = nnmf(X,5,'replicates',10,...
                   'options',opt,...
                   'algorithm','mult');
    rep	   iteration	   rms resid	  |delta x|
      1	       5	    0.560887	   0.0245182
      2	       5	     0.66418	   0.0364471
      3	       5	    0.609125	   0.0358355
      4	       5	    0.608894	   0.0415491
      5	       5	    0.619291	   0.0455135
      6	       5	    0.621549	   0.0299965
      7	       5	    0.640549	   0.0438758
      8	       5	    0.673015	   0.0366856
      9	       5	    0.606835	   0.0318931
     10	       5	    0.633526	   0.0319591
Final root mean square residual = 0.560887

Продолжите больше итераций от лучшего из этих результатов использование переменные наименьшие квадраты:

opt = statset('Maxiter',1000,'Display','final');
[W,H] = nnmf(X,5,'w0',W0,'h0',H0,...
                 'options',opt,...
                 'algorithm','als');
    rep	   iteration	   rms resid	  |delta x|
      1	      24	    0.257336	  0.00271859
Final root mean square residual = 0.257336

Ссылки

[1] Ягода, M. W. и др. “Алгоритмы и Приложения для Аппроксимированной Неотрицательной Матричной Факторизации”. Вычислительная Статистика и Анализ данных. Издание 52, № 1, 2007, стр 155–173.

Расширенные возможности

Смотрите также

| |

Введенный в R2008a