refit

Класс: FeatureSelectionNCARegression

Преобразуйте модель анализа соседних компонентов (NCA) для регрессии

Синтаксис

mdlrefit = refit(mdl,Name,Value)

Описание

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

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

расширить все

Модель анализа компонентов окрестностей или классификация, заданная как FeatureSelectionNCARegression объект.

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

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

Опции подбора кривой

расширить все

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

  • 'exact' - Выполняет подбор кривой, используя все данные.

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

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

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

расширить все

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

Примеры

расширить все

Загрузите выборочные данные.

load('robotarm.mat')

The robotarm (pumadyn32nm) набор данных создается с помощью симулятора руки робота с 7168 обучающими и 1024 тестовыми наблюдениями с 32 функциями [1], [2]. Это предварительно обработанная версия исходного набора данных. Данные предварительно обрабатываются путем вычитания линейной регрессионной подгонки с последующей нормализацией всех функций к единичному отклонению.

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

nca = fsrnca(Xtrain,ytrain,'FitMethod','none','Standardize',1);
L = loss(nca,Xtest,ytest)
L = 0.9017

Теперь обновите модель и вычислите потерю предсказания с выбором признаков с λ = 0 (без термина регуляризации) и сравните с предыдущим значением потерь, чтобы определить, что выбор признаков необходим для этой задачи. Для настроек, которые вы не меняете, refit использует настройки начальной модели nca. Для примера он использует веса функции, найденные в nca в качестве начальных весов функций.

nca2 = refit(nca,'FitMethod','exact','Lambda',0);
L2 = loss(nca2,Xtest,ytest)
L2 = 0.1088

Уменьшение потерь предполагает необходимость выбора признаков.

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

figure()
plot(nca2.FeatureWeights,'ro')

Figure contains an axes. The axes contains an object of type line.

Настройка параметра регуляризации обычно улучшает результаты. Предположим, что, после настройки λ использование перекрестной валидации как в параметре настройки регуляризации в NCA для регрессии, лучшее λ Найдено значение 0.0035. Перестройте nca модель, использующая эту λ значение и стохастический градиентный спуск в качестве решателя. Вычислите потери предсказания.

nca3 = refit(nca2,'FitMethod','exact','Lambda',0.0035,...
          'Solver','sgd');
L3 = loss(nca3,Xtest,ytest)
L3 = 0.0573

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

figure()
plot(nca3.FeatureWeights,'ro')

Figure contains an axes. The axes contains an object of type line.

После настройки параметра регуляризации потеря уменьшилась еще больше, и программное обеспечение определило четыре функции как соответствующие.

Ссылки

[1] Rasmussen, C. E., R. M. Neal, G. E. Hinton, D. van Campand, M. Revow, Z. Ghahramani, R. Kustra, R. Tibshirani. Руководство DELVE, 1996, http://mlg.eng.cam.ac.uk/pub/pdf/RasNeaHinetal96.pdf

[2] https://www.cs.toronto.edu/~delve/data/datasets.html

Введенный в R2016b