Мотивация:

По данным Всемирной организации здравоохранения (ВОЗ), диабет является одним из самых быстрорастущих заболеваний, которым страдают около 420 миллионов человек во всем мире. Из-за длительной бессимптомной фазы диабет может оставаться клинически невыявленным до 7 лет. В рамках нашего проекта мы надеемся внести свой вклад в прогнозирование диабета на ранней стадии с использованием методов классификации данных. Такое раннее обнаружение и диагностика могут оказать огромное влияние на контроль осложнений со здоровьем на бессимптомной стадии, а также могут сэкономить до тысяч долларов на лечении на поздних стадиях.

Набор данных:

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

Очистка данных:

Очистка данных состоит из следующих шагов:

  • Изменение всех имен столбцов на нижний регистр
  • Преобразование всех нечисловых столбцов в числовые столбцы
  • Добавление нового столбца «возрастная группа»
  • Удаление нулевых значений

Образец очищенного набора данных, используемого для EDA, показан ниже:

В следующей таблице представлены все функции очищенных данных:

Описание функции:

Описание данных представлено ниже:

  • Возраст (количественный): 30–70 лет.
  • Возрастная группа (порядковый номер): 1 для 30–40 лет, 2 для 40–50 лет, 3 для 50–60 лет, 5 для 60–70 лет.
  • Пол (номинальный): 1 для «мужского» и 0 для «женского».
  • Класс (номинальный): 1 для «Положительно» и 0 для «Отрицательно».
  • Остальное (номинальное значение): 1 – "Да" и 0 – "Нет"

Исследовательский анализ данных (EDA):

Обратите внимание, что почти все данные категоричны (кроме возраста). Сводная статистика для категорийных данных не дает много информации. В результате мы прибегаем к другим средствам визуализации и изучения наших данных.

Количественные данные:

Начнем с изучения количественных данных в наборе данных. Гистограмма ниже представляет распределение возрастов в наборе данных.

Как видно из распределения, данные содержат выбросы с возрастом > 75 и возрастом ‹ 25. Проверим подсчет этих значений.

# Ages below 25
print("Total ages below 25:", df[df['age'] < 25].shape[0])
# Ages above 75
print("Total ages above 75:", df[df['age'] > 75].shape[0])

Эти выбросы будут влиять на точность классификации, поэтому мы удаляем их из наших данных. Отфильтрованное распределение возрастов показано ниже:

Категорические/номинальные данные:

Далее мы исследуем тенденции в качественных данных. Гистограмма отображает количество значений для всех категориальных признаков (кроме пола и возрастной группы) в наборе данных.

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

Также полезно посмотреть на количество полов и возрастных групп в наборе данных. Они показаны на следующих графиках.

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

Корреляция:

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

Некоторые ключевые наблюдения, которые следует отметить: значение корреляции 0,67 между полиурией и классом, значение корреляции 0,65 между полидипсией и классом, значение корреляции -0,45 между полом и классом и значение корреляции 0,44 между парциальным парезом и классом. Требуется осторожность при попытке объяснить причинно-следственную связь на основе корреляции, поскольку могут действовать и другие смешанные факторы.

Оценка:

Поскольку набор данных скудный, такие методы, как OLS, Ridge и Lasso, окажутся неэффективными для прогнозирования правильных результатов для наших моделей. Поэтому мы прибегли к другим методам, таким как деревья решений и случайные леса, чтобы сделать наши прогнозы более эффективными на небольших наборах данных. Чтобы посмотреть на проблему с разных точек зрения, мы решили развернуть 4 разные модели:

  • kNN 5-кратная перекрестная проверка
  • Наивный байесовский
  • Древо решений
  • Случайный лес

kNN 5-кратная перекрестная проверка:

kNN — наша самая надежная модель классификации. Модель проверяет k ближайших соседей к тестовому значению и классифицирует его в соответствии с самой густонаселенной меткой в ​​наших k ближайших соседях. Мы выполнили 5-кратную перекрестную проверку значений k от 1 до 10 включительно и оценили оптимальное значение k, которое оказалось равным 4.

В нашей реализации мы поставили отзыв выше точности и аккуратности по двум основным причинам:

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

Матрица путаницы, построенная через оптимальное значение kNN, была следующей:

Показатели производительности модели были следующими:

Как мы видим, показатель отзыва высокий, с достаточно приличной точностью, что приводит к очень надежной модели.

Наивный Байес:

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

Оценка модели показана ниже:

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

Древо решений:

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

Мы использовали классификатор дерева решений sklearn, который принимает входные данные и соответственно строит дерево решений. Мы проверили дерево решений на различных значениях max_depth и обнаружили, что 4 является оптимальным значением. При значениях выше 4 дерево решений соответствовало данным, а при значениях ниже 4 дерево не соответствовало данным, что приводило к неточным прогнозам.

Построенное дерево решений выглядит следующим образом:

Показатели производительности дерева решений были следующими:

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

Случайный лес:

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

Диаграмма рассеяния для модели была следующей:

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

Показатели производительности модели были следующими:

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

Заключение:

Ниже мы резюмируем нашу точность и вспоминаем результаты для всех моделей, которые мы тестировали:

Из проведенных нами экспериментов мы можем сделать вывод, что наиболее эффективной моделью с точки зрения отзыва для набора данных о диабете является модель случайного леса. Случайные леса дают положительную оценку из-за гибкости количества итераторов и глубины дерева, что позволяет модели хорошо вписываться в предоставленный набор данных. Однако это имело место при интерпретации после применения порога (0,4) к вероятностям, которые не являются частью фактической модели. Поскольку дерево решений является отдельным компонентом случайного леса, интуитивно понятны метрики оценки дерева решений. Модель kNN также работает неплохо и обеспечивает высокую полноту и точность. Поскольку у нас есть ограниченное количество функций (17), kNN не страдает от проклятия размерности. Более того, поскольку между всеми признаками существует положительная корреляция, метод ближайших соседей обеспечивает очень логичную и интуитивно понятную методологию классификации, которая хорошо работает.

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

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