Класс: Элемент Выбор NCARexression
Модель анализа соседства (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') 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] Расмуссен, К. Э., Р. М. Нил, Г. Э. Хинтон, Д. ван Кампанд, М. Ревоу, З. Гахрамани, Р. Кюста, Р. Тибширани. Руководство DELVE, 1996, http://mlg.eng.cam.ac.uk/pub/pdf/RasNeaHinetal96.pdf
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.