Потеря для регрессионной нейронной сети
возвращает потерю регрессии для обученной регрессионной нейронной сети L = loss(Mdl,Tbl,ResponseVarName)Mdl использование данных предиктора в таблице Tbl и значения ответа в ResponseVarName табличная переменная.
L возвращается в виде скалярного значения, которое по умолчанию представляет среднеквадратичную ошибку (MSE).
указывает параметры, использующие один или несколько аргументов «имя-значение» в дополнение к любой из комбинаций входных аргументов в предыдущих синтаксисах. Например, можно указать, что столбцы в данных предиктора соответствуют наблюдениям, указать функцию потерь или предоставить веса наблюдений.L = loss(___,Name,Value)
Рассчитайте среднюю квадратичную ошибку (MSE) тестового набора модели регрессионной нейронной сети.
Загрузить patients набор данных. Создайте таблицу из набора данных. Каждая строка соответствует одному пациенту, и каждый столбец соответствует диагностической переменной. Используйте Systolic переменная в качестве ответной переменной, а остальные переменные в качестве предикторов.
load patients
tbl = table(Age,Diastolic,Gender,Height,Smoker,Weight,Systolic);Разделение данных на набор обучения tblTrain и набор тестов tblTest с помощью нестратифицированного раздела удержания. Программное обеспечение резервирует приблизительно 30% наблюдений для набора тестовых данных и использует остальные наблюдения для набора обучающих данных.
rng("default") % For reproducibility of the partition c = cvpartition(size(tbl,1),"Holdout",0.30); trainingIndices = training(c); testIndices = test(c); tblTrain = tbl(trainingIndices,:); tblTest = tbl(testIndices,:);
Обучение модели регрессионной нейронной сети с использованием обучающего набора. Укажите Systolic столбец tblTrain в качестве переменной ответа. Укажите, чтобы стандартизировать числовые предикторы.
Mdl = fitrnet(tblTrain,"Systolic", ... "Standardize",true);
Рассчитайте тестовый набор MSE. Меньшие значения MSE указывают на лучшую производительность.
testMSE = loss(Mdl,tblTest,"Systolic")testMSE = 49.9595
Выбор функций выполняется путем сравнения потерь и прогнозов тестового набора. Сравните метрики тестового набора для модели регрессионной нейронной сети, обученной с использованием всех предикторов, с метриками тестового набора для модели, обученной с использованием только подмножества предикторов.
Загрузить образец файла fisheriris.csv, которая содержит данные по радужке, включая длину чашелистика, ширину чашелистика, длину лепестка, ширину лепестка и видовой тип. Прочтите файл в таблицу.
fishertable = readtable('fisheriris.csv');Разделение данных на набор обучения trainTbl и набор тестов testTbl с помощью нестратифицированного раздела удержания. Программное обеспечение резервирует приблизительно 30% наблюдений для набора тестовых данных и использует остальные наблюдения для набора обучающих данных.
rng("default") c = cvpartition(size(fishertable,1),"Holdout",0.3); trainTbl = fishertable(training(c),:); testTbl = fishertable(test(c),:);
Обучить одну модель регрессионной нейронной сети, используя все предикторы в обучающем наборе, и обучить другой классификатор, используя все предикторы, кроме PetalWidth. Для обеих моделей укажите PetalLength в качестве переменной ответа и стандартизировать предикторы.
allMdl = fitrnet(trainTbl,"PetalLength","Standardize",true); subsetMdl = fitrnet(trainTbl,"PetalLength ~ SepalLength + SepalWidth + Species", ... "Standardize",true);
Сравните значения среднеквадратичной ошибки (MSE) для двух моделей. Меньшие значения MSE указывают на лучшую производительность.
allMSE = loss(allMdl,testTbl)
allMSE = 0.0834
subsetMSE = loss(subsetMdl,testTbl)
subsetMSE = 0.0887
Для каждой модели сравните прогнозируемые длины лепестков тестового набора с истинными длинами лепестков. Постройте график прогнозируемых длин лепестков вдоль вертикальной оси и истинных длин лепестков вдоль горизонтальной оси. Точки на опорной линии указывают правильные прогнозы.
tiledlayout(2,1) % Top axes ax1 = nexttile; allPredictedY = predict(allMdl,testTbl); plot(ax1,testTbl.PetalLength,allPredictedY,".") hold on plot(ax1,testTbl.PetalLength,testTbl.PetalLength) hold off xlabel(ax1,"True Petal Length") ylabel(ax1,"Predicted Petal Length") title(ax1,"All Predictors") % Bottom axes ax2 = nexttile; subsetPredictedY = predict(subsetMdl,testTbl); plot(ax2,testTbl.PetalLength,subsetPredictedY,".") hold on plot(ax2,testTbl.PetalLength,testTbl.PetalLength) hold off xlabel(ax2,"True Petal Length") ylabel(ax2,"Predicted Petal Length") title(ax2,"Subset of Predictors")

Поскольку обе модели, по-видимому, работают хорошо, с предсказаниями, разбросанными вблизи опорной линии, рассмотрите возможность использования модели, обученной с использованием всех предикторов, кроме PetalWidth.
Mdl - Обученная регрессионная нейронная сетьRegressionNeuralNetwork объект модели | CompactRegressionNeuralNetwork объект моделиОбученная регрессионная нейронная сеть, указанная как RegressionNeuralNetwork объект модели или CompactRegressionNeuralNetwork объект модели, возвращенный fitrnet или compactсоответственно.
Tbl - Образцы данныхОбразец данных, указанный как таблица. Каждая строка Tbl соответствует одному наблюдению, и каждый столбец соответствует одной прогнозирующей переменной. Дополнительно, Tbl может содержать дополнительный столбец для переменной ответа. Tbl должен содержать все предикторы, используемые для обучения Mdl. Многозначные переменные и массивы ячеек, отличные от массивов ячеек символьных векторов, не допускаются.
Если Tbl содержит переменную ответа, используемую для обучения Mdl, то указывать не нужно ResponseVarName или Y.
Если вы тренировались Mdl используя образцы данных, содержащиеся в таблице, затем входные данные для loss также должен находиться в таблице.
Если установить 'Standardize',true в fitrnet при обучении Mdlзатем программное обеспечение стандартизирует числовые столбцы данных предиктора с использованием соответствующих средств и стандартных отклонений.
Типы данных: table
ResponseVarName - Имя переменной ответаTblИмя переменной ответа, указанное как имя переменной в Tbl. Переменная ответа должна быть числовым вектором.
При указании ResponseVarName, то необходимо указать его как вектор символа или скаляр строки. Например, если переменная ответа сохранена как Tbl.Y, затем укажите ResponseVarName как 'Y'. В противном случае программа обрабатывает все столбцы Tbl, в том числе Tbl.Y, как предикторы.
Типы данных: char | string
X - Данные предиктораДанные предиктора, заданные как числовая матрица. По умолчанию loss предполагает, что каждая строка X соответствует одному наблюдению, и каждый столбец соответствует одной прогнозирующей переменной.
Примечание
Если вы ориентируете матрицу предиктора так, чтобы наблюдения соответствовали столбцам, и укажите 'ObservationsIn','columns', то вы можете испытать значительное сокращение времени вычислений.
Длина Y и число замечаний в X должно быть равным.
Если установить 'Standardize',true в fitrnet при обучении Mdlзатем программное обеспечение стандартизирует числовые столбцы данных предиктора с использованием соответствующих средств и стандартных отклонений.
Типы данных: single | double
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
loss(Mdl,Tbl,"Response","Weights","W") указывает на использование Response и W переменные в таблице Tbl в качестве значений ответа и весов наблюдения соответственно.'LossFun' - Функция потерь'mse' (по умолчанию) | дескриптор функцииФункция потерь, указанная как 'mse' или дескриптор функции.
'mse' - средневзвешенная квадратичная ошибка.
Дескриптор функции - чтобы указать пользовательскую функцию потери, используйте дескриптор функции. Функция должна иметь следующую форму:
lossval = lossfun(Y,YFit,W)
Выходной аргумент lossval является скаляром с плавающей точкой.
Указывается имя функции ().lossfun
Y - длина n числового вектора наблюдаемых ответов, где n - количество наблюдений в Tbl или X.
YFit является n-числовым вектором соответствующих предсказанных откликов.
W является n-на-1 числовым вектором весов наблюдения.
Пример: 'LossFun',@lossfun
Типы данных: char | string | function_handle
'ObservationsIn' - Измерение наблюдения данных предиктора'rows' (по умолчанию) | 'columns'Измерение наблюдения данных предиктора, указанное как 'rows' или 'columns'.
Примечание
Если вы ориентируете матрицу предиктора так, чтобы наблюдения соответствовали столбцам, и укажите 'ObservationsIn','columns', то вы можете испытать значительное сокращение времени вычислений. Невозможно указать 'ObservationsIn','columns' для данных предиктора в таблице.
Типы данных: char | string
'Weights' - Наблюдательные весаTblВеса наблюдения, указанные как неотрицательный числовой вектор или имя переменной в Tbl. Программное обеспечение взвешивает каждое наблюдение в X или Tbl с соответствующим значением в Weights. Длина Weights должно равняться количеству наблюдений в X или Tbl.
Если входные данные указаны как таблица Tbl, то Weights может быть именем переменной в Tbl содержит числовой вектор. В этом случае необходимо указать Weights в виде вектора символов или строкового скаляра. Например, если вектор весов W хранится как Tbl.W, затем укажите его как 'W'.
По умолчанию Weights является ones(n,1), где n - количество наблюдений в X или Tbl.
Если вы поставляете веса, то loss вычисляет взвешенную регрессионную потерю и нормализует веса до суммы 1.
Типы данных: single | double | char | string
CompactRegressionNeuralNetwork | fitrnet | predict | RegressionNeuralNetwork
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.