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 image закрашенных фигур.

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 image закрашенных фигур.

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 -by 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' и a 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