Потеря для регрессионной нейронной сети
возвращает регрессионную потерю для обученной регрессионной нейронной сети 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объект модели объект модели, возвращенный 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 -by-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. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.