Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler

Машинне навчання (ML) руйнує багато галузей з безпрецедентною швидкістю. За останні роки індустрія охорони здоров’я та наук про життя (HCLS) швидко розвивалася, використовуючи ML у багатьох випадках використання для надання якісної медичної допомоги та покращення результатів лікування пацієнтів.

У типовому життєвому циклі машинного навчання інженери з обробки даних і науковці витрачають більшу частину свого часу на підготовку даних і етапи розробки функцій ще до початку процесу побудови моделі та навчання. Наявність інструменту, який може знизити бар’єр для підготовки даних, тим самим покращуючи продуктивність, є дуже бажаним запитом для цих персон. Amazon SageMaker Data Wrangler спеціально створений 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 як вхідні дані для навчання моделі.

Створіть набір даних

Тепер, коли ми зупинилися на постановці проблеми машинного навчання, ми спочатку націлилися на отримання необхідних нам даних. Дослідження, такі як Прогнозування серцевої недостатності може надати дані, які вже є в хорошому стані. Однак ми часто стикаємося зі сценаріями, коли дані досить заплутані й потребують об’єднання, очищення та кількох інших перетворень, які дуже специфічні для сфери охорони здоров’я, перш ніж їх можна буде використовувати для навчання ML. Ми хочемо знайти або згенерувати досить заплутані дані та проведемо вас через етапи їх підготовки за допомогою 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 рядків даних про медичний стан (шість стовпців, включаючи ідентифікатор пацієнта, дату початку стану, код захворювання тощо)
  • observations.csv – Цей набір даних становить близько 830 МБ і містить приблизно 5 мільйонів рядків даних спостереження (вісім стовпців, включаючи ідентифікатор пацієнта, дату спостереження, код спостереження, значення тощо)

Існує відношення один до багатьох між patients та conditions набори даних. Також існує зв’язок «один до багатьох». patients та observations набори даних. Докладний словник даних див Словник даних файлу CSV.

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

Запустіть Data Wrangler

Вибирати Ресурси SageMaker на сторінці навігації в Studio та на Завдання меню, виберіть Data Wrangler щоб створити потік даних Data Wrangler. Докладні кроки щодо запуску Data Wrangler із Studio див Почніть роботу з Data Wrangler.

Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Дати імпорту

Щоб імпортувати дані, виконайте такі дії:

  1. Вибирати Amazon S3 і знайдіть файл pacijenata.csv у сегменті S3.
  2. У ПОДРОБИЦІ панель, виберіть Перший К та цінності Вибірка.
  3. Що натомість? Створіть віртуальну версію себе у 1100 та цінності Обсяг вибірки.
    На панелі попереднього перегляду Data Wrangler витягує перші 100 рядків із набору даних і перераховує їх як попередній перегляд.
  4. Вибирати Імпортувати.
    Data Wrangler вибирає перших 1,100 пацієнтів із загальної кількості пацієнтів (11,000 XNUMX рядків), згенерованих Synthea, та імпортує дані. Вибірковий підхід дозволяє Data Wrangler обробляти лише вибіркові дані. Це дає нам змогу розвивати наш потік даних із меншим набором даних, що призводить до швидшої обробки та коротшого циклу зворотного зв’язку. Після створення потоку даних ми можемо надіслати розроблений рецепт до a Обробка SageMaker завдання горизонтального масштабування обробки для повного або більшого набору даних у розподіленому режимі.
    Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.
  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. Вертикальний пошук. Ai.

Перетворіть дані

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

Data Wrangler розроблено як інструмент із низьким кодом, щоб зменшити бар’єр входу для ефективної підготовки даних. Він поставляється з понад 300 попередньо налаштованими перетвореннями даних, які ви можете вибрати без написання жодного рядка коду. У наступних розділах ми побачимо, як перетворити імпортовані набори даних у Data Wrangler.

Витягніть стовпці у пацієнти.csv

Спочатку ми видаляємо кілька стовпців із patients набір даних. Видалення зайвих стовпців видаляє нерелевантну інформацію з набору даних і допомагає нам зменшити кількість обчислювальних ресурсів, необхідних для обробки набору даних і навчання моделі. У цьому розділі ми видаляємо такі стовпці, як SSN або номер паспорта, оскільки здоровий глузд вважає, що ці стовпці не мають прогностичного значення. Іншими словами, вони не допомагають нашій моделі передбачити серцеву недостатність. Наше дослідження також не турбується про інші стовпці, такі як місце народження або вплив витрат на охорону здоров’я на серцеву недостатність пацієнта, тому ми також відкидаємо їх. Зайві стовпці також можна ідентифікувати за допомогою вбудованих аналізів, таких як цільовий витік, кореляція ознак, мультиколінеарність тощо, які вбудовані в Data Wrangler. Докладніше про підтримувані типи аналізів див Аналізуйте та візуалізуйте. Крім того, ви можете використовувати Звіт про якість даних і статистику щоб виконати автоматичний аналіз наборів даних, щоб отримати список зайвих стовпців, які потрібно видалити.

  1. Виберіть знак плюс біля Типи даних для набору даних pacijenata.csv і виберіть Додати трансформацію.
    Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.
  2. Вибирати Додати крок І вибирай Керувати стовпцями.
    Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.
  3. для Перетворення¸ вибрати Колонка скидання.
  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. Вертикальний пошук. Ai.
    Ви повинні побачити крок Колонка скидання у вашому списку перетворень.
    Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Вкажіть дату/час у файлі pacijenata.csv

Тепер ми використовуємо функцію Featurize date/time для створення нової функції Year від BIRTHDATE у стовпці patients набір даних. Ми використовуємо нову функцію на наступному кроці, щоб обчислити вік пацієнта на момент спостереження.

  1. У Перетворює панель вашого Колонка скидання сторінка для patients набір даних, виберіть Додати крок.
  2. Виберіть Вкажіть дату/час трансформувати.
    Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.
  3. Вибирати Витягнути стовпці.
  4. для Вхідні стовпці, додайте стовпець BIRTHDATE.
  5. Select рік і скасувати вибір місяць, день, годину, Хвилина, По-друге.
    Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.
  6. Вибирати попередній перегляд, Потім виберіть додавати.

Додайте перетворення в observations.csv

Data Wrangler підтримує спеціальні перетворення за допомогою Python (користувацькі функції), PySpark, Pandas або PySpark (SQL). Ви можете вибрати тип трансформації на основі вашого знайомства з кожним параметром і перевагами. Для останніх трьох варіантів Data Wrangler відкриває змінну df щоб ви могли отримати доступ до кадру даних і застосувати до нього перетворення. Докладні пояснення та приклади див Спеціальні трансформації. У цьому розділі ми додаємо три спеціальні перетворення до observations набір даних.

  1. Додайте перетворення до observations.csv і видаліть DESCRIPTION колонка.
    Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.
  2. Вибирати попередній перегляд, Потім виберіть додавати.
  3. У Перетворює панель, виберіть Додати крок І вибирай Спеціальне перетворення.
  4. У спадному меню виберіть Python (Pandas).
    Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.
  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. Вертикальний пошук. Ai.
  8. Вибирати попередній перегляд, Потім виберіть додавати.
  9. Вибирати Додати крок І вибирай Спеціальне перетворення.
  10. У спадному меню виберіть Python (PySpark).
    Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.
    П’ять типів спостережень не завжди можуть бути записані в одну дату. Наприклад, 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. для Перетвореннявиберіть Відкинути дублікати.
    Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.
  15. Вибирати попередній перегляд, Потім виберіть додавати.
  16. Вибирати Додати крок І вибирай Спеціальне перетворення.
  17. У спадному меню виберіть Python (Pandas).
  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. Вертикальний пошук. Ai.

Приєднайтеся до пацієнтів.csv і observations.csv

На цьому кроці ми демонструємо, як ефективно та легко виконувати складні об’єднання наборів даних без написання коду за допомогою потужного інтерфейсу користувача Data Wrangler. Щоб дізнатися більше про підтримувані типи об’єднань, див Перетворення даних.

  1. Праворуч від Трансформація: patients.csv, виберіть знак плюс поруч із заходи І вибирай Приєднайся до.
    Перетворений файл pacijenata.csv можна побачити нижче Набори даних на лівій панелі.
    Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.
  2. Праворуч від Перетворення: observations.csv, натисніть на заходи щоб розпочати операцію приєднання.
    Трансформований файл observations.csv тепер указано нижче Набори даних на лівій панелі.
    Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.
  3. Вибирати Конфігурувати.
  4. для Тип приєднаннявиберіть Внутрішній.
  5. для Лівевиберіть Id.
  6. для правийвиберіть пацієнт.
  7. Вибирати попередній перегляд, Потім виберіть додавати.
    Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Додайте спеціальне перетворення до об’єднаних наборів даних

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

  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. Виберіть знак плюс біля Перетворення: умови.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, які відповідають наступним умовам. The 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. Додайте вбудований Керувати стовпцями перетворення, щоб видалити зайві стовпці, які більше не потрібні:
    1. hypertension
    2. diabetes
    3. coronary
    4. smoke
    5. atrial
  3. Витяг Year та  Quarter від heartfailure колонка.
    Це відповідає деталізації, яку ми використовували раніше під час трансформації observations набір даних.
  4. Загалом ми повинні мати 6 кроків для conditions.csv.
    Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Приєднайте файл conditions.csv до об’єднаного набору даних

Тепер ми виконуємо нове об’єднання, щоб приєднати набір даних умов до об’єднаного patients та observations набір даних.

  1. Вибирати Перетворення: перше приєднання.
  2. Виберіть знак плюс і виберіть Приєднайся до.
  3. Вибирати заходи поруч з Перетворення: умови.csv.
    Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.
  4. Вибирати Конфігурувати.
  5. для Тип приєднаннявиберіть Лівий зовнішній.
  6. для Лівевиберіть Id.
  7. для правийвиберіть пацієнт.
  8. Вибирати попередній перегляд, Потім виберіть додавати.
    Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Додайте перетворення до об’єднаних наборів даних

Тепер, коли ми об’єднали всі три набори даних, давайте застосуємо деякі додаткові перетворення.

  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. Вертикальний пошук. Ai.
  5. Виберіть дані і додайте крок.
  6. Вибирати Ручка відсутня.
  7. для Перетвореннявиберіть Відсутня заповнення.
  8. для Вхідні стовпцівиберіть ШРУЧНИЙ.
  9. для Значення заповнення, введіть S.
    Наша стратегія полягає в тому, щоб припустити, що пацієнт неодружений, якщо сімейний стан не має значення. Ви можете мати іншу стратегію.
    Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.
  10. Вибирати попередній перегляд, Потім виберіть додавати.
  11. Заповніть відсутнє значення як 0 для has_hypertension, has_diabetes, has_coronary, has_smoke, has_atrial.

Marital та Gender є категоріальними змінними. Data Wrangler має вбудовану функцію для кодування категоріальних змінних.

  1. Додайте крок і виберіть Закодувати категоріальний.
  2. для Перетвореннявиберіть Одне гаряче кодування.
  3. для Вхідні стовпцівиберіть ШРУЧНИЙ.
  4. для Стиль виведеннявиберіть Колонка.
    Цей стиль виведення створює закодовані значення в окремих стовпцях.
    Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.
  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. Вертикальний пошук. Ai.
    Очевидно, що ми маємо незбалансований клас (більше точок даних, позначених як відсутність серцевої недостатності, ніж точок даних, позначених як серцева недостатність).
  6. Поверніться до дані табл. Виберіть Додати крок І вибирай Дані балансу.
  7. для Цільова колонкавиберіть has_heartfailure.
  8. для Бажане співвідношення, введіть 1.
  9. для Перетвореннявиберіть ПРИГРИТИ.
    Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.
    SMOTE означає Synthetic Minority Over-sampling Technique. Це техніка для створення нових екземплярів меншості та додавання до набору даних для досягнення балансу класів. Детальну інформацію див SMOTE: техніка надмірної вибірки синтетичної меншості.
  10. Вибирати попередній перегляд, Потім виберіть додавати.
  11. Повторіть аналіз гістограми в кроках 20-23. Результат – збалансований клас.
    Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

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

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

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

Потім ми розглянемо кореляцію ознак. Ми хочемо вибрати функції, які корельовані з метою, але не корельовані між собою.

  1. на Вкладка аналізу, Для Тип аналізу¸ вибрати Співвідношення ознак.
  2. для Тип кореляції¸ вибрати лінійний.
  3. Вибирати попередній перегляд.
    Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Оцінки коефіцієнтів вказують на сильні кореляції між такими парами:

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

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

Опустіть стовпці діастолічний та ІМТ

Додайте додаткові кроки трансформації, щоб видалити hr, diastolic та bmi стовпців за допомогою вбудованого перетворення.

Створіть звіт про якість даних і аналіз

AWS нещодавно оголошений нова функція звіту про якість даних і аналітичних даних у Data Wrangler. Цей звіт автоматично перевіряє якість даних і виявляє відхилення у ваших даних. Науковці даних та інженери даних можуть використовувати цей інструмент для ефективного та швидкого застосування знань предметної області для обробки наборів даних для навчання моделі ML. Цей крок необов'язковий. Щоб створити цей звіт на основі наших наборів даних, виконайте такі кроки:

  1. на аналіз вкладка, для Тип аналізувиберіть Звіт про якість даних і статистику.
  2. для Цільова колонкавиберіть has_heartfailure.
  3. для Тип проблемивиберіть Класифікація.
  4. Вибирати Створювати.
    Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

За кілька хвилин він створює звіт із підсумком, візуальними елементами та рекомендаціями.

Згенеруйте швидкий аналіз моделі

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

  1. на аналіз вкладка, для Тип аналізу¸ вибрати Швидка модель.
  2. для етикеткавиберіть has_heartfailure.
  3. Вибирати попередній перегляд.
    Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Згідно з нашим швидким аналізом моделі, ми можемо побачити цю функцію has_hypertension має найвищу оцінку важливості функції серед усіх функцій.

Експортуйте дані та навчіть модель

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

  1. Виберіть знак плюс біля останнього поля в потоці даних і виберіть Додати пункт призначення.
  2. Вибирати Amazon S3.
    Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.
  3. Введіть Назва набору даних. Форум Розташування Amazon S3, виберіть відро S3, а потім виберіть Додати пункт призначення.
  4. Вибирати Створити роботу щоб запустити завдання розподіленої обробки PySpark для виконання перетворення та виведення даних у цільове відро S3.
    Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.
    Залежно від розміру наборів даних, цей параметр дозволяє нам легко налаштувати кластер і горизонтальне масштабування без використання коду. Нам не потрібно турбуватися про розділення наборів даних або керування кластером і внутрішніми елементами Spark. Про все це автоматично піклується за нас Data Wrangler.
  5. На лівій панелі виберіть Далі 2. Налаштувати завдання.
    Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.
  6. Тоді виберіть прогін.
    Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

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

  1. Виберіть знак плюс біля останнього кроку в потоці даних і виберіть Експортувати в.
  2. Вибирати Amazon S3 (через Jupyter Notebook).
    Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.
  3. Він автоматично відкриває нову вкладку з блокнотом Jupyter.
  4. У блокноті Jupyter знайдіть клітинку в (Необов’язково) Наступні кроки розділ і змін run_optional_steps від False до True.
    Увімкнені додаткові дії в блокноті виконують такі дії:
    • Навчіть модель за допомогою XGBoost
      Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.
  5. Поверніться до верхньої частини блокнота та на прогін меню, виберіть Запустіть усі клітинки.

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

Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Дочекайтеся завершення навчального завдання з останньої клітинки. Він генерує модель у стандартному сегменті SageMaker S3.

Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.

Навчена модель готова до розгортання або для висновків у реальному часі, або для пакетного перетворення. Зауважте, що ми використовували синтетичні дані для демонстрації функцій Data Wrangler і використовували оброблені дані для навчальної моделі. З огляду на те, що дані, які ми використовували, є синтетичними, результат висновку з навченої моделі не призначений для діагностики реального стану здоров’я чи підміни суджень практикуючих лікарів.

Ви також можете безпосередньо експортувати перетворений набір даних в Amazon S3, вибравши Експорт у верхній частині сторінки попереднього перегляду трансформації. Параметр прямого експорту експортує трансформований зразок, лише якщо вибірку було ввімкнено під час імпорту. Цей варіант найкраще підходить, якщо ви маєте справу з меншими наборами даних. Трансформовані дані також можна завантажувати безпосередньо в сховище функцій. Для отримання додаткової інформації див Магазин функцій Amazon SageMaker. Потік даних також можна експортувати як конвеєр SageMaker, який можна оркеструвати та планувати відповідно до ваших вимог. Для отримання додаткової інформації див Трубопроводи Amazon SageMaker.

Висновок

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

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


Про авторів

Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Форрест Сан є старшим архітектором рішень у команді AWS Public Sector у Торонто, Канада. Протягом останніх двох десятиліть він працював у сфері охорони здоров’я та фінансів. Окрім роботи, він із сім’єю любить кемпінг.

Розробка функцій у масштабі для охорони здоров’я та наук про життя за допомогою Amazon SageMaker Data Wrangler PlatoBlockchain Data Intelligence. Вертикальний пошук. Ai.Арунпрасат Шанкар є архітектором спеціалізованих рішень із штучного інтелекту та машинного навчання (AI / ML) з AWS, допомагаючи світовим клієнтам ефективно та ефективно масштабувати свої рішення в галузі ШІ в хмарі. У вільний час Арун із задоволенням дивиться науково-фантастичні фільми та слухає класичну музику.

Часова мітка:

Більше від AWS Машинне навчання