Потеря для нейронной сети регрессии
возвращает потерю регрессии для обученной нейронной сети регрессии L = loss(Mdl,Tbl,ResponseVarName)Mdl использование данных о предикторе в таблице Tbl и значения отклика в ResponseVarName табличная переменная.
L возвращен как скалярное значение, которое представляет среднеквадратическую ошибку (MSE) по умолчанию.
задает опции с помощью одних или нескольких аргументов name-value в дополнение к любой из комбинаций входных аргументов в предыдущих синтаксисах. Например, можно указать, что столбцы в данных о предикторе соответствуют наблюдениям, задают функцию потерь или предоставляют веса наблюдения.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.0831
subsetMSE = loss(subsetMdl,testTbl)
subsetMSE = 0.0884
Для каждой модели сравните, набор тестов предсказал лепестковые длины к истинным лепестковым длинам. Постройте предсказанные лепестковые длины вдоль вертикальной оси и истинные лепестковые длины вдоль горизонтальной оси. Точки на ссылочной линии указывают на правильные предсказания.
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 \in 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 \in 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
fitrnet | RegressionNeuralNetwork | predict | CompactRegressionNeuralNetwork
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.