exponenta event banner

ремонт

Класс: Элемент Выбор NCAClassification

Модель анализа соседства (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 (Broyden-Fletcher-Goldfarb-Shanno) (алгоритм 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),:);

Вычислите ошибку неправильной классификации без выбора элемента.

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

    0.5165

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

На этот раз выполните выбор элемента с помощью анализа компонента окрестности для классификации, с.$\lambda = 1/n$

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')

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

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 определяет соответствующие две функции.

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