Прогнозирование показателей с помощью нейронных сетей

Зеркало, зеркало на стене, какой пользователь купит больше всего?

Вам когда-нибудь приходилось прогнозировать какую-либо метрику для взаимодействия с пользователем, коэффициента конверсии или чего-то подобного, и вы задавались вопросом, как? Нет, тебе не нужны сверхспособности. Вместо этого используйте возможности нейронных сетей. Единственное, что вам нужно, это данные. Чем больше тем лучше.

Позвольте мне продемонстрировать основную идею, используя глубокую нейронную сеть, чтобы предсказать оценку, в данном случае общую оценку счастья страны, просто используя набор более или менее связанных факторов. Взглянем на сами данные:

Набор данных взят из World Happiness Report и находится в свободном доступе на Kagle . ¹ Он включает в себя различные объективные и субъективные переменные, такие как ВВП, социальная поддержка или проявленная щедрость, для нескольких стран, а также оценка счастья . Цель состоит в том, чтобы предсказать оценку счастья на основе тех переменных, которые иногда называют функциями в сфере машинного обучения.

Существуют и другие подходы для достижения этого (например, множественная линейная регрессия), но, применяя нейронную сеть, мы можем довольно легко повысить точность прогноза. И это намного круче.

Использование мощности нейронных сетей

Что такое глубокая нейронная сеть? По сути, это похоже на крошечную модель мозга. У вас есть взаимосвязанные нейроны, которые запускаются по заданному стимулу и производят выходной сигнал. Эта абстрактная модель состоит из слоев нейронов. Мы называем это глубокой нейронной сетью, когда она состоит из нескольких слоев. Количество слоев и нейронов, а также внутренняя механика моделируемых нейронов и их связи с другими нейронами - это лишь некоторые аспекты сложности, которые необходимо учитывать при построении нейронной сети. Подобно нашему физическому мозгу, он постепенно научится производить желаемый результат при вводе данных. И, как и когда вы занимаетесь в тренажерном зале, тренировки на самом деле являются наиболее трудоемким и ресурсоемким процессом.

В нашем случае входными данными для нейронной сети будут все функции набора данных World Happiness Report. Желаемый результат - это, конечно, оценка счастья. Сама нейронная сеть была быстро создана на Python с использованием библиотеки Google Tensorflow. Из-за небольшого количества точек данных мне нужно было создать только небольшую нейронную сеть. Сложнее всего было найти правильные параметры, то есть количество нейронов, количество слоев и так далее.

Посещение нейронного спортзала

Вы не можете пойти в спортзал, не зная, чего хотите достичь. Вам нужен показатель, например, ваша мышечная масса или количество скручиваний. Наша цель - как можно точнее угадать рейтинг счастья. Таким образом, мы хотим минимизировать расстояние между прогнозируемой оценкой и фактической оценкой счастья, которую мы будем называть ошибкой. Чем лучше обучение, тем ближе наши прогнозы в среднем для каждого балла и тем меньше общая ошибка. Это будет наша метрика.

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

Кривые обучения показывают нам, насколько хорошо обучение продвигается с течением времени. На картинке выше вы видите, что общая ошибка наших прогнозов (среднеквадратичная ошибка) медленно уменьшается с каждой тренировкой. Я гарантирую вам, это невероятно приятно, когда вы находите набор параметров, которые работают! Это момент эврики, потому что - в зависимости от объема данных, сложности вашей нейронной сети и оборудования - каждое обучение может занять минуты, часы или даже дни.

Полученные результаты

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

А как насчет красных точек? Они принадлежат небольшой, случайно выбранной выборке, называемой набором для проверки. Использование всех доступных данных может привести к перетренированной и жесткой нейронной сети. Вместо этого мы хотим найти скрытый паттерн, который буквально соединяет точки. Используя набор для проверки, мы можем оценить, насколько хорошо наша нейронная система работает с невидимыми данными.

Например, фактическая оценка счастья в Турции составила 5,37, а прогнозируемая оценка - 5,29. В среднем отклонение между прогнозируемым и фактическим значением оценки счастья в рамках проверочного набора составляло 0,35.² Учитывая диапазон оценок от 3 до 8, это довольно хорошо!

Использование обученной нейронной сети

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

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

Нейронные сети никуда не денутся. Благодаря множеству продуктов и фреймворков, таких как Tensorflow, их можно легко реализовать, не имея глубоких знаний о сложной математике за кулисами. Некоторые сервисы, такие как Azure или AWS, упрощают интеграцию машинного обучения в существующий продукт. Но, конечно, такое членство в спортзале имеет свою цену.

Если вы хотите попробовать это сами, скачайте Jupyter Notebook!

Ссылки и сноски

  1. Хелливелл, Дж., Лейард, Р., и Сакс, Дж. (2019). Отчет о мировом счастье 2019, Нью-Йорк: Сеть решений для устойчивого развития.
  2. MAE = 0,35 с 95% доверительным интервалом [0,12, 0,83]