Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Масштабная разработка функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler

Машинное обучение (МО) меняет многие отрасли с беспрецедентной скоростью. В последние годы индустрия здравоохранения и наук о жизни (HCLS) переживает стремительную эволюцию, охватывая ML во множестве вариантов использования для оказания качественной помощи и улучшения результатов лечения пациентов.

В типичном жизненном цикле машинного обучения инженеры данных и ученые тратят большую часть своего времени на этапы подготовки данных и разработки функций, прежде чем даже приступить к процессу построения модели и обучения. Наличие инструмента, который может снизить входной барьер для подготовки данных, тем самым повысив производительность, является очень желательным запросом для этих персон. Обработчик данных Amazon SageMaker специально разработан AWS для сокращения кривой обучения и предоставления специалистам по работе с данными возможности выполнять подготовку данных, очистку и инженерные задачи с меньшими усилиями и временем. Он предлагает графический интерфейс со многими встроенными функциями и интеграцией с другими сервисами AWS, такими как Простой сервис хранения Amazon (Amazon S3) и Магазин функций Amazon SageMaker, а также партнерские источники данных, включая Snowflake и Databricks.

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

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

Решение состоит из следующих шагов:

  1. Получите набор медицинских данных в качестве входных данных для Data Wrangler.
  2. Используйте встроенные функции преобразования Data Wrangler для преобразования набора данных. Это включает в себя удаление столбцов, характеристику данных/времени, объединение наборов данных, вменение отсутствующих значений, кодирование категориальных переменных, масштабирование числовых значений, балансировку набора данных и многое другое.
  3. Используйте настраиваемую функцию преобразования Data Wrangler (код Pandas или PySpark), чтобы дополнить дополнительные преобразования, необходимые помимо встроенных преобразований, и продемонстрировать расширяемость Data Wrangler. Это включает в себя фильтрацию строк, группировку данных, формирование новых фреймов данных на основе условий и многое другое.
  4. Используйте встроенные функции визуализации Data Wrangler для визуального анализа. Это включает целевую утечку, корреляцию функций, быструю модель и многое другое.
  5. Используйте встроенные параметры экспорта Data Wrangler, чтобы экспортировать преобразованный набор данных в Amazon S3.
  6. Запустите блокнот Jupyter, чтобы использовать преобразованный набор данных в Amazon S3 в качестве входных данных для обучения модели.

Создать набор данных

Теперь, когда мы определились с постановкой задачи машинного обучения, мы сначала нацелимся на получение необходимых нам данных. Научные исследования, такие как Прогноз сердечной недостаточности может предоставлять данные, которые уже находятся в хорошей форме. Однако мы часто сталкиваемся со сценариями, когда данные довольно беспорядочны и требуют объединения, очистки и некоторых других преобразований, которые очень специфичны для области здравоохранения, прежде чем их можно будет использовать для обучения машинному обучению. Мы хотим найти или сгенерировать данные, которые достаточно беспорядочны, и провести вас через шаги по их подготовке с помощью Data Wrangler. Имея это в виду, мы выбрали Synthea в качестве инструмента для создания синтетических данных, соответствующих нашей цели. Синтея — это генератор синтетических пациентов с открытым исходным кодом, который моделирует историю болезни синтетических пациентов. Чтобы сгенерировать набор данных, выполните следующие шаги:

  1. Следуйте инструкциям согласно быстрый старт документацию для создания Студия Amazon SageMaker домен и запустите Studio.
    Это обязательный шаг. Это необязательно, если Studio уже настроена в вашей учетной записи.
  2. После запуска Studio на гранатомет , выберите Системный терминал.
    Это запускает сеанс терминала, который дает вам интерфейс командной строки для работы.
  3. Чтобы установить Synthea и сгенерировать набор данных в формате CSV, выполните следующие команды в запущенной терминальной сессии:
    $ sudo yum install -y java-1.8.0-openjdk-devel
    $ export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk.x86_64
    $ export PATH=$JAVA_HOME/bin:$PATH
    $ git clone https://github.com/synthetichealth/synthea
    $ git checkout v3.0.0
    $ cd synthea
    $ ./run_synthea --exporter.csv.export=true -p 10000

Мы предоставляем параметр для создания наборов данных с численностью населения 10,000 XNUMX человек. Обратите внимание, что параметр размера обозначает количество живых членов популяции. Кроме того, Synthea также генерирует данные для умерших членов популяции, что может добавить несколько дополнительных точек данных к указанному размеру выборки.

Дождитесь завершения генерации данных. Этот шаг обычно занимает около часа или меньше. Synthea генерирует несколько наборов данных, в том числе patients, medications, allergies, conditions, и более. Для этого поста мы используем три из полученных наборов данных:

  • пациенты.csv – Этот набор данных имеет размер около 3.2 МБ и содержит примерно 11,000 25 строк данных о пациентах (XNUMX столбцов, включая идентификатор пациента, дату рождения, пол, адрес и т. д.).
  • условия.csv – Этот набор данных имеет размер около 47 МБ и содержит примерно 370,000 XNUMX строк данных о состоянии здоровья (шесть столбцов, включая идентификатор пациента, дату начала состояния, код состояния и т. д.).
  • наблюдения.csv – Этот набор данных составляет около 830 МБ и содержит примерно 5 миллионов строк данных наблюдения (восемь столбцов, включая идентификатор пациента, дату наблюдения, код наблюдения, значение и т. д.).

Между ними существует связь «один ко многим». patients и conditions наборы данных. Существует также связь «один ко многим» между patients и observations наборы данных. Подробный словарь данных см. Словарь данных файла CSV.

  1. Чтобы загрузить сгенерированные наборы данных в исходную корзину в Amazon S3, выполните следующие команды в сеансе терминала:
    $ cd ./output/csv
    $ aws s3 sync . s3://<source bucket name>/

Запустить обработчик данных

Выберите Ресурсы SageMaker на странице навигации в Студии и на Проекты Меню, выберите Обработчик данных для создания потока данных Data Wrangler. Подробные инструкции по запуску Data Wrangler из Studio см. Начать работу с Data Wrangler.

Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Даты импорта

Чтобы импортировать данные, выполните следующие действия:

  1. Выберите Amazon S3 и найдите файлpatient.csv в корзине S3.
  2. В Подробнее панель, выберите Первый К для Отбор проб.
  3. Enter 1100 для Размер образца.
    На панели предварительного просмотра Data Wrangler извлекает первые 100 строк из набора данных и перечисляет их в качестве предварительного просмотра.
  4. Выберите Импортировать.
    Data Wrangler выбирает первых 1,100 пациентов из общего числа пациентов (11,000 XNUMX строк), созданных Synthea, и импортирует данные. Метод выборки позволяет Data Wrangler обрабатывать только выборочные данные. Это позволяет нам развивать наш поток данных с меньшим набором данных, что приводит к более быстрой обработке и более короткому циклу обратной связи. После того, как мы создадим поток данных, мы можем отправить разработанный рецепт в Обработка SageMaker задание для горизонтального масштабирования обработки для полного или большего набора данных распределенным способом.
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
  5. Повторите этот процесс для conditions и observations наборы данных.
    1. Для того, чтобы получить conditions набор данных, введите 37000 для Размер образца, что составляет 1/10 от общего числа 370,000 XNUMX строк, созданных Synthea.
    2. Для того, чтобы получить observations набор данных, введите 500000 для Размер образца, что составляет 1/10 от общего количества наблюдений 5 миллионов строк, сгенерированных Synthea.

Вы должны увидеть три набора данных, как показано на следующем снимке экрана.

Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Преобразуйте данные

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

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

Удалить столбцы в пациентах.csv

Сначала мы удаляем несколько столбцов из patients набор данных. Удаление избыточных столбцов удаляет ненужную информацию из набора данных и помогает нам сократить количество вычислительных ресурсов, необходимых для обработки набора данных и обучения модели. В этом разделе мы опускаем такие столбцы, как SSN или номер паспорта, исходя из здравого смысла, что эти столбцы не имеют прогностического значения. Другими словами, они не помогают нашей модели предсказывать сердечную недостаточность. Наше исследование также не касается других столбцов, таких как место рождения или влияние расходов на здравоохранение на сердечную недостаточность пациента, поэтому мы их тоже опускаем. Избыточные столбцы также можно определить, запустив встроенные анализы, такие как целевая утечка, корреляция признаков, мультиколлинеарность и т. д., которые встроены в Data Wrangler. Дополнительные сведения о поддерживаемых типах анализов см. Анализируйте и визуализируйте. Кроме того, вы можете использовать Отчет о качестве данных и аналитических данных выполнять автоматический анализ наборов данных, чтобы получить список избыточных столбцов, которые необходимо удалить.

  1. Выберите знак плюс рядом с Типы данных для набора данныхpatients.csv и выберите Добавить преобразование.
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
  2. Выберите Добавить шаг , а затем выбрать Управление столбцами.
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
  3. Что касается Transformвыберите Удалить столбец.
  4. Что касается Столбцы для удаления, выберите следующие столбцы:
    1. SSN
    2. DRIVERS
    3. PASSPORT
    4. PREFIX
    5. FIRST
    6. LAST
    7. SUFFIX
    8. MAIDEN
    9. RACE
    10. ETHNICITY
    11. BIRTHPLACE
    12. ADDRESS
    13. CITY
    14. STATE
    15. COUNTY
    16. ZIP
    17. LAT
    18. LON
    19. HEALTHCARE_EXPENSES
    20. HEALTHCARE_COVERAGE
  5. Выберите предварительный просмотр чтобы просмотреть преобразованный набор данных, затем выберите Добавить.
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
    Вы должны увидеть шаг Удалить столбец в вашем списке преобразований.
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Добавление даты/времени в файлpatients.csv

Теперь мы используем функцию даты/времени Featurize для создания новой функции. Year из BIRTHDATE столбца в patients набор данных. Мы используем новую функцию на следующем этапе для расчета возраста пациента на момент наблюдения.

  1. В Трансформации панель вашего Удалить столбец страница для patients набор данных, выберите Добавить шаг.
  2. Выберите Дата/время преобразования.
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
  3. Выберите Извлечь столбцы.
  4. Что касается Входные столбцы, добавить столбец BIRTHDATE.
  5. Выберите Год и отмените выбор Месяц, день, час, Минута, Во-вторых.
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
  6. Выберите предварительный просмотр, а затем выберите Добавить.

Добавьте преобразования вObserving.csv

Data Wrangler поддерживает пользовательские преобразования с использованием Python (определяемые пользователем функции), PySpark, Pandas или PySpark (SQL). Вы можете выбрать тип преобразования на основе вашего знакомства с каждым параметром и предпочтениями. Для последних трех вариантов Data Wrangler предоставляет переменную df для вас, чтобы получить доступ к кадру данных и применить к нему преобразования. Подробное объяснение и примеры см. Пользовательские преобразования. В этом разделе мы добавим три пользовательских преобразования в observations набор данных.

  1. Добавьте преобразование в файлObservations.csv и поместите DESCRIPTION колонка.
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
  2. Выберите предварительный просмотр, а затем выберите Добавить.
  3. В Трансформации панель, выберите Добавить шаг , а затем выбрать Пользовательское преобразование.
  4. В раскрывающемся меню выберите Python (панды).
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
  5. Введите следующий код:
    df = df[df["CODE"].isin(['8867-4','8480-6','8462-4','39156-5','777-3'])]

    Это коды LONIC, которые соответствуют следующим наблюдениям, которые нам интересно использовать в качестве признаков для прогнозирования сердечной недостаточности:

    heart rate: 8867-4
    systolic blood pressure: 8480-6
    diastolic blood pressure: 8462-4
    body mass index (BMI): 39156-5
    platelets [#/volume] in Blood: 777-3

  6. Выберите предварительный просмотр, а затем выберите Добавить.
  7. Добавьте преобразование для извлечения Year и Quarter из DATE колонка.
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
  8. Выберите предварительный просмотр, а затем выберите Добавить.
  9. Выберите Добавить шаг , а затем выбрать Пользовательское преобразование.
  10. В раскрывающемся меню выберите Питон (PySpark).
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
    Пять типов наблюдений не всегда могут быть записаны в один и тот же день. Например, пациент может посетить своего семейного врача 21 января и измерить и записать систолическое артериальное давление, диастолическое артериальное давление, частоту сердечных сокращений и индекс массы тела. Однако лабораторный тест, включающий тромбоциты, может быть проведен позже, 2 февраля. Поэтому не всегда возможно объединить кадры данных к дате наблюдения. Здесь мы объединяем кадры данных с грубой детализацией на квартальной основе.
  11. Введите следующий код:
    from pyspark.sql.functions import col
    
    systolic_df = (
        df.select("patient", "DATE_year", "DATE_quarter", "value")
                       .withColumnRenamed("value", "systolic")
                       .filter((col("code") == "8480-6"))
      )
    
    diastolic_df = (
        df.select("patient", "DATE_year", "DATE_quarter", "value")
                       .withColumnRenamed('value', 'diastolic')
                       .filter((col("code") == "8462-4"))
        )
    
    hr_df = (
        df.select("patient", "DATE_year", "DATE_quarter", "value")
                       .withColumnRenamed('value', 'hr')
                       .filter((col("code") == "8867-4"))
        )
    
    bmi_df = (
        df.select("patient", "DATE_year", "DATE_quarter", "value")
                       .withColumnRenamed('value', 'bmi')
                       .filter((col("code") == "39156-5"))
        )
    
    platelets_df = (
        df.select("patient", "DATE_year", "DATE_quarter", "value")
                       .withColumnRenamed('value', 'platelets')
                       .filter((col("code") == "777-3"))
        )
    
    df = (
        systolic_df.join(diastolic_df, ["patient", "DATE_year", "DATE_quarter"])
                                .join(hr_df, ["patient", "DATE_year", "DATE_quarter"])
                                .join(bmi_df, ["patient", "DATE_year", "DATE_quarter"])
                                .join(platelets_df, ["patient", "DATE_year", "DATE_quarter"])
    )

  12. Выберите предварительный просмотр, а затем выберите Добавить.
  13. Выберите Добавить шаг, а затем выберите Управление строками.
  14. Что касается Transform, выберите Удалить дубликаты.
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
  15. Выберите предварительный просмотр, а затем выберите Добавить.
  16. Выберите Добавить шаг , а затем выбрать Пользовательское преобразование.
  17. В раскрывающемся меню выберите Python (панды).
  18. Введите следующий код, чтобы получить среднее значение точек данных с одинаковым значением времени:
    import pandas as pd
    df.loc[:, df.columns != 'patient']=df.loc[:, df.columns != 'patient'].apply(pd.to_numeric)
    df = df.groupby(['patient','DATE_year','DATE_quarter']).mean().round(0).reset_index()

  19. Выберите предварительный просмотр, а затем выберите Добавить.
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Присоединяйтесь к файлам пациентов.csv иObservations.csv

На этом этапе мы покажем, как эффективно и легко выполнять сложные объединения наборов данных без написания кода с помощью мощного пользовательского интерфейса Data Wrangler. Чтобы узнать больше о поддерживаемых типах соединений, см. Преобразовать данные.

  1. Справа от Преобразование:patients.csv, выберите знак плюса рядом с Шаги , а затем выбрать Присоединиться.
    Вы можете увидеть преобразованный файлpatients.csv, указанный в разделе Datasets в левой панели.
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
  2. Справа от Преобразование: наблюдения.csv, нажмите на Шаги чтобы инициировать операцию соединения.
    Преобразованный файлObservations.csv теперь указан в разделе Datasets в левой панели.
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
  3. Выберите Настроить.
  4. Что касается Тип соединения, выберите Внутренний.
  5. Что касается левый, выберите Id.
  6. Что касается Правильно, выберите пациент.
  7. Выберите предварительный просмотр, а затем выберите Добавить.
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Добавьте пользовательское преобразование в объединенные наборы данных

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

  1. Выберите знак плюс рядом с 1-е место , а затем выбрать Добавить преобразование.
  2. Добавьте пользовательское преобразование в Pandas:
    df['age'] = df['DATE_year'] - df['BIRTHDATE_year']
    df = df.drop(columns=['BIRTHDATE','DEATHDATE','BIRTHDATE_year','patient'])

  3. Выберите предварительный просмотр, а затем выберите Добавить.

Добавьте пользовательские преобразования в Conditions.csv

  1. Выберите знак плюс рядом с Преобразование:conditions.csv , а затем выбрать Добавить преобразование.
  2. Добавьте пользовательское преобразование в Pandas:
    df = df[df["CODE"].isin(['84114007', '88805009', '59621000', '44054006', '53741008', '449868002', '49436004'])]
    df = df.drop(columns=['DESCRIPTION','ENCOUNTER','STOP'])

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

Коды в предыдущем преобразовании являются кодами SNOMED-CT, которые соответствуют следующим условиям. heart failure or chronic congestive heart failure условие становится ярлыком. Мы используем оставшиеся условия в качестве признаков для прогнозирования сердечной недостаточности. Мы также удаляем несколько столбцов, которые больше не нужны.

Heart failure: 84114007
Chronic congestive heart failure: 88805009
Hypertension: 59621000
Diabetes: 44054006
Coronary Heart Disease: 53741008
Smokes tobacco daily: 449868002
Atrial Fibrillation: 49436004

  1. Далее добавим пользовательское преобразование в PySpark:
    from pyspark.sql.functions import col, when
    
    heartfailure_df = (
        df.select("patient", "start")
                          .withColumnRenamed("start", "heartfailure")
                       .filter((col("code") == "84114007") | (col("code") == "88805009"))
      )
    
    hypertension_df = (
        df.select("patient", "start")
                       .withColumnRenamed("start", "hypertension")
                       .filter((col("code") == "59621000"))
      )
    
    diabetes_df = (
        df.select("patient", "start")
                       .withColumnRenamed("start", "diabetes")
                       .filter((col("code") == "44054006"))
      )
    
    coronary_df = (
        df.select("patient", "start")
                       .withColumnRenamed("start", "coronary")
                       .filter((col("code") == "53741008"))
      )
    
    smoke_df = (
        df.select("patient", "start")
                       .withColumnRenamed("start", "smoke")
                       .filter((col("code") == "449868002"))
      )
    
    atrial_df = (
        df.select("patient", "start")
                       .withColumnRenamed("start", "atrial")
                       .filter((col("code") == "49436004"))
      )
    
    df = (
        heartfailure_df.join(hypertension_df, ["patient"], "leftouter").withColumn("has_hypertension", when(col("hypertension") < col("heartfailure"), 1).otherwise(0))
        .join(diabetes_df, ["patient"], "leftouter").withColumn("has_diabetes", when(col("diabetes") < col("heartfailure"), 1).otherwise(0))
        .join(coronary_df, ["patient"], "leftouter").withColumn("has_coronary", when(col("coronary") < col("heartfailure"), 1).otherwise(0))
        .join(smoke_df, ["patient"], "leftouter").withColumn("has_smoke", when(col("smoke") < col("heartfailure"), 1).otherwise(0))
        .join(atrial_df, ["patient"], "leftouter").withColumn("has_atrial", when(col("atrial") < col("heartfailure"), 1).otherwise(0))
    )

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

  2. Добавить встроенный Управление столбцами transform, чтобы удалить лишние столбцы, которые больше не нужны:
    1. hypertension
    2. diabetes
    3. coronary
    4. smoke
    5. atrial
  3. Выписка Year и  Quarter из heartfailure колонка.
    Это соответствует степени детализации, которую мы использовали ранее при преобразовании observations набор данных.
  4. Всего у нас должно быть 6 шагов для condition.csv.
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Присоедините файлconditions.csv к объединенному набору данных.

Теперь мы выполняем новое соединение, чтобы присоединить набор данных условий к объединенному patients и observations набор данных.

  1. Выберите Преобразование: 1-е присоединение.
  2. Нажми плюсик и выбери Присоединиться.
  3. Выберите Шаги рядом с Преобразование:conditions.csv.
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
  4. Выберите Настроить.
  5. Что касается Тип соединения, выберите Левый внешний.
  6. Что касается левый, выберите Id.
  7. Что касается Правильно, выберите пациент.
  8. Выберите предварительный просмотр, а затем выберите Добавить.
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Добавьте преобразования в объединенные наборы данных

Теперь, когда мы объединили все три набора данных, давайте применим некоторые дополнительные преобразования.

  1. Добавьте следующее пользовательское преобразование в PySpark, чтобы has_heartfailure становится нашим столбцом меток:
    from pyspark.sql.functions import col, when
    df = (
        df.withColumn("has_heartfailure", when(col("heartfailure").isNotNull(), 1).otherwise(0))
    )

  2. Добавьте следующее пользовательское преобразование в PySpark:
    from pyspark.sql.functions import col
    
    df = (
        df.filter(
          (col("has_heartfailure") == 0) | 
          ((col("has_heartfailure") == 1) & ((col("date_year") <= col("heartfailure_year")) | ((col("date_year") == col("heartfailure_year")) & (col("date_quarter") <= col("heartfailure_quarter")))))
        )
    )

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

  3. Отбросьте лишние столбцы, которые больше не нужны:
    1. Id
    2. DATE_year
    3. DATE_quarter
    4. patient
    5. heartfailure
    6. heartfailure_year
    7. heartfailure_quarter
  4. На Анализ вкладка, для Тип анализавыберите Сводка таблицы.
    Беглый просмотр сводки показывает, что MARITAL в столбце отсутствуют данные.
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
  5. Выберите Данные вкладку и добавить шаг.
  6. Выберите Ручка отсутствует.
  7. Что касается Transform, выберите Заполнить недостающие.
  8. Что касается Входные столбцы, выберите СЕМЕЙНЫЙ.
  9. Что касается Значение заполнения, войти S.
    Наша стратегия здесь состоит в том, чтобы предположить, что пациент не женат, если семейное положение не имеет значения. У вас может быть другая стратегия.
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
  10. Выберите предварительный просмотр, а затем выберите Добавить.
  11. Заполните пропущенное значение как 0 для has_hypertension, has_diabetes, has_coronary, has_smoke, has_atrial.

Marital и Gender являются категориальными переменными. Data Wrangler имеет встроенную функцию для кодирования категориальных переменных.

  1. Добавьте шаг и выберите Кодировать категориальный.
  2. Что касается Transform, выберите Одно горячее кодирование.
  3. Что касается Входные столбцы, выберите СЕМЕЙНЫЙ.
  4. Что касается Стиль вывода, выберите Column.
    Этот стиль вывода создает закодированные значения в отдельных столбцах.
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
  5. Выберите предварительный просмотр, а затем выберите Добавить.
  6. Повторите эти шаги для пол колонка.

Горячее кодирование разбивает столбец «Семейный» на Marital_M (женат) и Marital_S (один) и разбивает столбец «Пол» на Gender_M (мужчина) и Gender_F (женский). Потому что Marital_M и Marital_S взаимоисключающие (как и Gender_M и Gender_F), мы можем удалить один столбец, чтобы избежать избыточных функций.

  1. Падение Marital_S и Gender_F.

Числовые характеристики, такие как систолическое давление, частота сердечных сокращений и возраст, имеют разные стандарты единиц измерения. Для модели, основанной на линейной регрессии, нам нужно сначала нормализовать эти числовые признаки. В противном случае некоторые функции с более высокими абсолютными значениями могут иметь неоправданное преимущество перед другими функциями с более низкими абсолютными значениями и привести к снижению производительности модели. Data Wrangler имеет встроенный масштабатор преобразования Min-Max для нормализации данных. Для модели классификации на основе дерева решений нормализация не требуется. Наше исследование представляет собой проблему классификации, поэтому нам не нужно применять нормализацию. Несбалансированные классы являются распространенной проблемой в классификации. Дисбаланс возникает, когда набор обучающих данных содержит сильно искаженное распределение классов. Например, когда наш набор данных содержит непропорционально больше пациентов без сердечной недостаточности, чем пациентов с сердечной недостаточностью, это может привести к тому, что модель будет смещена в сторону прогнозирования отсутствия сердечной недостаточности и будет работать плохо. Data Wrangler имеет встроенную функцию для решения этой проблемы.

  1. Добавьте пользовательское преобразование в Pandas, чтобы преобразовать тип данных столбцов из типа «объект» в числовой тип:
    import pandas as pd
    df=df.apply(pd.to_numeric)

  2. Выберите Анализ меню.
  3. Что касается Тип анализавыберите Гистограмма.
  4. Что касается Ось X, выберите has_heartfailure.
  5. Выберите предварительный просмотр.
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
    Очевидно, что у нас несбалансированный класс (больше точек данных, помеченных как отсутствие сердечной недостаточности, чем точек данных, помеченных как сердечная недостаточность).
  6. Вернитесь к Данные таб. выберите Добавить шаг , а затем выбрать Данные баланса.
  7. Что касается Целевой столбец, выберите has_heartfailure.
  8. Что касается Желаемое соотношение, войти 1.
  9. Что касается Transform, выберите Пронзила.
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
    SMOTE расшифровывается как Synthetic Minority Over-sampling Technique. Это метод создания новых экземпляров меньшинства и добавления их в набор данных для достижения баланса классов. Для получения подробной информации см. SMOTE: Синтетическая методика передискретизации меньшинств.
  10. Выберите предварительный просмотр, а затем выберите Добавить.
  11. Повторите анализ гистограммы в шагах 20-23. Результат - сбалансированный класс.
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Визуализируйте целевую утечку и корреляцию функций

Далее мы собираемся выполнить несколько визуальных анализов, используя богатый набор инструментов Data Wrangler для расширенных типов анализа, поддерживаемых ML. Во-первых, мы смотрим на целевую утечку. Целевая утечка происходит, когда данные в обучающем наборе данных сильно коррелируют с целевой меткой, но недоступны в реальных данных во время вывода.

  1. На Вкладка "Анализ", Для Тип анализавыберите Целевая утечка.
  2. Что касается Тип проблемы, выберите классификация.
  3. Что касается цель, выберите has_heartfailure.
  4. Выберите предварительный просмотр.
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
    На основании анализа, hr является целевой утечкой. Мы опустим его на следующем шаге. age помечен как целевая утечка. Разумно сказать, что возраст пациента будет доступен во время вывода, поэтому мы сохраняем возраст как характеристику. Systolic и diastolic также помечаются как вероятная целевая утечка. Мы ожидаем получить два измерения во время вывода, поэтому мы сохраняем их как признаки.
  5. Выберите Добавить добавить анализ.

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

  1. На Вкладка "Анализ", Для Тип анализавыберите Корреляция признаков.
  2. Что касается Тип корреляциивыберите линейный.
  3. Выберите предварительный просмотр.
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Показатели коэффициентов указывают на сильную корреляцию между следующими парами:

  • systolic и diastolic
  • bmi и age
  • has_hypertension и has_heartfailure (этикетка)

Для признаков, которые сильно коррелированы, матрицы сложно инвертировать с вычислительной точки зрения, что может привести к численно нестабильным оценкам. Чтобы смягчить корреляцию, мы можем просто удалить один из пары. Мы бросаем diastolic и bmi и сохранить systolic и age на последующем шаге.

Сбросить столбцы диастолы и ИМТ

Добавьте дополнительные шаги преобразования, чтобы удалить hr, diastolic и bmi столбцы с помощью встроенного преобразования.

Создание отчета о качестве данных и анализе

AWS недавно объявило новая функция Data Quality and Insights Report в Data Wrangler. Этот отчет автоматически проверяет качество данных и выявляет отклонения в ваших данных. Специалисты по данным и инженеры данных могут использовать этот инструмент для эффективного и быстрого применения знаний предметной области для обработки наборов данных для обучения модели машинного обучения. Этот шаг является необязательным. Чтобы создать этот отчет по нашим наборам данных, выполните следующие шаги:

  1. На Анализ вкладка, для Тип анализа, выберите Отчет о качестве данных и аналитических данных.
  2. Что касается Целевой столбец, выберите has_heartfailure.
  3. Что касается Тип проблемы, наведите на классификация.
  4. Выберите Создавай.
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Через несколько минут он генерирует отчет со сводкой, визуальными эффектами и рекомендациями.

Создание анализа быстрой модели

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

  1. На Анализ вкладка, для Тип анализавыберите Быстрая модель.
  2. Что касается этикетка, выберите has_heartfailure.
  3. Выберите предварительный просмотр.
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

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

Экспорт данных и обучение модели

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

  1. Щелкните знак «плюс» рядом с последним полем в потоке данных и выберите Добавить пункт назначения.
  2. Выберите Amazon S3.
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
  3. Введите Имя набора данных. Для Местоположение Амазон S3, выберите сегмент S3, затем выберите Добавить место назначения.
  4. Выберите Создать работу чтобы запустить распределенное задание обработки PySpark для выполнения преобразования и вывода данных в целевую корзину S3.
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
    В зависимости от размера наборов данных этот параметр позволяет легко настроить кластер и масштабировать его по горизонтали без кода. Нам не нужно беспокоиться о разделении наборов данных или управлении кластером и внутренними компонентами Spark. Обо всем этом автоматически позаботится Data Wrangler.
  5. На левой панели выберите Далее 2. Настройте задание.
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
  6. Затем выберите Run.
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

В качестве альтернативы мы также можем экспортировать преобразованный вывод в S3 через Jupyter Notebook. При таком подходе Data Wrangler автоматически создает блокнот Jupyter со всем кодом, необходимым для запуска задания обработки, чтобы применить шаги потока данных (созданные с использованием образца) к большому полному набору данных и использовать преобразованный набор данных в качестве функций для запуска. от обучения работу позже. Код записной книжки можно легко запустить с внесением изменений или без них. Давайте теперь рассмотрим шаги, как это сделать с помощью пользовательского интерфейса Data Wrangler.

  1. Выберите знак «плюс» рядом с последним шагом в потоке данных и выберите Экспорт в.
  2. Выберите Amazon S3 (через блокнот Jupyter).
    Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
  3. Он автоматически открывает новую вкладку с блокнотом Jupyter.
  4. В блокноте Jupyter найдите ячейку в (Необязательно) Следующие шаги раздел и изменить run_optional_steps от False в True.
    Включенные необязательные шаги в записной книжке выполняют следующие действия:
    • Обучите модель с помощью XGBoost
      Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.
  5. Вернитесь к началу блокнота и на Run Меню, выберите Запустить все ячейки.

Если вы используете сгенерированный блокнот как есть, он запускает задание обработки SageMaker, которое масштабирует обработку между двумя экземплярами m5.4xlarge для обработки полного набора данных в корзине S3. Вы можете настроить количество экземпляров и типы экземпляров в зависимости от размера набора данных и времени, необходимого для выполнения задания.

Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

Дождитесь завершения обучающего задания из последней ячейки. Он создает модель в корзине S3 SageMaker по умолчанию.

Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.

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

Вы также можете напрямую экспортировать преобразованный набор данных в Amazon S3, выбрав Экспортировать в верхней части страницы предварительного просмотра преобразования. Опция прямого экспорта экспортирует преобразованный образец только в том случае, если выборка была включена во время импорта. Этот вариант лучше всего подходит, если вы имеете дело с небольшими наборами данных. Преобразованные данные также могут быть загружены непосредственно в хранилище функций. Для получения дополнительной информации см. Магазин функций Amazon SageMaker. Поток данных также можно экспортировать в виде конвейера SageMaker, который можно организовать и запланировать в соответствии с вашими требованиями. Для получения дополнительной информации см. Конвейеры Amazon SageMaker.

Заключение

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

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


Об авторах

Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Форрест Сан — старший архитектор решений в команде AWS Public Sector в Торонто, Канада. Последние два десятилетия он работал в сфере здравоохранения и финансов. Вне работы он любит отдыхать с семьей.

Масштабное проектирование функций для здравоохранения и медико-биологических наук с помощью Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальный поиск. Ай.Арунпрасат Шанкар является специалистом по архитектуре решений в области искусственного интеллекта и машинного обучения (AI / ML) в AWS, помогая клиентам во всем мире эффективно масштабировать свои решения AI в облаке. В свободное время Арун любит смотреть научно-фантастические фильмы и слушать классическую музыку.

Отметка времени:

Больше от Машинное обучение AWS