exponenta event banner

sparsefilt

Извлечение элементов с помощью разреженной фильтрации

Описание

Mdl = sparsefilt(X,q) возвращает объект модели разреженной фильтрации, содержащий результаты применения разреженной фильтрации к таблице или матрице данных предиктора X содержащий переменные p. q - количество элементов, извлекаемых из X, следовательно, sparsefilt изучает p-by-q матрица весов преобразования. Для недополненных или сверхполных представлений элементов: q может быть меньше или больше числа переменных предиктора соответственно.

  • Для получения доступа к усвоенным весам преобразования используйте Mdl.TransformWeights.

  • Преобразовать X в новый набор элементов с помощью усвоенного преобразования, передать Mdl и X кому transform.

пример

Mdl = sparsefilt(X,q,Name,Value) использует дополнительные параметры, указанные одним или несколькими Name,Value аргументы пары. Например, можно стандартизировать данные предиктора или применить регуляризацию L2.

Примеры

свернуть все

Создать SparseFiltering с помощью sparsefilt функция.

Загрузить SampleImagePatches исправления изображений.

data = load('SampleImagePatches');
size(data.X)
ans = 1×2

        5000         363

Существует 5000 исправлений изображений, каждый из которых содержит 363 элемента.

Извлеките из данных 100 элементов.

rng default % For reproducibility
Q = 100;
obj = sparsefilt(data.X,Q,'IterationLimit',100)
Warning: Solver LBFGS was not able to converge to a solution.
obj = 
  SparseFiltering
            ModelParameters: [1x1 struct]
              NumPredictors: 363
         NumLearnedFeatures: 100
                         Mu: []
                      Sigma: []
                    FitInfo: [1x1 struct]
           TransformWeights: [363x100 double]
    InitialTransformWeights: []


  Properties, Methods

sparsefilt выдает предупреждение, поскольку оно остановлено из-за достижения предела итерации вместо достижения предела размера шага или предела размера градиента. Вы по-прежнему можете использовать изученные функции в возвращенном объекте, вызвав transform функция.

Продолжить оптимизацию разреженного фильтра.

Загрузить SampleImagePatches исправления изображений.

data = load('SampleImagePatches');
size(data.X)
ans = 1×2

        5000         363

Существует 5000 исправлений изображений, каждый из которых содержит 363 элемента.

Извлеките 100 элементов из данных и используйте предел итерации 20.

rng default % For reproducibility
q = 100;
Mdl = sparsefilt(data.X,q,'IterationLimit',20);
Warning: Solver LBFGS was not able to converge to a solution.

Просмотр результирующей матрицы преобразования в виде фрагментов изображения.

wts = Mdl.TransformWeights;
W = reshape(wts,[11,11,3,q]);
[dx,dy,~,~] = size(W);
for f = 1:q
    Wvec = W(:,:,:,f);
    Wvec = Wvec(:);
    Wvec =(Wvec - min(Wvec))/(max(Wvec) - min(Wvec));
    W(:,:,:,f) = reshape(Wvec,dx,dy,3);
end
m   = ceil(sqrt(q));
n   = m;
img = zeros(m*dx,n*dy,3);
f   = 1;
for i = 1:m
    for j = 1:n
        if (f <= q)
            img((i-1)*dx+1:i*dx,(j-1)*dy+1:j*dy,:) = W(:,:,:,f);
            f = f+1;
        end
    end
end
imshow(img,'InitialMagnification',300);

Figure contains an axes. The axes contains an object of type image.

Патчи к изображениям выглядят шумными. Чтобы очистить шум, попробуйте другие итерации. Перезапустите оптимизацию с места ее остановки еще на 40 итераций.

Mdl = sparsefilt(data.X,q,'IterationLimit',40,'InitialTransformWeights',wts);
Warning: Solver LBFGS was not able to converge to a solution.

Просмотр обновленной матрицы преобразования в виде исправлений изображений.

wts = Mdl.TransformWeights;
W = reshape(wts,[11,11,3,q]);
[dx,dy,~,~] = size(W);
for f = 1:q
    Wvec = W(:,:,:,f);
    Wvec = Wvec(:);
    Wvec =(Wvec - min(Wvec))/(max(Wvec) - min(Wvec));
    W(:,:,:,f) = reshape(Wvec,dx,dy,3);
end
m   = ceil(sqrt(q));
n   = m;
img = zeros(m*dx,n*dy,3);
f   = 1;
for i = 1:m
    for j = 1:n
        if (f <= q)
            img((i-1)*dx+1:i*dx,(j-1)*dy+1:j*dy,:) = W(:,:,:,f);
            f = f+1;
        end
    end
end
imshow(img,'InitialMagnification',300);

Figure contains an axes. The axes contains an object of type image.

Эти изображения менее шумные.

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

свернуть все

Данные предиктора, заданные как n-за-p числовая матрица или таблица. Строки соответствуют отдельным наблюдениям, а столбцы соответствуют отдельным переменным предиктора. Если X является таблицей, то все ее переменные должны быть числовыми векторами.

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

Количество элементов, извлекаемых из данных предиктора, указанных как положительное целое число.

sparsefilt сохраняет p-by-q преобразование весовой матрицы в Mdl.TransformWeights. Поэтому установка очень больших значений для q может привести к увеличению потребления памяти и увеличению времени вычислений.

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

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

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

Пример: 'Standardize',true,'Lambda',1 стандартизирует данные предиктора и применяет штраф в размере 1 в матрицу весов преобразования.

Максимальное количество итераций, указанное как пара, разделенная запятыми, состоящая из 'IterationLimit' и положительное целое число.

Пример: 'IterationLimit',1e6

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

Уровень детализации для сходимости алгоритма мониторинга, указанный как пара, разделенная запятыми, состоящая из 'VerbosityLevel' и значение в этой таблице.

СтоимостьОписание
0sparsefilt не отображает информацию о сходимости в командной строке.
Положительное целое числоsparsefilt отображает информацию о сходимости в командной строке.

Сведения о сходимости

ЗаголовокЗначение
FUN VALUEЗначение целевой функции.
NORM GRADНорма градиента целевой функции.
NORM STEPНорма итеративного шага, означающая расстояние между предыдущей и текущей точками.
CURVOK означает, что слабое состояние Вулфа удовлетворено. Это условие представляет собой комбинацию достаточного уменьшения целевой функции и условия кривизны.
GAMMAВнутреннее произведение шага умножает разность градиентов, деленную на внутреннее произведение разности градиентов с самим собой. Разность градиентов - это градиент в текущей точке минус градиент в предыдущей точке. Предоставляет диагностическую информацию о кривизне целевой функции.
ALPHAМножитель направления шага, отличающийся от 1 когда алгоритм выполнил поиск строки.
ACCEPTYES означает, что алгоритм нашел приемлемый шаг.

Пример: 'VerbosityLevel',1

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

L2 значение коэффициента регуляризации для матрицы весов преобразования, определяемое как пара, разделенная запятыми, состоящая из 'Lambda' и положительный числовой скаляр. При указании 0, по умолчанию, тогда в целевой функции нет термина регуляризации.

Пример: 'Lambda',0.1

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

Флаг для стандартизации данных предиктора, указанный как пара, разделенная запятыми, состоящая из 'Standardize' и true (1) или false (0).

Если Standardize является true, то:

  • sparsefilt центрирует и масштабирует каждый столбец данных предиктора (X) по столбцу среднее и стандартное отклонение соответственно.

  • sparsefilt извлекает новые функции с помощью стандартизированной матрицы предиктора и сохраняет значение переменной предиктора и стандартные отклонения в свойствах Mu и Sigma из Mdl.

Пример: 'Standardize',true

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

Веса преобразования, инициализирующие оптимизацию, указанные как разделенная запятыми пара, состоящая из 'InitialTransformWeights' и p-by-q числовая матрица. p должно быть числом столбцов или переменных в X и q - значение q.

Совет

Можно продолжить оптимизацию ранее возвращенной матрицы весов преобразования, передав ее в качестве начального значения в другом вызове sparsefilt. Объект выходной модели Mdl сохраняет усвоенную матрицу весов преобразования в TransformWeights собственность.

Пример: 'InitialTransformWeights',Mdl.TransformWeights

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

Относительный допуск сходимости для градиентной нормы, определяемый как разделенная запятыми пара, состоящая из 'GradientTolerance' и положительный числовой скаляр. Этот градиент является градиентом целевой функции.

Пример: 'GradientTolerance',1e-4

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

Абсолютный допуск сходимости для размера шага, определяемый как разделенная запятыми пара, состоящая из 'StepTolerance' и положительный числовой скаляр.

Пример: 'StepTolerance',1e-4

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

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

свернуть все

Изученная модель разреженной фильтрации, возвращенная как SparseFiltering объект модели.

Доступ к свойствам Mdl, используйте точечную нотацию. Например:

  • Для доступа к усвоенным весам преобразования используйте Mdl.TransformWeights.

  • Для доступа к информационной структуре фитинга используйте Mdl.FitInfo.

Чтобы найти разреженные коэффициенты фильтрации для новых данных, используйте transform функция.

Алгоритмы

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

Дополнительные сведения см. в разделе Алгоритм разреженной фильтрации.

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