Как предсказывать загрязнение воздуха с помощью нейросетей
Задача нейросети будет в предсказании значения концентрации PM10 вредных частиц, содержащихся в воздухе, основываясь на других измерениях приборов.
Кратко о данных. Специальное оборудование производило замеры содержания в воздухе различных газов и взвешенных частиц, температуры воздуха, скорости ветра, атмосферного давления, даты и времени. Измерения производились каждые 20 минут в течении полутора лет. Следовательно, датасет содержит около 34 тыс. строк.
После осмотра файлов выяснилось, что в данных присутствуют сбойные измерения, от этих строк необходимо избавиться.
Подгружаю датасет: так как данные разбиты по разным .csv файлам, то воспользуюсь функцией concat.
Исключаю ошибочные замеры, а также преобразую данные к нужному формату.
Вывожу данные для первичной оценки:
Отсюда видно, что величина данных сильно разнится, такие данные требуют дополнительной обработки, а именно нормализации и исключения выбросов.
Чтобы избавиться от выбросов использую гистограммы BoxPlot, я исключаю все данные, которые лежат выше верхней и ниже нижней границы.
Для нормализации в нейросеть будет добавлен слой BatchNormalization.
Чтобы удалённые строки не так критично влияли на результаты, усредняю данные по дням.
Разбиваю датасет на обучающую и тестовую выборки.
В качестве функций активации были выбраны ReLU, ELU, так как они, как правило, лучше себя показывают в задачах регрессии. На выходе из нейронной сети находится линейная функция. Всего в сети 8 слоёв, содержащих в себе в сумме 21000 параметров, в качестве оптимизатора выбран стохастический градиентный спуск.
Также для избавления от переобучения в один из слоёв включена l2 регуляризация.
Запускаю обучение, на практике получил, что модель выходит на асимптоту ошибки примерно за 150 эпох.
Ну, а теперь можно оценить, как нейронка покажет себя на тестовой выборке.
Среднеквадратичная и абсолютная ошибки.
На графике видно, что модель уловила некоторые пики выбросов. По MSE и MAE также можно сказать, что результаты неплохие, однако из-за удаления некоторых строк из датасета предсказанные значения все же не идеальные. Отсюда можно сделать вывод, что нейросети могут быть применимы в задачах, связанных с регрессией и выдавать приемлемый результат.
Благодарю за прочтение! Если пост показался вам полезным, можете поставить лайк, а также написать в комментариях, как можно улучшить полученные результаты.