Путаница в отношении подготовки данных для задачи подбора данных с использованием NN - PullRequest
0 голосов
/ 11 мая 2019

Я использую многослойный персептрон для подгонки модели к заданной паре ввода-вывода данных в соответствии с руководством https://www.mathworks.com/help/deeplearning/gs/fit-data-with-a-neural-network.html.

Путаница 1) Мне трудно понять, где использовался тестовый набор, созданный с помощью команды net.divideParam.testRatio? В целом, мы разбиваем набор данных на обучающие, проверочные и невидимые тестовые наборы, которые используются для оценки производительности и отчетности по матрице путаницы. Этот подход обычно делается для задачи классификации. Но для проблемы регрессии и подгонки модели. используя NN, мы не должны иметь явно набор тестов, который не будет виден во время обучения? Эта команда net.divideParam.testRatio создает этот невидимый набор тестов, но никогда не используется при тестировании сети? Программный код использует все inputs в тестировании. Неясно, должен ли после обучения использовать невидимый набор данных для тестирования, а затем сообщать о производительности.

% Create a Fitting Network
hiddenLayerSize = 10;
net = fitnet(hiddenLayerSize);
inputs = houseInputs;
targets = houseTargets;
% Set up Division of Data for Training, Validation, Testing
net.divideParam.trainRatio = 70/100;
net.divideParam.valRatio = 15/100;
net.divideParam.testRatio = 15/100; 
% Train the Network
[net,tr] = train(net,inputs,targets);

% Test the Network
outputs = net(inputs);
errors = gsubtract(outputs,targets);
performance = perform(net,targets,outputs)

Путаница 2) При использовании регрессионной модели mvregress следуем ли мы тому же подходу, что и ответ для путаницы 1)

Пожалуйста, помогите. Я не могу найти правильные методы и подходы для этих начальных шагов, и я считаю, что правильное использование оказывает большое влияние на результат.

1 Ответ

1 голос
/ 12 мая 2019

Я могу помочь вам в основном в замешательстве 1).Когда вы обучаете нейронную сеть, вы разделяете набор данных на 3 набора:

  1. Учебный набор, используемый для обучения сети (единственный набор данных, который фактически позволяет обновлять веса сети);
  2. Набор проверки, используемый для остановки обучения (это параметр Проверки проверки в графическом интерфейсе);
  3. Набор проверки, который влияет на графики производительности и общую производительность установщика;

Следовательно, из этих 3 только тренировочный набор виден сетью и влияет на обновление весов;в то время как набор проверки позволяет остановить обучение, если сеть переизбирает данные обучения (улучшение в подборе данных обучения не улучшает подбор / классификацию данных проверки).Наконец, набор тестов полезен для первой проверки работоспособности сборщика.Если вы проверите значение net.divideParam, вы увидите, что сеть хранит процент значений для каждого набора;во время обучения входы и цели будут случайным образом разделены в соответствии с этими 3 значениями.Вот почему, если вы используете набор инструментов для построения диаграммы производительности сети.Вы также можете избежать этого в случайном порядке, установив net.divideFcn в значение «indind ».Это в основном полезно, если вы хорошо знаете свой набор данных.При обучении сети с помощью

[net,tr] = train(net,inputs,targets);

tr хранятся результаты обучения, включая индексы обучения (tr.trainInd), проверки (tr.valInd) и набора тестов (tr.testInd).Для извлечения каждого из наборов можно индексировать входные данные с этими входами, в то время как другие параметры, такие как точность или производительность сети, могут быть получены через tr.

Что касается путаницы 2, я думаю, чтоМодель регрессии mvregress работает с другим подходом: он должен просто оценить параметры для подбора, не разбивая набор данных на три среза.Вы должны оценить регрессию, добавив некоторые точки или удалив их из входных данных.

...