exponenta event banner

nnmf

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

Описание

пример

[W,H] = nnmf(A,k) множит матрицу n-by-m A в неотрицательные факторы W (n-by-k) и H (k-по-м). Факторизация не точна; 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] = nnmf(A,k,Name,Value) изменяет факторизацию, используя один или несколько аргументов пары имя-значение. Например, можно запросить повторные факторизации путем установки 'Replicates' целочисленное значение больше 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')

Figure contains an axes. The axes contains 163 objects of type line, text.

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

rng default % For reproducibility
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

Входные аргументы

свернуть все

Матрица для факторизации, заданная как вещественная матрица.

Пример: rand(20,30)

Типы данных: single | double

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

Пример: 3

Типы данных: single | double

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: [W,H] = nnmf(A,k,'Algorithm','mult','Replicates',10) выбирает мультипликативный алгоритм обновления и десять репликаций для улучшения результата

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

'als' алгоритм обычно более стабилен и сходится в меньшем количестве итераций. Каждая итерация занимает больше времени. Поэтому максимум по умолчанию - 50, что обычно дает удовлетворительные результаты при внутреннем тестировании.

'mult' алгоритм обычно имеет более быстрые итерации и требует их большего количества. Максимальное значение по умолчанию - 100. Этот алгоритм имеет тенденцию быть более чувствительным к начальным значениям и, следовательно, кажется, больше выигрывают от выполнения нескольких репликаций.

Пример: 'Algorithm','mult'

Типы данных: char | string

Начальное значение W, указанная как пара, разделенная запятыми, состоящая из 'W0' и n-by-k матрица, где n - число строк A, и k является вторым входным аргументом nnmf.

Типы данных: single | double

Начальное значение H, указанная как пара, разделенная запятыми, состоящая из 'H0' и k-по-m матрице, где k является вторым входным аргументом nnmf, и m - количество столбцов A.

Типы данных: single | double

Параметры алгоритма, указанные как разделенная запятыми пара, состоящая из 'Options' и структура, возвращенная statset функция. nnmf использует следующие поля структуры опций.

ОбластьОписаниеЦенности
DisplayУровень итеративного отображения
  • 'off' (по умолчанию) - Нет дисплея

  • 'final' - Отображение конечного результата

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

MaxIterМаксимальное количество итерацийПоложительное целое число. Значение по умолчанию: 50 для 'als' алгоритм и 100 для 'mult' алгоритм. В отличие от параметров оптимизации, достижение MaxIter итерации рассматриваются как сходимость.
TolFunДопуск окончания на изменение размера остаткаНеотрицательное значение. Значение по умолчанию: 1e-4.
TolXДопуск окончания на относительное изменение элементов W и HНеотрицательное значение. Значение по умолчанию: 1e-4.
UseParallelИндикация для параллельного вычисленияЛогическое значение. Дефолт false указывает на отсутствие параллельного вычисления, и true указывает на параллельное вычисление. Для параллельных вычислений требуется лицензия Parallel Computing Toolbox™.
UseSubstreamsТип воспроизводимости при параллельных вычислениях
  • false (по умолчанию) - Не выполнять воспроизводимые вычисления

  • 'mlfg6331_64'

  • 'mrg32k3a'

Дополнительные сведения см. в разделе Воспроизводимость в параллельных статистических вычислениях.

StreamsA RandStream объект или массив ячеек таких объектов
  • Если не указать Streams, nnmf использует поток или потоки по умолчанию.

  • Если UseParallel является true и UseSubstreams является false, укажите массив ячеек RandStream объекты того же размера, что и пул Parallel. В противном случае укажите один RandStream объект.

Пример: 'Options',statset('Display','iter','MaxIter',50)

Типы данных: struct

Число повторений факторизации, указанное как разделенная запятыми пара, состоящая из 'Replicates' и положительное целое число. Алгоритм выбирает новые случайные начальные значения для W и H при каждой репликации, за исключением первой репликации, если указано 'W0' и 'H0'. Если указано значение больше, чем 1, вы можете получить лучшие результаты, установив Algorithm кому 'mult'. См. раздел Изменение алгоритма.

Пример: 10

Типы данных: single | double

Выходные аргументы

свернуть все

Неотрицательный левый фактор A, возвращенный как n-by-k матрица. n - количество строк A, и k является вторым входным аргументом nnmf.

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

Неотрицательный правый фактор A, возвращено как k- по m-матрице. k является вторым входным аргументом nnmf, и m - количество столбцов A.

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

Среднеквадратичный остаток, возвращаемый как неотрицательный скаляр.

D = norm(A - W*H,'fro')/sqrt(n*m)

Ссылки

[1] Берри, Майкл У., Мюррей Браун, Эми Н. Лэнгвилл, В. Пол Паука и Роберт Дж. Племмонс. «Алгоритмы и приложения для аппроксимационной факторизации неотрицательных матриц». Расчетная статистика и анализ данных 52, № 1 (сентябрь 2007 года): 155-73. https://doi.org/10.1016/j.csda.2006.11.006.

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

Представлен в R2008a