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-by-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-by-m матрица, которая будет использоваться в качестве начального значения для H.

'options'

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

  • Отображение Уровень отображения. Выбор:

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

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

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

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

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

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

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

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

  • Объектный массив Streams — A RandStream или массив ячеек таких объектов. Если вы не задаете 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