refit

Класс: FeatureSelectionNCAClassification

Переоборудуйте модель анализа компонента окружения (NCA) для классификации

Синтаксис

mdlrefit = refit(mdl,Name,Value)

Описание

mdlrefit = refit(mdl,Name,Value) переоборудует модель mdl, модифицированными параметрами, заданными одним или несколькими Name,Value парные аргументы.

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

развернуть все

Аналитическая модель компонента окружения или классификация, заданная как FeatureSelectionNCAClassification объект.

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

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

Подбор кривой опциям

развернуть все

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

  • 'exact' — Выполняет подбор кривой с помощью всех данных.

  • 'none' — Никакой подбор кривой. Используйте эту опцию, чтобы оценить ошибку обобщения модели NCA с помощью начальных весов функции, предоставленных в вызове fscnca.

  • 'average' — Функция делит данные на разделы (подмножества), соответствует каждому разделу с помощью exact метод, и возвращает среднее значение весов функции. Можно задать количество разделов с помощью NumPartitions аргумент пары "имя-значение".

Пример: 'FitMethod','none'

Параметр регуляризации, заданный как разделенная запятой пара, состоящая из 'Lambda' и неотрицательное скалярное значение.

Для наблюдений n, лучшего Lambda значение, которое минимизирует ошибку обобщения модели NCA, как ожидают, будет кратным 1/n

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

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

Тип решателя для оценки весов функции, заданных как разделенная запятой пара, состоящая из 'Solver' и одно из следующих.

  • 'lbfgs' — Ограниченная память BFGS (Бройден Флетчер Голдфарб Шэнно) алгоритм (алгоритм LBFGS)

  • 'sgd' — Стохастический градиентный спуск

  • 'minibatch-lbfgs' — Стохастический градиентный спуск с алгоритмом LBFGS применился к мини-пакетам

Пример: 'solver','minibatch-lbfgs'

Начальные веса функции, заданные как разделенная запятой пара, состоящая из 'InitialFeatureWeights' и p-by-1 вектор действительных значений положительной скалярной величины.

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

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

  • 0 — Никакие сводные данные сходимости

  • 1 — сводные данные Сходимости включая номер итерации, норму градиента и значение целевой функции.

  • > 1 — Больше информации о сходимости в зависимости от алгоритма подбора

    При использовании решателя 'minibatch-lbfgs' и уровень многословия> 1, информация о сходимости включает журнал итерации от промежуточных мини-пакетных подгонок LBFGS.

Пример: 'Verbose',2

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

LBFGS или мини-пакетные опции LBFGS

развернуть все

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

Пример: 'GradientTolerance',0.00001

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

SGD или мини-пакетные опции LBFGS

развернуть все

Начальный темп обучения для решателя sgd, заданный как разделенная запятой пара, состоящая из 'InitialLearningRate' и значение положительной скалярной величины.

При использовании решателя вводят 'sgd', темп обучения затухает по итерациям начиная со значения, заданного для 'InitialLearningRate'.

Пример: 'InitialLearningRate',0.8

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

Максимальное количество передач для решателя 'sgd' (стохастический градиентный спуск), заданный как разделенная запятой пара, состоящая из 'PassLimit' и положительное целое число. Каждая передача процессы size(mdl.X,1) наблюдения.

Пример: 'PassLimit',10

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

SGD или LBFGS или мини-пакетные опции LBFGS

развернуть все

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

Пример: 'IterationLimit',250

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

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

развернуть все

Аналитическая модель компонента окружения для классификации, возвращенной как FeatureSelectionNCAClassification объект. Можно или сохранить результаты как новую модель или обновить существующую модель как mdl = refit(mdl,Name,Value).

Примеры

развернуть все

Сгенерируйте данные о шахматной доске с помощью generateCheckerBoardData.m функция.

rng(2016,'twister'); % For reproducibility
pps = 1375;
[X,y] = generateCheckerBoardData(pps);
X = X + 2;

Отобразите данные на графике.

figure
plot(X(y==1,1),X(y==1,2),'rx')
hold on
plot(X(y==-1,1),X(y==-1,2),'bx')

[n,p] = size(X)
n =

       22000


p =

     2

Добавьте несоответствующие предикторы в данные.

Q = 98;
Xrnd = unifrnd(0,4,n,Q);
Xobs = [X,Xrnd];

Эта часть кода создает 98 дополнительных предикторов, все равномерно распределенные между 0 и 4.

Разделите данные в наборы обучающих данных и наборы тестов. Создать расслоенные разделы, так, чтобы каждый раздел имел подобную пропорцию классов, y использования вместо length(y) как критерии разделения.

cvp = cvpartition(y,'holdout',2000);

cvpartition случайным образом выбирает 2000 наблюдений, чтобы добавить к набору тестов и остальной части данных, чтобы добавить к набору обучающих данных. Создайте наборы обучения и валидации с помощью присвоений, сохраненных в cvpartition объект cvp .

Xtrain = Xobs(cvp.training(1),:);
ytrain = y(cvp.training(1),:);

Xval = Xobs(cvp.test(1),:);
yval = y(cvp.test(1),:);

Вычислите misclassification ошибку без выбора признаков.

nca = fscnca(Xtrain,ytrain,'FitMethod','none','Standardize',true, ...
    'Solver','lbfgs');
loss_nofs = loss(nca,Xval,yval)
loss_nofs =

    0.5165

'FitMethod','none' опция использует веса по умолчанию (вся 1 с), что означает, что все функции одинаково важны.

На этот раз выполните выбор признаков с помощью анализа компонента окружения в классификации, с.

w0 = rand(100,1);
n = length(ytrain)
lambda = 1/n;
nca = refit(nca,'InitialFeatureWeights',w0,'FitMethod','exact', ...
       'Lambda',lambda,'solver','sgd');
n =

       20000

Постройте значение целевой функции по сравнению с номером итерации.

figure()
plot(nca.FitInfo.Iteration,nca.FitInfo.Objective,'ro')
hold on
plot(nca.FitInfo.Iteration,movmean(nca.FitInfo.Objective,10),'k.-')
xlabel('Iteration number')
ylabel('Objective value')

Вычислите misclassification ошибку с выбором признаков.

loss_withfs = loss(nca,Xval,yval)
loss_withfs =

    0.0115

Постройте выбранные функции.

figure
semilogx(nca.FeatureWeights,'ro')
xlabel('Feature index')
ylabel('Feature weight')
grid on

Выберите функции с помощью весов функции и относительного порога.

tol = 0.15;
selidx = find(nca.FeatureWeights > tol*max(1,max(nca.FeatureWeights)))
selidx =

     1
     2

Выбор признаков улучшает результаты и fscnca обнаруживает правильные две функции как релевантные.

Смотрите также

| | |

Введенный в R2017b