Класс: 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'
- Начальная скорость обучения для решателя sgd
mdl.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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.