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