sparsefilt

Выделение признаков при помощи разреженной фильтрации

Синтаксис

Mdl = sparsefilt(X,q)
Mdl = sparsefilt(X,q,Name,Value)

Описание

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

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

  • Чтобы преобразовать X к новому набору функций при помощи изученного преобразования, передайте Mdl и X к transform.

пример

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

Примеры

свернуть все

Создайте объект SparseFiltering при помощи функции sparsefilt.

Загрузите закрашенные фигуры caltech101 изображений.

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

      100000         363

Существует 100 000 закрашенных фигур изображений, каждый содержащий 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.

Продолжите оптимизировать разреженный фильтр.

Загрузите закрашенные фигуры caltech101 изображений.

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

      100000         363

Существует 100 000 закрашенных фигур изображений, каждый содержащий 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);

Закрашенные фигуры изображений кажутся шумными. Чтобы очистить шум, попробуйте больше итераций. Перезапустите оптимизацию от того, где она остановилась еще для 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);

Эти изображения являются намного менее шумными.

Входные параметры

свернуть все

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

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

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

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

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

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

Укажите необязательные аргументы в виде пар ""имя, значение"", разделенных запятыми. Имя (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

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

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

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

Отметьте, чтобы стандартизировать данные о предикторе, заданные как пара, разделенная запятой, состоящая из 'Standardize' и true (1) или false (0).

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

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

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

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

Типы данных: логический

Веса преобразования, которые инициализируют оптимизацию, заданную как пара, разделенная запятой, состоящая из '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