Класс: FeatureSelectionNCARegression
Преобразуйте модель анализа соседних компонентов (NCA) для регрессии
mdlrefit = refit(mdl,Name,Value)
обновляет модель mdlrefit = refit(mdl,Name,Value)mdl, с измененными параметрами, заданными одним или несколькими Name,Value аргументы в виде пар.
mdl - Модель анализа компонентов соседства для регрессииFeatureSelectionNCARegression объектМодель анализа компонентов окрестностей или классификация, заданная как FeatureSelectionNCARegression объект.
Задайте необязательные разделенные разделенными запятой парами Name,Value аргументы. Name - имя аргумента и Value - соответствующее значение. Name должны находиться внутри кавычек. Можно задать несколько аргументов в виде пар имен и значений в любом порядке Name1,Value1,...,NameN,ValueN.
'FitMethod' - Метод подбора кривой моделиmdl.FitMethod (по умолчанию) | 'exact' | 'none' | 'average'Метод для подбора кривой модели, заданный как разделенная запятыми пара, состоящая из 'FitMethod' и одно из следующих.
'exact' - Выполняет подбор кривой, используя все данные.
'none' - Никакого подбора кривой. Используйте эту опцию, чтобы вычислить ошибку обобщения модели NCA с помощью начальных весов функций, предоставленных в вызове fsrnca.
'average' - Функция разделяет данные на разделы (подмножества), подходит для каждого раздела с помощью exact метод и возвращает среднее значение весов функций. Вы можете задать количество разделов, используя NumPartitions аргумент пары "имя-значение".
Пример: 'FitMethod','none'
'Lambda' - Параметр регуляризацииmdl.Lambda (по умолчанию) | неотрицательное скалярное значениеПараметр регуляризации, заданный как разделенная разделенными запятой парами, состоящая из 'Lambda' и неотрицательное скалярное значение.
Для n наблюдений лучшая Lambda значение, которое минимизирует ошибку обобщения модели NCA, как ожидается, будет кратным 1/ n
Пример: 'Lambda',0.01
Типы данных: double | single
'Solver' - Тип решателяmdl.Solver (по умолчанию) | 'lbfgs' | 'sgd' | 'minibatch-lbfgs'Тип решателя для оценки весов функций, заданный как разделенная разделенными запятой парами, состоящая из 'Solver' и одно из следующих.
'lbfgs' - Алгоритм BFGS с ограниченной памятью (алгоритм Broyden-Fletcher-Goldfarb-Shanno) (алгоритм LBFGS)
'sgd' - Стохастический градиентный спуск
'minibatch-lbfgs' - Стохастический градиентный спуск с алгоритмом LBFGS, применяемым к мини-пакетам
Пример: 'solver','minibatch-lbfgs'
'InitialFeatureWeights' - Начальные веса функцийmdl.InitialFeatureWeights (по умолчанию) | p вектор -by-1 действительных положительных скалярных значенийНачальные веса функций, заданные как разделенная разделенными запятой парами, состоящая из 'InitialFeatureWeights' и вектор p -by-1 действительных положительных скалярных значений.
Типы данных: double | single
'Verbose' - Индикатор уровня подробностейmdl.Verbose (по умолчанию) | 0 | 1 | >Индикатор уровня подробностей для итогового отображения сходимости, заданный как разделенная разделенными запятой парами, состоящая из 'Verbose' и одно из следующих.
0 - Нет сводных данных сходимости
1 - сводные данные сходимости, включающая число итерации, норму градиента и значение целевой функции.
> 1 - Больше информации о сходимости в зависимости от алгоритма аппроксимации
При использовании 'minibatch-lbfgs' решателя и уровень подробностей > 1, информация о сходимости включает в себя журнал итерации от промежуточных подгонок LBFGS для минибатов.
Пример: 'Verbose',2
Типы данных: double | single
'GradientTolerance' - Относительный допуск сходимостиmdl.GradientTolerance (по умолчанию) | положительное действительное скалярное значениеОтносительный допуск сходимости по норме градиента для lbfgs решателя, заданная как разделенная разделенными запятой парами, состоящая из 'GradientTolerance' и положительное действительное скалярное значение.
Пример: 'GradientTolerance',0.00001
Типы данных: double | single
'InitialLearningRate' - Начальная скорость обучения для решателя sgdmdl.InitialLearningRate (по умолчанию) | положительное действительное скалярное значениеНачальная скорость обучения для sgd решателя, заданная как разделенная разделенными запятой парами, состоящая из 'InitialLearningRate' и положительная скалярная величина значение.
При использовании типа решателя 'sgd', скорость обучения затухает над итерациями, начиная со значения, заданного для 'InitialLearningRate'.
Пример: 'InitialLearningRate',0.8
Типы данных: double | single
'PassLimit' - Максимальное количество проходов для решателя 'sgd'mdl.PassLimit (по умолчанию) | положительное целое значение Максимальное количество проходов для решателя 'sgd' (стохастический градиентный спуск), заданный как разделенная разделенными запятой парами, состоящая из 'PassLimit' и положительное целое число. Каждый проходной процесс size(mdl.X,1) наблюдения.
Пример: 'PassLimit',10
Типы данных: double | single
'IterationLimit' - Максимальное количество итерацийmdl.IterationLimit (по умолчанию) | положительное целое значениеМаксимальное количество итераций, заданное как разделенная разделенными запятой парами, состоящая из 'IterationLimit' и положительное целое число.
Пример: 'IterationLimit',250
Типы данных: double | single
mdlrefit - Модель анализа компонентов соседства для регрессииFeatureSelectionNCARegression объектМодель анализа компонентов по соседству или классификация, возвращенная как 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')
Настройка параметра регуляризации обычно улучшает результаты. Предположим, что, после настройки использование перекрестной валидации как в параметре настройки регуляризации в 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')
После настройки параметра регуляризации потеря уменьшилась еще больше, и программное обеспечение определило четыре функции как соответствующие.
Ссылки
[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
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.