Использование набора данных NOAA GOES-R GLM
Введение
В этом посте я выполняю исследовательский анализ данных(EDA), применяя алгоритм кластеризации k-средних к набору данных, содержащему геопространственные координаты событий вспышки молнии. . Затем я организую этот процесс в конвейере операций машинного обучения, ежечасно производя активы кластеров молнии. Разработанный мной конвейер кластеризации молнии можно разделить на два этапа:
- Прием данных
- Кластерный анализ
В части приема данных я собираю необходимые координаты широты и долготы, извлекая, преобразовывая и загружая данные NOAA GLM из AWS s3 в локальную постоянную DuckDB. В кластерном анализе я сначала предварительно обрабатываю собранные данные, затем генерирую кластерную характеристику, подгоняя данные к алгоритму k-средних, и, наконец, я оцениваю коэффициент количества кластеров с помощью метрики коэффициента силуэта. После создания этого процесса я организую этот процесс, планируя почасовые запуски материализованного EDA с кластеризацией k-средних, используя программно-определяемые активы Dagster.
Для этого проекта я добавил репозиторий здесь, в него входят активы данных для пайплайнов и блокнот EDA.
Цели:
- Подготовьте набор данных пространственных координат с историческими наблюдениями за молниями.
- Создавайте и оценивайте простые модели кластеризации на Python с помощью scikit-learn.
- Организуйте и материализуйте конвейер машинного обучения на основе кластерного анализа.
Прием данных
На этапе приема данных я собираю данные, необходимые для кластерного анализа. Я использую материализованный процесс ETL для преобразования файлов NetCDF в наборы геопространственных данных, широты и долготы. Эти преобразованные данные загружаются в локальный экземпляр DuckDB. Этот конкретный процесс позволяет собирать данные на основе указанного временного интервала, т. е. даты начала и окончания. Начиная с начального временного интервала, шаг извлечения загружает многомерные файлы netCDF из соответствующей корзины s3. Следующий шаг, преобразование, преобразует файлы в CSV-файлы широты и долготы. Последний шаг, загрузка, вставляет файлы широты и долготы в локальный экземпляр duckdb.
Кластерный анализ
Метод k-средних — это процесс неконтролируемого машинного обучения, используемый для разбиения или группировки данных в «кластеры» на основе их сходства. K-means использует алгоритм на основе центроида, чтобы минимизировать дисперсию точек в кластере. Хотя существуют и другие типы алгоритмов кластеризации, основанные на плотности, иерархии и распределении, метод K-средних является одним из самых простых в реализации и имеет различные практические приложения, такие как сегментация клиентов, кластеризация документов и социальные сети. Обычно он используется в качестве промежуточного шага в конвейере машинного обучения.
Выполнение
Для реализации я разработал Jupyter Notebook, блокнот, по сути, выполняет компонент EDA на указанном тестовом наборе данных. Части блокнота: библиотеки импорта, загрузка данных, предварительная обработка, кластеризация, оценки и построение графиков. Я коснусь некоторых основных частей:
Предварительная обработка: подготавливает данные для соответствия модели, в основном очистка данных и необходимая нормализация. Я запускаю пару преобразований, таких как объединение и удаление дубликатов, с помощью библиотеки pandas. Этот процесс выводит DataFrame с индексированным временем, широтой и долготой, которые затем вводятся на следующем шаге.
Clustering: реализует алгоритм кластеризации k-средних из scikit-learn на подобранных данных, в результате чего точки данных сгруппированы на основе входных данных n_clusters для 'k', другие важными параметрами являются max_iter, которые указывают, сколько алгоритмических итераций необходимо выполнить. В моей реализации события вспышек группируются на основе близости, потому что рассматриваемые данные, широта и координаты долготы наблюдений вспышек молнии являются пространственными. Этот процесс выводит DataFrame с индексированным временем, широтой, долготой и группой кластера.
Оценка: коэффициент силуэта оценивает выбор «k» количества кластеров с использованием метрики оценки силуэта Scikit-lean. Например, в блокноте я начал с k=12 кластеров, которые имели более высокий коэффициент в тестовых данных в диапазоне от 2 до 12, 4 и 6 также имели высокие коэффициенты. Использует метрику Scikit-learn Silhouette_score.
Метод локтя оценивает выбор «k» количества кластеров, использует метод Scikit-learn Kmeans inertia_. Это альтернативная оценка для расчета коэффициентов силуэта. Этот метод вычисляет сумму квадратов расстояний для каждого k, я не нашел эту оценку особенно полезной по сравнению с оценкой коэффициентов силуэта.
При сравнении методов оценки метод локтя дает четкую точку перегиба, которая может указывать на оптимум «k», аналогичные результаты показаны коэффициентами силуэта, хотя метод оценки силуэта также показывает более четкие локальные оптимумы кластеров «k». Именно здесь знание проблемной области, дополнительные данные и опыт проб и ошибок могут помочь в выборе метода оценки и выбора «k» кластеров.
Построение графика: здесь я создаю графики кластеризации и наношу кластеры в системе отсчета и координат, чтобы наложить их на карту (мира). Затем я объединяю каждую почасовую карту скоплений в отрезок времени (png -> gif), изображающий грубую карту движения скоплений молний с географической привязкой.
Оркестровка
Активы данных кластерного анализа в дополнение к существующим активам приема данных образуют основу конвейера кластеризации Lightning, который можно организовать для запуска по мере необходимости, т. е. ежечасно, ежедневно или по мере необходимости.
Почасовая материализация конвейера кластеризации молнии выглядит следующим образом:
1. загрузчик загружает, преобразует и загружает данные молниеносных геопространственных точек из последнего часового сегмента.
2. препроцессор выполняет некоторую очистку и нормализацию данных.
3. модель kmeans_cluster группирует точки данных на основе предварительно настроенного 'k',это значение либо по умолчанию, либо настроено оценщиком.
4. silhouette_evaluator устанавливает локально оптимальный кластер ‘k’ из указанного диапазона и полученных данных.
Что дальше?
Поскольку кластерный анализ методом k-средних представляет собой неконтролируемое машинное обучение, для оценки производительности не существует достоверных данных. Другие типы оценок, помимо оценок силуэта и колена, все еще могут выполняться путем сравнения результатов других алгоритмов кластеризации, таких как DBScan, Mini-Batch K-means или спектральная кластеризация. С точки зрения операций машинного обучения следующим шагом также может быть передача кластеризованных данных ниже по течению другой модели, которая может делать некоторые прогнозы погоды или предсказания. Кластерный анализ молний также формирует основу для отслеживания других погодных явлений, таких как грозы, и для представления значимых визуализаций погоды и атмосферы.
Заключение
- Подготовьте набор данных пространственных координат с историческими наблюдениями за молниями.
- Создавайте и оценивайте простые модели кластеризации на Python с помощью scikit-learn.
- Организуйте и материализуйте конвейер машинного обучения на основе кластерного анализа.
В этом посте я показал, как подготовить набор данных геопространственных координат, состоящий из широты и долготы вспышек молнии. Этот набор данных формирует входные данные для модели кластеризации, разработанной в основном с использованием модулей Python scikit-learn. Модель кластеризации машинного обучения организована в конвейерное задание, которое запланировано ежечасно или запускается ситуативно, чтобы предоставить некоторые сведения или информацию о событиях молнии.
Рекомендации
Кластеризация K-средних в Python: практическое руководство
Введение в кластеризацию K-средних с помощью Sci-Kit Learn и