sparsefilt

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

Описание

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 функция.

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

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

        5000         363

Существует 5 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 функция.

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

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

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

        5000         363

Существует 5 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 имя аргумента и 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