{"id":14285,"url":"\/distributions\/14285\/click?bit=1&hash=346f3dd5dee2d88930b559bfe049bf63f032c3f6597a81b363a99361cc92d37d","title":"\u0421\u0442\u0438\u043f\u0435\u043d\u0434\u0438\u044f, \u043a\u043e\u0442\u043e\u0440\u0443\u044e \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0442\u0440\u0430\u0442\u0438\u0442\u044c \u043d\u0430 \u043e\u0431\u0443\u0447\u0435\u043d\u0438\u0435 \u0438\u043b\u0438 \u043f\u0443\u0442\u0435\u0448\u0435\u0441\u0442\u0432\u0438\u044f","buttonText":"","imageUuid":""}

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

В этой статье мы хотим поделиться опытом применения нейронной сети MLP с использованием python и библиотеки sklearn в задаче прогнозирования спроса на товар по онлайн-объявлению.

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

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

Категории логично закодировать средней ценой товаров по сегменту. Это можно сделать с помощью функций map() и groupby().

Из текста можно извлечь статистические признаки, такие как количество букв, количество слов и заглавных символов в предложениях.

Перед использованием нейронных сетей важно нормализовать данные, т.е. привести все атрибуты к единому масштабу. Мы использовали два метода: нормализация min-max и нормализация средним отклонением, реализованных в классах sklearn.preprocessing. MinMaxScaler() и sklearn.preprocessing.StandartScaler().

Из изображений в цветовом пространстве HSV я извлекала средние значения по всем каналам.

Переходим к построению нейронной сети. Я использую двухслойную модель sklearn.neural_network.MLPRegressor. Количество нейронов в каждом слое подбирается итеративно, начиная с заведомо меньшей необходимой величины. Для входного и скрытых слоев используются функции активации ReLU(x).

Обучение происходит с помощью двух алгоритмов, которые являются вариациями алгоритма градиентного спуска: стохастический градиентный спуск (SGD) с импульсом Нестерова и алгоритм адаптивной инерции (Adam).

Таблица ниже содержит результат работы ИНС на тестовой выборке.

Лучший результат показала модель с методом оптимизации Adam, c коэффициентом скорости обучения 0,001 и количеством нейронов на скрытых слоях 20, 16. Время обучения для алгоритма Adam ниже чем для алгоритма SGD с импульсом Нестерова. Этот параметр особенно важен при наборах данных больших размерностей.

В среднем нормализация данных стандартным отклонением показала лучший результат по сравнению с min-max нормализацией.

Для улучшения качества прогнозирования планируется добавления новых признаков, например, можно извлекать из изображений коэффициенты размытости, зернистости, количество различных цветов на снимке. Также будет полезно использовать векторные представления текстовых данных. Предполагается, что использование LSTM — разновидности архитектуры рекуррентных нейронных сетей, поможет уменьшить ошибку.

0
1 комментарий
Синди Катсс

регион; город; категорию объявления; заголовок и описание объявления; цену; идентификационный код изображения, связывающий с файлом jpg и др. Целевой переменной является вероятность продажи товара.
а тут прибыл полный писец и положил хвост на нейросеть и сказал короновырус
сказочные оптимисты

Ответить
Развернуть ветку
-2 комментариев
Раскрывать всегда