Предпосылки и данные

Недавно Метеорологическое бюро, исторически очень ориентированная на данные и богатая данными организация, инвестировало средства в дальнейшее развитие использования передовых технологий обработки и анализа данных, включая машинное обучение, путем разработки проектов в масштабах всей организации для развития навыков и информирования о выборе инфраструктуры в будущем. Лаборатория информатики участвовала в таком проекте, чтобы заполнить недостающие метаданные в наборе климатических данных измерений температуры океана. Эти измерения производятся с помощью датчиков Expendable BathyThermograph (XBT), которые собираются с 1960-х годов. Поправки на статистическую погрешность являются важной частью процесса включения этих измерений в набор данных о температуре океана, подготовленный Метеорологическим бюро (например, EN4 https://www.metoffice.gov.uk/hadobs/en4/), но эти полагаться на метаданные, определяющие тип зондирования, создавшего отчетный профиль. Отсутствующие метаданные увеличивают неопределенность результирующего набора данных, поэтому цель этого проекта - заполнить недостающие метаданные, чтобы уменьшить неопределенность.

Вторичные мотивы включают демонстрацию ценности и повышение осведомленности о методах обработки и анализа данных и машинного обучения в науках о климате среди исследователей предметной области. Кроме того, хотя это реальное приложение значительного размера и сложности, оно определенно не относится к сфере действительно больших данных, поскольку для обучения и оценки примерно 2 миллионов наблюдений (размер файла ~ 25 ГБ) не требуются большие вычислительные ресурсы. , что делает его хорошим тестовым примером для оценки удобства использования различных инструментов и платформ как внутри компании, так и в облачных сервисах. Это проверило пригодность доступных в настоящее время инструментов для последующих проектов и будет использоваться в будущих инструментах, поэтому стандартные методы обработки и анализа данных и машинного обучения являются частью стандартного набора инструментов ученых Метеорологического бюро.

Исходными данными для этого проекта является база данных температурных профилей XBT и связанных метаданных. Эти данные находятся в свободном доступе из Базы данных Мирового океана (WOD https://www.ncei.noaa.gov/products/world-ocean-database), поэтому вместе с кодами с открытым исходным кодом, включая конфигурации экспериментов, основанные на открытых исходные библиотеки, работающие в общедоступном облаке, ключевая цель проекта - стать примером передовой практики для открытого воспроизводимого проекта машинного обучения.

Обзор решения

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

Имеется примерно 2,2 миллиона точек данных (каждая представляет собой температурный профиль со связанными метаданными). Из них около 1 миллиона помечены, что означает, что метаданные включают тип зонда. Цель состоит в том, чтобы обучить и оценить классификатор с использованием помеченных данных, а затем создать классификации типов зондов для немаркированных данных. Особой проблемой с этим набором данных является дисбаланс между различными классами типов датчиков, показанных на рисунке 1. Хотя в наборе данных около 20 типов датчиков, из помеченных данных ~ 80% профилей принадлежат к трем преобладающим типам. Это необходимо учитывать при планировании эксперимента.

Эта работа основана на предыдущей работе, во-первых, на эвристическом алгоритме под названием Intelligent Metadata (iMeta), который выбирает тип зонда на основе пороговых значений и значений в определенных полях на основе статистического анализа, который использует дисбаланс классов. По сути, это дерево решений, настроенное вручную. Второй частью работы была первая попытка использовать машинное обучение для решения этой проблемы с использованием нейронной сети. Эта работа построена на использованных там подходах. Воспроизведя результаты этой работы, я расширил подход дерева решений, используя стандартное дерево решений машинного обучения, которое учится на данных, а не одно, использующее пороговые значения, заданные человеком. Хорошие результаты ручного использования дерева подсказали, что это хорошая отправная точка. Другие преимущества этого перед более мощным алгоритмом включают скорость обучения и объяснимость результатов, так как фактические используемые пороговые значения могут быть извлечены и опрошены, чтобы понять, почему была выведена классификация.

На рисунке 2 показан поток данных через конвейер эксперимента. Соответствующие данные для этого проекта извлекаются из необработанных файлов NetCDF, загруженных из WOD. Мы используем стандартную библиотеку табличных данных Pandas для хранения и обработки данных. Мы тщательно разбиваем данные на наборы для обучения / тестирования / разработки. Например, каждый профиль взят из круиза, который представляет собой рейс одного судна, в котором обычно снимались несколько температурных профилей. Изучив первоначальные данные, мы обнаружили, что для некоторых профилей без меток они были получены из круиза, в котором некоторые из профилей были помечены. Это делает вероятным, что немаркированные профили имеют один и тот же тип зонда (но не обязательно). Другие немаркированные профили взяты из круизов, для которых нет профилей с метаданными типа зонда. Другое обучение и оценка должны учитывать оба случая, чтобы успешно произвести классификации для немаркированных профилей.

До сих пор мы в основном использовали scikit-learn для машинного обучения, в основном из-за простоты начала работы и разнообразия доступных алгоритмов. API scikit-learn упрощает использование многих подходов. Выходные данные системы:

  1. Классификация типов зондов для всех профилей
  • Для помеченных данных это используется для расчета показателей производительности. Мы используем стандартный F1, точность и отзыв, чтобы оценивать результаты, в первую очередь, используя отзыв для согласованности с предыдущей работой.
  • Для немаркированных данных это будет использоваться для информирования последующего производства наборов данных. В некоторых случаях классификатор не может дать прогноз, и мы прибегаем к iMeta.

2. Показатели для помеченных данных.

3. Обученный классификатор на ансамбле классификаторов.

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

Выводы, уроки и следующие шаги

Эта структура была реализована в Python, построенном на основе стандартных инструментов, таких как Pandas и Scikit-Learn. Используя этот конвейер, мы обучили, оценили и выбрали алгоритм машинного обучения, который повышает точность классификации помеченных данных. Несмотря на опробование нескольких типов алгоритмов, лучший результат был для дерева решений, достигнув значения отзыва 0,94 по сравнению с 0,75 для iMeta и 0,85 для предыдущего подхода нейронной сети. На рисунке 3 показано, что все еще есть возможности для дальнейшего анализа неправильно классифицированных профилей, чтобы увидеть, можно ли улучшить результаты для типов зондов с низким уровнем поддержки (то есть тех, у которых мало точек данных) и, таким образом, повысить общую точность. Эти результаты в настоящее время записываются в научную статью для более подробного описания исследования данных, разработки решения и результатов.

Одной из ключевых проблем во всех проектах является хорошее общение и координация, но это особенно важно в проектах Data Science, где обычно существует разрыв между экспертами в предметной области (например, климатологами) и исследователями машинного обучения. Регулярное общение для развития понимания требований и ожиданий каждой группы было важным для достижения прогресса. Это было особенно сложно в 2020 году, когда импровизированные беседы с кулером или парное программирование перед одним и тем же компьютером были невозможны!

Он был протестирован в трех вычислительных средах: внутренний кластер Met Office Linux в SPICE, облачная платформа на базе Pangeo Jupyter и с использованием службы Azure Machine Learning Studio от Microsoft. Источник был разработан для облегчения использования различных библиотек (например, PyTorch, XGBoost) и платформ (например, AWS Sagemaker), поэтому эта проблема может быть тестовым примером для оценки каждой из них на основе таких требований, как простота начала работы или масштабируемость.

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

Репозиторий проекта и документация на GitHub

Https://github.com/MetOffice/XBTs_classification