Модель регрессии нейронной сети поезда
Использовать fitrnet для обучения прямой, полностью связанной нейронной сети для регрессии. Первый полностью связанный уровень нейронной сети имеет соединение от сетевого входа (данные предиктора), а каждый последующий уровень имеет соединение от предыдущего уровня. Каждый полностью связанный слой умножает входной сигнал на весовую матрицу и затем добавляет вектор смещения. Функция активации следует за каждым полностью подключенным уровнем, исключая последний. Конечный полностью подключенный уровень формирует выходной сигнал сети, а именно прогнозируемые значения отклика. Дополнительные сведения см. в разделе Структура нейронной сети.
возвращает модель регрессии нейронной сети Mdl = fitrnet(Tbl,ResponseVarName)Mdl обучены с использованием предикторов в таблице Tbl и значения ответа в ResponseVarName табличная переменная.
указывает параметры, использующие один или несколько аргументов «имя-значение» в дополнение к любой из комбинаций входных аргументов в предыдущих синтаксисах. Например, можно настроить количество выходов и функций активации для полностью соединенных слоев, указав Mdl = fitrnet(___,Name,Value)LayerSizes и Activations аргументы «имя-значение».
Обучение модели регрессии нейронной сети и оценка производительности модели на тестовом наборе.
Загрузить carbig набор данных, содержащий замеры автомобилей, сделанные в 1970-х и начале 1980-х годов. Создание таблицы, содержащей переменные предиктора Acceleration, Displacementи так далее, а также переменная ответа MPG.
load carbig cars = table(Acceleration,Displacement,Horsepower, ... Model_Year,Origin,Weight,MPG);
Разбейте данные на обучающие и тестовые наборы. Используйте примерно 80% наблюдений для обучения модели нейронной сети и 20% наблюдений для проверки производительности обученной модели на новых данных. Использовать cvpartition для секционирования данных.
rng("default") % For reproducibility of the data partition c = cvpartition(length(MPG),"Holdout",0.20); trainingIdx = training(c); % Training set indices carsTrain = cars(trainingIdx,:); testIdx = test(c); % Test set indices carsTest = cars(testIdx,:);
Обучить модель регрессии нейронной сети, пройдя carsTrain данные обучения для fitrnet функция. Для получения лучших результатов укажите стандартизацию данных предиктора.
Mdl = fitrnet(carsTrain,"MPG","Standardize",true)
Mdl =
RegressionNeuralNetwork
PredictorNames: {'Acceleration' 'Displacement' 'Horsepower' 'Model_Year' 'Origin' 'Weight'}
ResponseName: 'MPG'
CategoricalPredictors: 5
ResponseTransform: 'none'
NumObservations: 314
LayerSizes: 10
Activations: 'relu'
OutputLayerActivation: 'linear'
Solver: 'LBFGS'
ConvergenceInfo: [1×1 struct]
TrainingHistory: [1000×7 table]
Properties, Methods
Mdl является обученным RegressionNeuralNetwork модель. Можно использовать точечную нотацию для доступа к свойствам Mdl. Например, можно указать Mdl.TrainingHistory получить более подробную информацию об истории обучения модели нейронной сети.
Оцените производительность регрессионной модели для тестового набора путем вычисления среднеквадратичной ошибки теста (MSE). Меньшие значения MSE указывают на лучшую производительность.
testMSE = loss(Mdl,carsTest,"MPG")testMSE = 16.6154
Укажите структуру модели регрессии нейронной сети, включая размер полностью соединенных слоев.
Загрузить carbig набор данных, содержащий замеры автомобилей, сделанные в 1970-х и начале 1980-х годов. Создание матрицы X содержащие переменные предиктора Acceleration, Cylindersи так далее. Сохранить переменную ответа MPG в переменной Y.
load carbig
X = [Acceleration Cylinders Displacement Weight];
Y = MPG;Разбиение данных на учебные данные (XTrain и YTrain) и данные испытаний (XTest и YTest). Зарезервируйте примерно 20% наблюдений для тестирования и используйте остальные наблюдения для обучения.
rng("default") % For reproducibility of the partition c = cvpartition(length(Y),"Holdout",0.20); trainingIdx = training(c); % Indices for the training set XTrain = X(trainingIdx,:); YTrain = Y(trainingIdx); testIdx = test(c); % Indices for the test set XTest = X(testIdx,:); YTest = Y(testIdx);
Тренируйте модель регрессии нейронной сети. Укажите, чтобы стандартизировать данные предиктора и иметь 30 выходов в первом полностью подключенном уровне и 10 выходов во втором полностью подключенном уровне. По умолчанию оба слоя используют функцию активации ReLU. Можно изменить функции активации для полностью соединенных слоев с помощью Activations аргумент «имя-значение».
Mdl = fitrnet(XTrain,YTrain,"Standardize",true, ... "LayerSizes",[30 10])
Mdl =
RegressionNeuralNetwork
ResponseName: 'Y'
CategoricalPredictors: []
ResponseTransform: 'none'
NumObservations: 318
LayerSizes: [30 10]
Activations: 'relu'
OutputLayerActivation: 'linear'
Solver: 'LBFGS'
ConvergenceInfo: [1×1 struct]
TrainingHistory: [1000×7 table]
Properties, Methods
Доступ к весам и смещениям для полностью соединенных слоев обучаемой модели с помощью LayerWeights и LayerBiases свойства Mdl. Первые два элемента каждого свойства соответствуют значениям для первых двух полностью соединенных слоев, а третий элемент соответствует значениям для конечного полностью соединенного слоя для регрессии. Например, отображение весов и смещений для первого полностью соединенного слоя.
Mdl.LayerWeights{1}ans = 30×4
-1.0617 0.1287 0.0797 0.4648
-0.6497 -1.4565 -2.6026 2.6962
-0.6420 0.2744 -0.0234 -0.0252
-1.9727 -0.4665 -0.5833 0.9371
-0.4373 0.1607 0.3930 0.7859
0.5091 -0.0032 -0.6503 -1.6694
0.0123 -0.2624 -2.2928 -1.0965
-0.1386 1.2747 0.4085 0.5395
-0.1755 1.5641 -3.1896 -1.1336
0.4401 0.4942 1.8957 -1.1617
⋮
Mdl.LayerBiases{1}ans = 30×1
-1.3086
-1.6205
-0.7815
1.5382
-0.5256
1.2394
-2.3078
-1.0709
-1.8898
1.9443
⋮
Конечный полностью подключенный слой имеет один выход. Количество выходов слоя соответствует первому размеру весов слоя и смещений слоя.
size(Mdl.LayerWeights{end})ans = 1×2
1 10
size(Mdl.LayerBiases{end})ans = 1×2
1 1
Чтобы оценить производительность обученной модели, вычислите среднеквадратичную ошибку (MSE) тестового набора для Mdl. Меньшие значения MSE указывают на лучшую производительность.
testMSE = loss(Mdl,XTest,YTest)
testMSE = 17.2022
Сравните прогнозируемые значения отклика тестового набора с истинными значениями отклика. Постройте график прогнозируемых миль на галлон (MPG) вдоль вертикальной оси и истинного MPG вдоль горизонтальной оси. Точки на опорной линии указывают правильные прогнозы. Хорошая модель производит прогнозы, которые разбросаны вблизи линии.
testPredictions = predict(Mdl,XTest); plot(YTest,testPredictions,".") hold on plot(YTest,YTest) hold off xlabel("True MPG") ylabel("Predicted MPG")

При каждой итерации тренировочного процесса вычислять валидационные потери нейронной сети. Остановите процесс обучения раньше, если потеря проверки достигает разумного минимума.
Загрузить patients набор данных. Создайте таблицу из набора данных. Каждая строка соответствует одному пациенту, и каждый столбец соответствует диагностической переменной. Используйте Systolic переменная в качестве ответной переменной, а остальные переменные в качестве предикторов.
load patients
tbl = table(Age,Diastolic,Gender,Height,Smoker,Weight,Systolic);Разделение данных на набор обучения tblTrain и набор проверки tblValidation. Программное обеспечение резервирует приблизительно 30% наблюдений для набора данных проверки и использует остальные наблюдения для набора данных обучения.
rng("default") % For reproducibility of the partition c = cvpartition(size(tbl,1),"Holdout",0.30); trainingIndices = training(c); validationIndices = test(c); tblTrain = tbl(trainingIndices,:); tblValidation = tbl(validationIndices,:);
Обучение модели регрессии нейронной сети с использованием обучающего набора. Укажите Systolic столбец tblTrain в качестве переменной ответа. Оцените модель в каждой итерации с помощью набора проверки. Укажите отображение информации об обучении в каждой итерации с помощью Verbose аргумент «имя-значение». По умолчанию учебный процесс завершается раньше, если потеря проверки больше или равна минимальной потере проверки, рассчитанной на данный момент, шесть раз подряд. Чтобы изменить количество раз, когда допустимо, чтобы потеря проверки была больше или равна минимуму, укажите ValidationPatience аргумент «имя-значение».
Mdl = fitrnet(tblTrain,"Systolic", ... "ValidationData",tblValidation, ... "Verbose",1);
|==========================================================================================| | Iteration | Train Loss | Gradient | Step | Iteration | Validation | Validation | | | | | | Time (sec) | Loss | Checks | |==========================================================================================| | 1| 516.021993| 3220.880047| 0.644473| 0.005193| 568.289202| 0| | 2| 313.056754| 229.931405| 0.067026| 0.002658| 304.023695| 0| | 3| 308.461807| 277.166516| 0.011122| 0.001363| 296.935608| 0| | 4| 262.492770| 844.627934| 0.143022| 0.000531| 240.559640| 0| | 5| 169.558740| 1131.714363| 0.336463| 0.000652| 152.531663| 0| | 6| 89.134368| 362.084104| 0.382677| 0.001059| 83.147478| 0| | 7| 83.309729| 994.830303| 0.199923| 0.000515| 76.634122| 0| | 8| 70.731524| 327.637362| 0.041366| 0.000361| 66.421750| 0| | 9| 66.650091| 124.369963| 0.125232| 0.000380| 65.914063| 0| | 10| 66.404753| 36.699328| 0.016768| 0.000363| 65.357335| 0| |==========================================================================================| | Iteration | Train Loss | Gradient | Step | Iteration | Validation | Validation | | | | | | Time (sec) | Loss | Checks | |==========================================================================================| | 11| 66.357143| 46.712988| 0.009405| 0.001130| 65.306106| 0| | 12| 66.268225| 54.079264| 0.007953| 0.001023| 65.234391| 0| | 13| 65.788550| 99.453225| 0.030942| 0.000436| 64.869708| 0| | 14| 64.821095| 186.344649| 0.048078| 0.000295| 64.191533| 0| | 15| 62.353896| 319.273873| 0.107160| 0.000290| 62.618374| 0| | 16| 57.836593| 447.826470| 0.184985| 0.000287| 60.087065| 0| | 17| 51.188884| 524.631067| 0.253062| 0.000287| 56.646294| 0| | 18| 41.755601| 189.072516| 0.318515| 0.000286| 49.046823| 0| | 19| 37.539854| 78.602559| 0.382284| 0.000290| 44.633562| 0| | 20| 36.845322| 151.837884| 0.211286| 0.000286| 47.291367| 1| |==========================================================================================| | Iteration | Train Loss | Gradient | Step | Iteration | Validation | Validation | | | | | | Time (sec) | Loss | Checks | |==========================================================================================| | 21| 36.218289| 62.826818| 0.142748| 0.000362| 46.139104| 2| | 22| 35.776921| 53.606315| 0.215188| 0.000321| 46.170460| 3| | 23| 35.729085| 24.400342| 0.060096| 0.001023| 45.318023| 4| | 24| 35.622031| 9.602277| 0.121153| 0.000289| 45.791861| 5| | 25| 35.573317| 10.735070| 0.126854| 0.000291| 46.062826| 6| |==========================================================================================|
Создайте график, сравнивающий среднеквадратичную ошибку обучения (MSE) и MSE проверки на каждой итерации. По умолчанию fitrnet сохраняет информацию о потерях внутри TrainingHistory свойство объекта Mdl. Доступ к этой информации можно получить с помощью точечной нотации.
iteration = Mdl.TrainingHistory.Iteration; trainLosses = Mdl.TrainingHistory.TrainingLoss; valLosses = Mdl.TrainingHistory.ValidationLoss; plot(iteration,trainLosses,iteration,valLosses) legend(["Training","Validation"]) xlabel("Iteration") ylabel("Mean Squared Error")

Проверьте итерацию, соответствующую минимальному значению проверки MSE. Последняя возвращенная модель Mdl является моделью, обученной этой итерации.
[~,minIdx] = min(valLosses); iteration(minIdx)
ans = 19
Оцените потерю перекрестной проверки моделей нейронных сетей с различными сильностями регуляризации и выберите силу регуляризации, соответствующую наилучшей модели.
Загрузить carbig набор данных, содержащий замеры автомобилей, сделанные в 1970-х и начале 1980-х годов. Создание таблицы, содержащей переменные предиктора Acceleration, Displacementи так далее, а также переменная ответа MPG. Удалите наблюдения из таблицы с отсутствующими значениями.
load carbig tbl = table(Acceleration,Displacement,Horsepower, ... Model_Year,Origin,Weight,MPG); cars = rmmissing(tbl);
Создать cvpartition объект для пятикратной перекрестной проверки. cvp разбивает данные на пять складок, где каждая складка имеет примерно одинаковое количество наблюдений. Задайте для случайного начального числа значение по умолчанию для воспроизводимости раздела.
rng("default") n = size(cars,1); cvp = cvpartition(n,"KFold",5);
Вычислите среднюю квадратичную ошибку (MSE) перекрестной проверки для моделей регрессии нейронной сети с различными уровнями регуляризации. Попробуйте регуляризировать сильные стороны порядка 1/n, где n - количество наблюдений. Укажите, чтобы стандартизировать данные перед обучением моделей нейронных сетей.
1/n
ans = 0.0026
lambda = (0:0.5:5)*1e-3; cvloss = zeros(length(lambda),1); for i = 1:length(lambda) cvMdl = fitrnet(cars,"MPG","Lambda",lambda(i), ... "CVPartition",cvp,"Standardize",true); cvloss(i) = kfoldLoss(cvMdl); end
Постройте график результатов. Найдите уровень регуляризации, соответствующий самому низкому MSE перекрестной проверки.
plot(lambda,cvloss) xlabel("Regularization Strength") ylabel("Cross-Validation Loss")

[~,idx] = min(cvloss); bestLambda = lambda(idx)
bestLambda = 0
Обучение модели регрессии нейронной сети с использованием bestLambda сила регуляризации.
Mdl = fitrnet(cars,"MPG","Lambda",bestLambda, ... "Standardize",true)
Mdl =
RegressionNeuralNetwork
PredictorNames: {'Acceleration' 'Displacement' 'Horsepower' 'Model_Year' 'Origin' 'Weight'}
ResponseName: 'MPG'
CategoricalPredictors: 5
ResponseTransform: 'none'
NumObservations: 392
LayerSizes: 10
Activations: 'relu'
OutputLayerActivation: 'linear'
Solver: 'LBFGS'
ConvergenceInfo: [1×1 struct]
TrainingHistory: [1000×7 table]
Properties, Methods
Tbl - Образцы данныхОбразец данных, используемых для обучения модели, указанный как таблица. Каждая строка Tbl соответствует одному наблюдению, и каждый столбец соответствует одной прогнозирующей переменной. Дополнительно, Tbl может содержать один дополнительный столбец для переменной ответа. Многозначные переменные и массивы ячеек, отличные от массивов ячеек символьных векторов, не допускаются.
Если Tbl содержит переменную ответа, и вы хотите использовать все оставшиеся переменные в Tbl в качестве предикторов, затем укажите переменную ответа, используя ResponseVarName.
Если Tbl содержит переменную ответа, и требуется использовать только подмножество остальных переменных в Tbl в качестве предикторов, затем укажите формулу с помощью formula.
Если Tbl не содержит переменную ответа, затем укажите переменную ответа с помощью Y. Длина переменной ответа и количество строк в Tbl должно быть равным.
Типы данных: table
ResponseVarName - Имя переменной ответаTblИмя переменной ответа, указанное как имя переменной в Tbl. Переменная ответа должна быть числовым вектором.
Необходимо указать ResponseVarName в виде вектора символов или строкового скаляра. Например, если Tbl сохраняет переменную ответа Y как Tbl.Y, затем укажите его как 'Y'. В противном случае программа обрабатывает все столбцы Tbl, в том числе Y, в качестве предикторов при обучении модели.
Типы данных: char | string
formula - Пояснительная модель переменной ответа и подмножество переменных предиктораПояснительная модель переменной ответа и подмножество переменных предиктора, указанное как вектор символов или строковый скаляр в форме 'Y~x1+x2+x3'. В этой форме Y представляет переменную ответа, и x1, x2, и x3 представляют переменные предиктора.
Задание подмножества переменных в Tbl в качестве предикторов для обучения модели используйте формулу. Если задать формулу, программа не будет использовать переменные в Tbl которые не отображаются в formula.
Имена переменных в формуле должны быть обоими именами переменных в Tbl (Tbl.Properties.VariableNames) и допустимые идентификаторы MATLAB ®. Имена переменных можно проверить вTbl с помощью isvarname функция. Если имена переменных недопустимы, их можно преобразовать с помощью matlab.lang.makeValidName функция.
Типы данных: char | string
X - Данные предиктораДанные предиктора, используемые для обучения модели, указаны как числовая матрица.
По умолчанию программа обрабатывает каждую строку X как одно наблюдение, и каждый столбец как один предиктор.
Длина Y и число замечаний в X должно быть равным.
Чтобы указать имена предикторов в порядке их появления в X, используйте PredictorNames аргумент «имя-значение».
Примечание
Если вы ориентируете матрицу предиктора так, чтобы наблюдения соответствовали столбцам, и укажите 'ObservationsIn','columns', то вы можете испытать значительное сокращение времени вычислений.
Типы данных: single | double
Примечание
Программное обеспечение обрабатывает NaN, пустой символьный вектор (''), пустая строка (""), <missing>, и <undefined> элементы как отсутствующие значения и удаляет наблюдения с любой из следующих характеристик:
Отсутствует значение в ответе (например, Y или ValidationData{2})
По крайней мере одно отсутствующее значение в наблюдении предиктора (например, строка в X или ValidationData{1})
NaN значение или 0 вес (например, значение в Weights или ValidationData{3})
Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.
fitrnet(X,Y,'LayerSizes',[10 10],'Activations',["relu","tanh"]) определяет создание нейронной сети с двумя полностью соединенными слоями, каждый с 10 выходами. Первый слой использует функцию активации выпрямленной линейной единицы (ReLU), а второй - функцию активации гиперболической касательной.'LayerSizes' - Размеры полностью соединенных слоев10 (по умолчанию) | положительный целочисленный векторРазмеры полностью соединенных слоев в модели нейронной сети, заданные как положительный целочисленный вектор. i-й элемент LayerSizes - количество выходов в i-ом полностью связном слое модели нейронной сети.
LayerSizes не включает размер конечного полностью подключенного слоя. Дополнительные сведения см. в разделе Структура нейронной сети.
Пример: 'LayerSizes',[100 25 10]
'Activations' - Функции активации для полностью подключенных слоев'relu' (по умолчанию) | 'tanh' | 'sigmoid' | 'none' | строковый массив | массив ячеек символьных векторовФункции активации для полностью соединенных слоев модели нейронной сети, заданные как вектор символов, скаляр строк, строковый массив или массив ячеек векторов символов со значениями из этой таблицы.
| Стоимость | Описание |
|---|---|
'relu' | Функция выпрямленного линейного блока (ReLU) - выполняет пороговую операцию для каждого элемента входа, где любое значение меньше нуля устанавливается равным нулю, то есть ={x,x≥00,x<0 |
'tanh' | Функция гиперболической касательной (tanh) - применяет |
'sigmoid' | Sigmoid function - выполняет следующую операцию над каждым входным элементом: + e − x |
'none' | Функция Identity - возвращает каждый входной элемент без какого-либо преобразования, то есть f (x) = x |
Если указана только одна функция активации, то Activations - функция активации для каждого полностью связанного уровня модели нейронной сети, исключая конечный полностью связанный уровень (см. Структура нейронной сети).
Если указан массив функций активации, то i-й элемент Activations - функция активации для i-го уровня модели нейронной сети.
Пример: 'Activations','sigmoid'
'LayerWeightsInitializer' - Функция инициализации полностью соединенных весов слоев'glorot' (по умолчанию) | 'he'Функция инициализации полностью соединенных весов слоев, указанных как 'glorot' или 'he'.
| Стоимость | Описание |
|---|---|
'glorot' | Инициализируйте веса с помощью инициализатора Glorot [1] (также известного как инициализатор Xavier). Для каждого слоя инициализатор Глорота независимо отбирает образцы из однородного распределения с нулевым средним и переменным. 2/(I+O), где I - входной размер и O - выходной размер слоя. |
'he' | Инициализируйте веса с помощью инициализатора He [2]. Для каждого слоя инициализатор He выполняет выборку из нормального распределения с нулевым средним значением и дисперсией 2/I, где I - входной размер слоя. |
Пример: 'LayerWeightsFunction','he'
'LayerBiasesInitializer' - Тип начальных полностью соединенных смещений слоя'zeros' (по умолчанию) | 'ones'Тип начальных полностью соединенных смещений слоя, указанный как 'zeros' или 'ones'.
Если указано значение 'zeros', то каждый полностью соединенный слой имеет начальное смещение 0.
Если указано значение 'ones', то каждый полностью соединенный слой имеет начальное смещение 1.
Пример: 'LayerBiasesInitializer','ones'
Типы данных: char | string
'ObservationsIn' - Измерение наблюдения данных предиктора'rows' (по умолчанию) | 'columns'Измерение наблюдения данных предиктора, указанное как 'rows' или 'columns'.
Примечание
Если вы ориентируете матрицу предиктора так, чтобы наблюдения соответствовали столбцам, и укажите 'ObservationsIn','columns', то вы можете испытать значительное сокращение времени вычислений. Невозможно указать 'ObservationsIn','columns' для данных предиктора в таблице.
Пример: 'ObservationsIn','columns'
Типы данных: char | string
'Lambda' - Сила термина «регуляризация»0 (по умолчанию) | неотрицательный скалярСила члена регуляризации, определяемая как неотрицательный скаляр. Программное обеспечение составляет целевую функцию для минимизации из функции потери среднеквадратичной ошибки (MSE) и члена штрафа гребня (L2).
Пример: 'Lambda',1e-4
Типы данных: single | double
'Standardize' - Флаг для стандартизации данных предиктораfalse или 0 (по умолчанию) | true или 1Флаг для стандартизации данных предиктора, указанных как числовые или логические 0 (false) или 1 (true). Если установить Standardize кому trueзатем программное обеспечение центрирует и масштабирует каждую числовую предикторную переменную на соответствующее среднее значение столбца и стандартное отклонение. Программное обеспечение не стандартизирует категориальные предикторы.
Пример: 'Standardize',true
Типы данных: single | double | logical
'Verbose' - Уровень детализации0 (по умолчанию) | 1Уровень детализации, указанный как 0 или 1. 'Verbose' аргумент name-value управляет объемом диагностической информации, которая fitrnet отображается в командной строке.
| Стоимость | Описание |
|---|---|
0 | fitrnet не отображает диагностическую информацию. |
1 | fitrnet периодически отображает диагностическую информацию. |
По умолчанию StoreHistory имеет значение true и fitrnet сохраняет диагностическую информацию внутри Mdl. Использовать Mdl.TrainingHistory для доступа к диагностической информации.
Пример: 'Verbose',1
Типы данных: single | double
'VerboseFrequency' - Периодичность многословной печати1 (по умолчанию) | целочисленный скалярЧастота подробной печати, которая представляет собой число итераций между печатью в командное окно, указанное как положительный целочисленный скаляр. Значение 1 указывает на печать диагностической информации на каждой итерации.
Примечание
Чтобы использовать этот аргумент «имя-значение», установите Verbose кому 1.
Пример: 'VerboseFrequency',5
Типы данных: single | double
'StoreHistory' - Флаг для хранения истории обученияtrue или 1 (по умолчанию) | false или 0Флаг для хранения истории обучения, указанный как числовой или логический 0 (false) или 1 (true). Если StoreHistory имеет значение true, то программное обеспечение хранит диагностическую информацию внутри Mdl, доступ к которому можно получить с помощью Mdl.TrainingHistory.
Пример: 'StoreHistory',false
Типы данных: single | double | logical
'IterationLimit' - Максимальное количество итераций обучения1e3 (по умолчанию) | целочисленный скалярМаксимальное число итераций обучения, указанное как положительный целочисленный скаляр.
Программное обеспечение возвращает обученную модель независимо от того, успешно ли сходится программа обучения. Mdl.ConvergenceInfo содержит информацию о сходимости.
Пример: 'IterationLimit',1e8
Типы данных: single | double
'GradientTolerance' - Относительный градиентный допуск1e-6 (по умолчанию) | неотрицательный скалярОтносительный градиентный допуск, заданный как неотрицательный скаляр.
Пусть - функция потерь при тренировочной итерации t, - градиент функции потерь по отношению к весам и смещениям при итерации t и - градиент функции потерь в начальной точке. Если , где 1,min'ℒt|,max|∇ℒ0|), то тренировочный процесс завершается.
Пример: 'GradientTolerance',1e-5
Типы данных: single | double
'LossTolerance' - Допуск потерь1e-6 (по умолчанию) | неотрицательный скалярДопуск потерь, заданный как неотрицательный скаляр.
Если потеря функции в некоторой итерации меньше, чем LossTolerance, то тренировочный процесс завершается.
Пример: 'LossTolerance',1e-8
Типы данных: single | double
'StepTolerance' - Допуск размера шага1e-6 (по умолчанию) | неотрицательный скалярДопуск размера шага, заданный как неотрицательный скаляр.
Если размер шага в некоторой итерации меньше, чем StepTolerance, то тренировочный процесс завершается.
Пример: 'StepTolerance',1e-4
Типы данных: single | double
'ValidationData' - Данные проверки для обнаружения сходимости обученияДанные проверки для определения сходимости обучения, указанные как массив ячеек или таблица.
В процессе обучения программное обеспечение периодически оценивает потери при проверке с помощью ValidationData. Если потеря проверки увеличивается более чем ValidationPatience несколько раз подряд программное обеспечение прекращает обучение.
Можно указать ValidationData как таблица, если используется таблица Tbl данных предиктора, который содержит переменную ответа. В этом случае ValidationData должны содержать те же предикторы и ответ, что и в Tbl. Программа не применяет веса к наблюдениям, даже если Tbl содержит вектор весов. Для указания весов необходимо указать ValidationData в виде массива ячеек.
При указании ValidationData в качестве массива ячеек он должен иметь следующий формат:
ValidationData{1} должен иметь тот же тип данных и ориентацию, что и данные предиктора. То есть, если вы используете матрицу предиктора X, то ValidationData{1} должна быть матрицей m-by-p или p-by-m данных предиктора, которая имеет ту же ориентацию, что и X. Переменные предиктора в данных обучения X и ValidationData{1} должны соответствовать. Аналогично, если используется таблица предикторов Tbl данных предиктора, то ValidationData{1} должна быть таблицей, содержащей те же предикторные переменные, что и в Tbl. Количество наблюдений в ValidationData{1} и данные предиктора могут изменяться.
ValidationData{2} должны соответствовать типу данных и формату переменной ответа, либо Y или ResponseVarName. Если ValidationData{2} является массивом ответов, то он должен иметь то же количество элементов, что и количество наблюдений в ValidationData{1}. Если ValidationData{1} является таблицей, то ValidationData{2} может быть именем переменной ответа в таблице. Если вы хотите использовать то же самое ResponseVarName или formula, можно указать ValidationData{2} как [].
При необходимости можно указать ValidationData{3} в виде m-мерного числового вектора весов наблюдения или имени переменной в таблице ValidationData{1} содержит веса наблюдения. Программа нормализует весовые коэффициенты с данными проверки таким образом, чтобы они равнялись 1.
При указании ValidationData и хотите отобразить потерю проверки в командной строке, set Verbose кому 1.
'ValidationFrequency' - количество итераций между оценками проверки;1 (по умолчанию) | целочисленный скалярЧисло итераций между оценками проверки, указанное как положительный целочисленный скаляр. Значение 1 указывает на оценку метрик проверки при каждой итерации.
Примечание
Чтобы использовать этот аргумент «имя-значение», необходимо указать ValidationData.
Пример: 'ValidationFrequency',5
Типы данных: single | double
'ValidationPatience' - Условие остановки для оценки проверки6 (по умолчанию) | неотрицательный целочисленный скалярУсловие остановки для оценок проверки, указанное как неотрицательный целочисленный скаляр. Обучение прекращается, если потери при проверке больше или равны минимальным потерям при проверке, вычисленным на данный момент. ValidationPatience раз за разом. Вы можете проверить Mdl.TrainingHistory таблица для просмотра текущей суммы раз, когда потеря проверки больше или равна минимуму (Validation Checks).
Пример: 'ValidationPatience',10
Типы данных: single | double
'CategoricalPredictors' - Список категориальных предикторов'all'Список категориальных предикторов, указанный как одно из значений в этой таблице. В описаниях предполагается, что данные предиктора имеют наблюдения в строках и предикторы в столбцах.
| Стоимость | Описание |
|---|---|
| Вектор положительных целых чисел |
Каждая запись в векторе представляет собой значение индекса, соответствующее столбцу данных предиктора, который содержит категориальную переменную. Значения индекса находятся в диапазоне от 1 до Если |
| Логический вектор |
A |
| Символьная матрица | Каждая строка матрицы является именем предикторной переменной. Имена должны соответствовать записям в PredictorNames. Поместите имена с дополнительными пробелами, чтобы каждая строка символьной матрицы имела одинаковую длину. |
| Строковый массив или массив ячеек символьных векторов | Каждый элемент массива является именем переменной предиктора. Имена должны соответствовать записям в PredictorNames. |
'all' | Все предикторы категоричны. |
По умолчанию, если данные предиктора находятся в таблице (Tbl), fitrnet предполагает, что переменная категорична, если она является логическим вектором, категориальным вектором, символьным массивом, строковым массивом или массивом ячеек символьных векторов. Если данные предиктора являются матрицей (X), fitrnet предполагает, что все предикторы непрерывны. Чтобы определить любые другие предикторы как категориальные предикторы, укажите их с помощью 'CategoricalPredictors' аргумент «имя-значение».
Для выявленных категориальных предикторов fitrnet создает фиктивные переменные, используя две различные схемы, в зависимости от того, неупорядочена или упорядочена категориальная переменная. Для неупорядоченной категориальной переменной fitrnet создает одну фиктивную переменную для каждого уровня категориальной переменной. Для упорядоченной категориальной переменной fitrnet создает на одну фиктивную переменную меньше числа категорий. Дополнительные сведения см. в разделе Автоматическое создание фиктивных переменных.
Пример: 'CategoricalPredictors','all'
Типы данных: single | double | logical | char | string | cell
'PredictorNames' - Имена переменных предиктораИмена переменных предиктора, заданные как строковый массив уникальных имен или массив ячеек уникальных векторов символов. Функциональные возможности 'PredictorNames' зависит от способа ввода данных обучения.
Если вы поставляете X и Y, то вы можете использовать 'PredictorNames' назначение имен переменным предиктора в X.
Порядок имен в PredictorNames должен соответствовать порядку предиктора в X. Предполагая, что X имеет ориентацию по умолчанию с наблюдениями в строках и предикторами в столбцах, PredictorNames{1} является именем X(:,1), PredictorNames{2} является именем X(:,2)и так далее. Также, size(X,2) и numel(PredictorNames) должно быть равным.
По умолчанию PredictorNames является {'x1','x2',...}.
Если вы поставляете Tbl, то вы можете использовать 'PredictorNames' чтобы выбрать, какие переменные предиктора использовать в обучении. То есть fitrnet использует только переменные предиктора в PredictorNames и переменную ответа во время обучения.
PredictorNames должен быть подмножеством Tbl.Properties.VariableNames и не может включать имя переменной ответа.
По умолчанию PredictorNames содержит имена всех переменных предиктора.
Хорошей практикой является определение предикторов для обучения с использованием 'PredictorNames' или formulaно не оба.
Пример: 'PredictorNames',{'SepalLength','SepalWidth','PetalLength','PetalWidth'}
Типы данных: string | cell
'ResponseName' - Имя переменной ответа'Y' (по умолчанию) | символьный вектор | строковый скалярИмя переменной ответа, указанное как вектор символа или скаляр строки.
Если вы поставляете Y, то вы можете использовать 'ResponseName' для указания имени переменной ответа.
Если вы поставляете ResponseVarName или formula, то вы не можете использовать 'ResponseName'.
Пример: 'ResponseName','response'
Типы данных: char | string
'Weights' - Наблюдательные весаTblВеса наблюдения, указанные как неотрицательный числовой вектор или имя переменной в Tbl. Программное обеспечение взвешивает каждое наблюдение в X или Tbl с соответствующим значением в Weights. Длина Weights должно равняться количеству наблюдений в X или Tbl.
Если входные данные указаны как таблица Tbl, то Weights может быть именем переменной в Tbl содержит числовой вектор. В этом случае необходимо указать Weights в виде вектора символов или строкового скаляра. Например, если весовые коэффициенты вектора W хранится как Tbl.W, затем укажите его как 'W'. В противном случае программа обрабатывает все столбцы Tbl, в том числе W, в качестве предикторов при обучении модели.
По умолчанию Weights является ones(n,1), где n - количество наблюдений в X или Tbl.
fitrnet нормализует веса для суммирования в 1.
Типы данных: single | double | char | string
'CrossVal' - Флаг для обучения перекрестно проверенной модели'off' (по умолчанию) | 'on' Флаг для обучения перекрестно проверенной модели, указанный как 'on' или 'off'.
При указании 'on'затем программное обеспечение обучает перекрестно проверенную модель с 10 складками.
Этот параметр перекрестной проверки можно переопределить с помощью CVPartition, Holdout, KFold, или Leaveout аргумент «имя-значение». Одновременно можно использовать только один аргумент имя-значение перекрестной проверки для создания модели с перекрестной проверкой.
Либо выполните перекрестную проверку позже путем передачи Mdl кому crossval.
Пример: 'Crossval','on'
Типы данных: char | string
'CVPartition' - Раздел перекрестной проверки[] (по умолчанию) | cvpartition объект секционированияРаздел перекрестной проверки, указанный как cvpartition объект секционирования, созданный cvpartition. Объект секционирования определяет тип перекрестной проверки и индексирования для наборов обучения и проверки.
Чтобы создать модель с перекрестной проверкой, можно указать только один из следующих четырех аргументов: CVPartition, Holdout, KFold, или Leaveout.
Пример: Предположим, что вы создаете случайный раздел для пятикратной перекрестной проверки 500 наблюдений с помощью cvp = cvpartition(500,'KFold',5). Затем можно указать модель с перекрестной проверкой с помощью 'CVPartition',cvp.
'Holdout' - Доля данных для проверки отсутствияДоля данных, используемых для проверки удержания, заданная как скалярное значение в диапазоне (0,1). При указании 'Holdout',p, затем программное обеспечение выполняет следующие действия:
Случайный выбор и резервирование p*100% данных в качестве данных проверки и обучение модели с использованием остальных данных.
Храните компактную обучаемую модель в Trained свойства перекрестной проверенной модели.
Чтобы создать модель с перекрестной проверкой, можно указать только один из следующих четырех аргументов: CVPartition, Holdout, KFold, или Leaveout.
Пример: 'Holdout',0.1
Типы данных: double | single
'KFold' - Количество складок10 (по умолчанию) | положительное целое значение больше 1Число сгибов для использования в модели с перекрестной проверкой, указанное как положительное целое значение больше 1. При указании 'KFold',kзатем программное обеспечение выполняет следующие действия:
Случайное разбиение данных на k наборы.
Для каждого набора зарезервируйте набор в качестве данных проверки и обучайте модель с помощью другого k - 1 комплект.
Сохранить k компактные, обученные модели в k-by-1 клеточный вектор в Trained свойства перекрестной проверенной модели.
Чтобы создать модель с перекрестной проверкой, можно указать только один из следующих четырех аргументов: CVPartition, Holdout, KFold, или Leaveout.
Пример: 'KFold',5
Типы данных: single | double
'Leaveout' - Флаг перекрестной проверки «оставить один»'off' (по умолчанию) | 'on'Флаг перекрестной проверки «оставить один», указанный как 'on' или 'off'. При указании 'Leaveout','on', то для каждого из n наблюдений (где n - количество наблюдений, исключая отсутствующие наблюдения, указанные в NumObservations свойство модели), программное обеспечение выполняет следующие действия:
Зарезервируйте одно наблюдение в качестве данных проверки и обучите модель, используя другие наблюдения n-1.
Храните n компактных обученных моделей в клеточном векторе n-by-1 в Trained свойства перекрестной проверенной модели.
Чтобы создать модель с перекрестной проверкой, можно указать только один из следующих четырех аргументов: CVPartition, Holdout, KFold, или Leaveout.
Пример: 'Leaveout','on'
Mdl - Обученная модель регрессии нейронной сетиRegressionNeuralNetwork объект | RegressionPartitionedModel объектОбученная модель регрессии нейронной сети, возвращенная как RegressionNeuralNetwork или RegressionPartitionedModelобъект.
Если задать какой-либо из аргументов «имя-значение» CrossVal, CVPartition, Holdout, KFold, или Leaveout, то Mdl является RegressionPartitionedModel объект. В противном случае Mdl является RegressionNeuralNetwork модель.
Для ссылки на свойства Mdl, используйте точечную нотацию.
Модель регрессии нейронной сети по умолчанию имеет следующую структуру слоя.
| Структура | Описание |
|---|---|
|
| Ввод - этот уровень соответствует данным предиктора в Tbl или X. |
Первый полностью подключенный уровень - по умолчанию этот уровень имеет 10 выходов.
| |
Функция активации ReLU -
| |
Конечный полностью подключенный уровень - этот уровень имеет один выход.
| |
| Output (Выход) - этот уровень соответствует прогнозируемым значениям отклика. |
Пример, показывающий, как регрессионная модель нейронной сети с этой структурой слоя возвращает предсказания, см. в разделе Прогнозирование использования слоевой структуры регрессионной модели нейронной сети.
Всегда старайтесь стандартизировать числовые предикторы (см. Standardize). Стандартизация делает предикторы нечувствительными к масштабам, по которым они измеряются.
[1] Глорот, Ксавье и Йошуа Бенгио. «Понимание сложности обучения глубоким нейронным сетям». В материалах тринадцатой международной конференции по искусственному интеллекту и статистике, стр. 249-256. 2010.
[2] Хэ, Каймин, Сянъу Чжан, Шаоцин Жэнь и Цзянь Сунь. «Углубляясь в выпрямители: Превосходя показатели человеческого уровня по классификации имидженетов». В трудах международной конференции IEEE по компьютерному зрению, стр. 1026-1034. 2015.
[3] Nocedal, J. и С. Дж. Райт. Численная оптимизация, 2-е изд., Нью-Йорк: Спрингер, 2006.
CompactRegressionNeuralNetwork | loss | predict | RegressionNeuralNetwork | RegressionPartitionedModel
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.