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

Керас

Keras - это API, предназначенный для людей, а не для машин. Keras следует передовым методам снижения когнитивной нагрузки: он предлагает последовательные и простые API-интерфейсы, сводит к минимуму количество действий пользователя, необходимых для типичных случаев использования, и предоставляет четкие и действенные сообщения об ошибках. Он имеет обширную документацию и руководства для разработчиков.

В этом руководстве мы будем использовать Keras с серверной частью TensorFlow для реализации нейронной сети для прогнозирования регрессии на питоне!

Регресс

Регрессия - это алгоритм машинного обучения (ML), который можно обучить предсказывать реальные нумерованные выходные данные; например, температура, цена на складе и т. д.

Примеры: что из перечисленного является задачей регрессии?

  • Прогнозирование возраста человека
  • Прогнозирование национальности человека
  • Прогнозирование роста стоимости акций компании завтра
  • Предсказать, связан ли документ с обнаружением НЛО?

Решение: прогнозирование возраста человека (поскольку это реальная ценность, прогнозирование национальности категорично, будет ли расти цена акций - дискретный ответ - да / нет, прогнозирование того, связан ли документ с НЛО, - снова дискретный - ответ да / нет).

Классификация против регрессии

Основное различие между алгоритмами регрессии и классификации в том, что алгоритмы регрессии используются для прогнозирования непрерывных значений, таких как цена, заработная плата, возраст и т. Д., А алгоритмы классификации используются для прогнозирования / классификации дискретных значений, таких как мужской или женский, истинный или ложный, спам или не спам и тд и все собственно!

Цифра, приведенная ниже, поможет вам лучше понять регрессию! Да, эта цифра потрясающая! :)

В этом руководстве мы обучим нейронную сеть Keras предсказывать регрессию для случая Набор данных гидродинамики яхты! Ящик содержит 6 входных значений и выходное значение! Мы попытаемся предсказать регрессию, чтобы мы могли предсказать результат, используя 6 входных значений!

Набор данных гидродинамики яхты

Все подробности о наборе данных доступны в UCI Machine Learning Repository!

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

Информация об атрибутах
Входные данные:
Варианты касаются коэффициентов геометрии корпуса и числа Фруда;
1. Продольное положение центра плавучести, габаритное.
2. Призматический коэффициент, размерный.
3. Отношение длины к смещению, безразмерное.
4. Угловая тяга, габаритная.
5. Соотношение длины и ширины, габаритное.
6. Число Фруда, размерное.
Выходные данные: Измеряемая переменная - остаточное сопротивление на единицу веса смещения;
7. Сопротивление остаткам на единицу веса смещения, безразмерное.

Проектирование и разработка нейронной сети Keras для прогнозирования регрессии

Проектирование сетевой архитектуры

Чтобы реализовать нейронную сеть для регрессии, необходимо определить саму архитектуру. Для определения архитектуры используется простой многослойный персептрон (MLP), как показано на рисунке ниже.

Выполнение

Поскольку мы разработали нашу нейронную сеть Keras, давайте приступим к ее реализации прямо сейчас!

1.) Сначала мы должны импортировать необходимые пакеты:

2.) Затем нам нужно прочитать наши данные обучения и проверки:

3.) Мы получили данные по обучению и проверке, так что теперь давайте обучим нашу нейронную сеть Keras предсказанию регрессии. Другими словами, давайте реализуем архитектуру нейронной сети, которую мы разработали только что в разделе «Проектирование сетевой архитектуры» , и проведем обучение модели!

Вот объяснения реализации модели:

  • Поскольку выполняется регрессия, плотный слой, содержащий единственный нейрон с линейной функцией активации. Обычно используется активация на основе ReLu, но поскольку она выполняется регрессией, необходима линейная активация (строка №8).
  • Модель, которая используется для прогнозирования регрессии, инициализируется оптимизатором Adam, а затем компилируется (строка № 11).
  • Средняя абсолютная процентная ошибка используется в качестве функции потерь, что означает, что стремятся минимизировать среднюю процентную разницу между прогнозируемым и фактическим значением «остаточного сопротивления на единицу веса смещения» (строка № 11).
  • Выбор количества используемых эпох обучения - важная проблема для обучения нейронных сетей. Использование слишком большого количества эпох может привести к чрезмерной подгонке набора обучающих данных, а также использование слишком малого количества эпох может вызвать недопустимую подгонку модели. Следовательно, используется метод ранней остановки, который позволяет вам указать произвольно большое количество эпох обучения и остановить обучение, как только производительность модели перестает улучшаться на удерживаемом наборе данных проверки (строка № 14).

На самом деле, обратите внимание, что есть два основных типичных подхода к проектированию для случаев регрессии:

  • Использование linear (по умолчанию) в качестве функции активации в выходном слое (и ReLu в слое раньше).
  • Использование 'mean_squared_error' в качестве показателя потерь.

4.) Мы можем построить историю обучения, чтобы увидеть, «как прошло обучение нашей модели?»:

5.) Теперь давайте посмотрим, «насколько успешной может быть наша модель при прогнозировании данных обучения?»:

Наша модель достигла 0,995 R-Squared для прогнозов на данных обучения! Это круто!

R-квадрат (R2) - это статистическая мера, которая представляет собой долю дисперсии для зависимой переменной, которая объясняется независимой переменной или переменными в регрессионной модели.

6.) И вот самая захватывающая часть нашего исследования заключается в проверке того, «насколько успешной может быть наша модель при прогнозировании данных проверки (данных, которые наша модель никогда не видела!)?» :

Наша модель достигла 0,992 R-Squared для прогнозов на основе данных проверки! Это потрясающе! И, пожалуйста, не забывайте, что легче достичь ~ 0,99 R-Squared на данных обучения, чем достичь ~ 0,99 R-Squared на данных проверки!

Выводы

В этом руководстве мы узнали о теоретических основах алгоритмов регрессии. Мы также разработали и внедрили нейронную сеть с использованием Keras для прогнозирования нелинейной регрессии. И мы использовали набор данных гидродинамики яхты в качестве примера, и мы достигли 0,99 R-квадрата как по данным обучения, так и по данным проверки, и это потрясающе! Подходы и коды, представленные в этом руководстве, могут быть адаптированы для любых других задач регрессии, таких как компьютерное оборудование, энергоэффективность и другие! Итак, после этого урока вы сможете решить любые проблемы регрессии!

Исходные коды и более подробная информация о части реализации доступны в этом репозитории GitHub!