Временные ряды и регрессия.

Содержание таблицы

  1. Введение
  2. Бизнес-проблема
  3. Источник данных
  4. Ограничения бизнеса
  5. Показатели эффективности
  6. Использование машинного обучения
  7. Существующие подходы
  8. Улучшения
  9. Исследовательский анализ данных и его наблюдение
  10. Мой первый подход к решению вышеуказанной проблемы
  11. Разработка функций
  12. Моделирование и сравнение
  13. Оценка представления Kaggle
  14. Финальный конвейер проблемы
  15. Заключение
  16. Будущая работа
  17. Рекомендации
  18. Репозиторий GitHub

Необходимое условие

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

1. Введение

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

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

2. Бизнес-проблема

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

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

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

3. Источник данных

LANL Earthquake Prediction — это соревнование, проводимое кафедрой физики и астрономии Университета Преследования и размещаемое на Kaggle. Набор данных содержит только два столбца.

Папка набор данных содержит следующие файлы:

  • Train.csvэтот файл содержит 2 столбца и 629 миллионов строк, первая из них — acoustic_data, представляющая волну. эта волна выглядит как звуковые волны и непрерывные сегменты экспериментальных данных. И 2-й - time_to_failure, по сути, это оставшееся время до следующего землетрясения.
  • Test.csv, в этой папке доступно много файлов .csv, и каждый файл содержит ряд акустических волн, а каждый тестовый файл в тестовом наборе содержит только 150 000 строк акустических волн.
  • Sample_submission.csv, имеет размер 2624 x 2, имеет seg_id и time_to_failure,
  • Обзор набора данных можно найти по этой ссылке.

4. Бизнес-ограничения

  1. Прогнозируемое значение должно быть целым числом.
  2. Строгие ограничения задержки.
  3. Неверное прогнозирование может привести к упущенным потерям человеческих и животных жизней и денег.

5. Показатели производительности

Показателем производительности, который мы использовали для оценки, является средняя абсолютная ошибка (MAE) между прогнозируемым и фактическим оставшимся временем.

В статистике средняя абсолютная ошибка (MAE) — это мера ошибок между парными наблюдениями, отражающими одно и то же явление (Википедия).

Мы также использовали оценочную матрицу как среднюю абсолютную процентную ошибку (MAPE).

6. Использование машинного обучения

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

Краткое введение о временных рядах

  1. Одномерные временные ряды. Это означает, что когда вы хотите сделать прогноз на основе одной переменной, это называется одномерными временными рядами. Например, предсказание землетрясения. И для обработки одномерных временных рядов у нас есть несколько хороших моделей, таких как ARIMA, Facebook Prophet и т. д. Мы изучим все модели позже в этом блокноте.
  2. Многомерный временной ряд. Это означает, что когда у вас есть более двух функций и вы прогнозируете переменные на основе других функций, это называется многомерным временным рядом, например, когда у вас есть такие функции, как дата, влажность, осадки, и вы хотите чтобы предсказать Temputer на основе других функций, это стало проблемой многомерных временных рядов.

Существуют разные типы моделей для данных обоих временных рядов.

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

7. Существующие подходы

Решение 1



Наблюдения

  1. Здесь они начали с того, как создать новую функцию и некоторые части EDA.
  2. В EDA они обнаружили, что максимальное оставшееся время составляет 16 секунд, и этот набор данных содержит 16 землетрясений.
  3. Моделирование: они использовали статистические модели
  • СВР
  • XGBoost
  • Случайный лес
  • Кэтбуст

4. Функция: они использовали разработку функций на основе скользящих окон.

Решение 2



Наблюдения

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

3. Здесь они применяют (i) LGB, (ii) SVR модели и получают очень высокий MAE.

8. Улучшения

Самой большой проблемой для меня в этой задаче о конкуренции является вычислительная мощность, потому что у нас 629 миллионов строк, а размер набора данных составляет примерно 10 ГБ. Чтобы преодолеть эту проблему, я использовал библиотеку Dask для загрузки данных и выполнения EDA, FE и моделирования.

Я трачу больше времени на разработку функций, выполняя основные статистические функции, такие как среднее, медиана, максимум, минимум и т. Д., Но мои MAE и MAPE не очень сильно улучшаются.

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

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

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

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

9. Исследовательский анализ данных (EDA) и его наблюдение

EDA поможет нам более четко понимать данные. с помощью EDA мы можем добавить важные функции, используя методы разработки функций, которые помогают нам снизить оценки MAE и MAPE.

9.1 Загрузите данные и визуализируйте

9.2 Распределение акустических данных

Здесь мы строим распределение акустических данных, используя только 1% данных, потому что данных очень много.

Глядя на pdf акустических волн, мы можем сказать, что многие точки лежат в диапазоне от -10 до 20, и здесь многие точки имеют очень высокие значения, такие как от -2000 до 4000, но здесь мы не можем четко сказать о распределении данных, поэтому давайте увеличим график распространения акустических волн.

Теперь мы берем значения акустических волн от -30 до 30, и здесь также мы берем только 1% данных от общих данных.

Теперь здесь мы ясно видим распределение, и, глядя на график, мы можем сказать, что от -10 до 20 значений акустической волны следуют гауссовому/нормальному распределению данных. Здесь большинство акустических волн имеют значение 8, если смотреть на ячейку гистограммы.

Из графика Q-Q мы можем сказать, что значения от -2 до 2 акустической волны следуют распределению Гаусса.

9.3 Распределение времени до отказа

Здесь мы строим распределение нашей целевой переменной, которая представляет собой время до отказа, здесь мы берем только 1% данных, и мы можем сказать из pdf, что у нас очень меньше данных, что оставшееся время следующего землетрясения составляет более 15 сек.

Здесь мы строим CDF данных времени до отказа, и мы можем сказать, что 80% данных оставшееся время следующего землетрясения составляет менее 9 секунд.

9.4 Акустические данные + Время до отказа

Для четкой визуализации мы берем очень меньше данных для этого графика.

Давайте посмотрим, как обе переменные изменяются с течением времени, оранжевая линия — это акустические данные, а синяя — время отказа.

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

Мы видели все землетрясения, у нас осталось немного времени для следующего землетрясения, и самое короткое время до отказа составляет 1,5 секунды, а самое длинное - около 16 секунд.

9.5 Тестовые данные

В тестовых данных у нас есть другой файл CSV, и каждый файл CSV содержит 150 000 значений акустических данных (один столбец). Здесь я построил файл с одним образцом для понимания, и мы также построили график распределения, и распределение очень выбранный И второй график мы отображаем все значения акустической волны.

9.6 Тесты Дики-Фуллера

Таким образом, наши данные основаны на временных рядах, и чтобы определить, являются ли данные стационарными или нестационарными, мы должны выполнить тест,

Существует множество тестов, позволяющих найти стационарные или нестационарные данные, и один из популярных тестов называется тест Дики-Фуллера или его также называют расширенным тестом Дики-Фуллера (ADF).

Временной ряд считается стационарным, если статистическое свойство не меняется с течением времени, то есть его среднее значение и дисперсия постоянны,
если его среднее значение и дисперсия изменяются с течением времени, что означает, что данные нестационарны.
/сильный>

Учитывая сюжет времени до отказа, мы можем сказать, что это стационарно, но как мы можем это доказать.

Чтобы доказать, что данные являются стационарными или нет, когда тест ADF входит в картину, для любого теста у нас есть нулевая гипотеза H0 и альтернативная гипотеза H1,

Таким образом, в тесте ADF нулевая гипотеза H0 означает, что временной ряд является нестационарным по своей природе, а альтернативная гипотеза H1 означает, что временной ряд является стационарным по своей природе.

Для выполнения теста ADF мы используем библиотеку adfuller, которая возвращает три значения:

1:- Статистическое значение ADF, 2:-p-значение и 3:- Критические значения.

Таким образом, если статистика ADF ‹ критические значения, то мы отклоняем H0, что означает, что временной ряд является нестационарным, если статистика ADF › критические значения, то мы принимаем H0, что означает время Серия нестационарная.

Или то же самое, что вы можете сказать, используя p-значения, если p-значение очень-очень меньше, отклоните H0, а p-значение высокое, а затем примите H0.

  • Фрагмент кода:

10. Мой первый подход к решению вышеуказанной проблемы

Я решил создать новые статистические функции, такие как среднее, медиана, квантильные значения, максимум, минимум и т. д. Наш набор данных поезда содержит 629 миллионов строк, а наш файл тестовых данных содержит 150 тысяч строк. Итак, здесь я решил взять пакет данных размером 150 000 и сгенерировать среднее, медианное, максимальное и т. д. значения из всего набора данных.

Кроме того, чтобы создать больше функций, я использовал метод функций на основе скользящего окна с размером скользящего окна, скользящее окно означает, что мы берем один размер окна/промежутка и сворачиваем его в наши данные, а после этого мы создаем функции, как например, предположим, что мы берем скользящий размер 10, что означает, что мы берем 10-строчный разрыв в данных и находим средние значения из 1-й выборки данных, и теперь у нас есть средние значения каждых 10-строчных данных, используя это, мы создаем статистические функция такая же, как указано выше.

Затем я решил поэкспериментировать со всеми нижеприведенными моделями с настройкой гиперпараметров:

Регрессия KNN, линейная регрессия, регрессор случайного леса, регрессор XGBoost.

  • похоже, что RF, XGB + RF regressor и XGB работают хорошо.
  • Итак, теперь наша задача состоит в том, чтобы придумать несколько новых значимых функций, используя некоторые методы разработки функций, которые помогут нам улучшить наши оценки MAE и MAPE.

11. Разработка функций

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

11.1 Функция на основе изображения спектрограммы

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

Теперь у нас есть простые статистические функции и 500-пиксельные значения в качестве функций, и это наш первый набор данных с разработкой функций.

11.2 Функция спектрограммы на основе изображения с разрешением 200 пикселей

Здесь мы используем тот же подход, что и выше, вместо того, чтобы брать здесь 500-пиксельные значения, я беру 200-пиксельные значения, и здесь я использовал больше статистических функций вместо простых статистических функций, это наш второй набор данных.



11.3 Функция на основе частот

Как мы знаем, спектрограмма возвращает три значения, одно из них — частота. поэтому мы используем все частоты в качестве новых функций и объединяем эту частоту со статистическими функциями, это наш третий набор данных.

12. Моделирование и сравнение

  1. Теперь у нас есть три разных типа наборов данных, и, используя все эти наборы данных, я применил разные типы моделей, и наша цель — предсказать время до отказа.
  2. В этом разделе мы также хотим понять, как наши недавно созданные функции помогают нам улучшить наши MAE и MAPE.
  3. Здесь я применяю модели KNN, LR, RF и XGB с настройкой гиперпараметров, а также пробовал модели стекирования.

Наблюдение:

  • Глядя на результат, могу сказать, что функция «Изображение 500 пикселей» очень помогает снизить MAE.
  • Таким образом, XGBoost и Random Forest работают лучше. мы можем думать о наших лучших моделях, из обеих мы выбираем XGBoost в качестве нашей окончательной модели и статистическую + 500-пиксельную как лучшую разработку функций.
  • Код очень длинный, поэтому нажмите здесь, чтобы получить код.

13. Оценка представления Kaggle:

Я получил 2,489 баллов MAE, что входит в 5% лучших в таблице лидеров испытания.

14. Финальный конвейер проблемы

  • Входные данные: в качестве входных данных мы даем файл .csv, содержащий значения акустического сигнала.


  • Вывод:оставшееся время до следующего землетрясения в сек.

Модель развернута на локальном компьютере (видео)

Модель развернута на Streamlit ссылке,

https://share.streamlit.io/shivambaldha/earthquake-prediction/main/app.py

15. Заключение:

  1. Как мы видели в первом решении, у нас есть только один столбец, поэтому нам нужно сгенерировать больше функций, чтобы предсказать целевые значения.
  2. Мы увидели, что новая функция, созданная на основе статистических значений, очень помогла улучшить наши MAE и MAPE, например, средние значения, медианы, процентили.
  3. Чтобы улучшить оценку MAE и MAPE, мы придумали новые функции, основанные на изображениях и частотах.
  4. Правильная настройка гиперпараметров также играет важную роль в улучшении MAE.
  5. Можно сказать, что ансамблевая модель LGBM-регрессора лучше подходит для решения этой задачи.

16. Будущая работа:

  1. Добавление новых функций в модель и если мы больше сосредоточимся на функции изображения спектрограммы, могут улучшить оценку MAE.
  2. Если каким-то образом мы сможем использовать одномерную модель на основе временных рядов для создания большего количества функций, это поможет улучшить оценку.
  3. Используя технику глубокого обучения, мы можем улучшить оценку MAE.

17. Ссылки:

  1. https://www.appliedaicourse.com/
  2. https://www.pnas.org/doi/10.1073/pnas.2011362118
  3. https://medium.com/@saivenkat_/a-detailed-case-study-on-lanl-earthquake-prediction-using-machine-learning-algorithms-beginner-to-9b38ef270887
  4. https://medium.com/@ph_singer/1st-place-in-kaggle-lanl-earthquakeprediction-competition-15a1137c2457
  5. https://www.youtube.com/watch?time_continue=228&v=s8Q_orF4tcI&feature =emb_title
  6. https://www.analyticsvidhya.com/blog/2019/12/6-powerful-featureengineering-techniques-time-series/
  7. https://www.ncbi.nlm.nih.gov/pmc/articles/PMC7435601/ Здесь в этой статье объясняются различные типы функций, и одна из них является статистической функцией.
  8. https://www.kaggle.com/code/thebrownviking20/everything-you-can-do-with-a-time-series/notebook В этом блоге объясняются все типы методов временных рядов.
  9. https://share.streamlit.io/ используйте для развертывания модели.

18. Репозиторий GitHub



Профиль LinkedIn

Вот и все…