Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Реализация принципов организации и использования средств машинного обучения и искусственного интеллекта в медицине. Учебное пособие.pdf
Скачиваний:
0
Добавлен:
15.08.2026
Размер:
1 Мб
Скачать

3.МОДЕЛИ МАШИННОГО ОБУЧЕНИЯ В МЕДИЦИНЕ

3.1.Типы моделей для задач здравоохранения

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

Линейные модели.

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

Деревья решений и случайные леса.

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

Метод опорных векторов (SVM).

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

Нейронные сети.

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

Методы кластеризации.

Кластеризация помогает выявлять паттерны в медицинских данных, группируя их на основе схожести.

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

72

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

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

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

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

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

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

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

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

73

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

3.2.Линейные и нелинейные модели

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

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

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

Выбор между линейными и нелинейными моделями в зависимости от характера данных:

Сценарий 1: линейные модели.

Контекст: предсказание уровня холестерина на основе возраста пациента. Предобработка данных для уровня холестерина:

1.Обработка пропущенных значений:

-проверяем наличие пропущенных значений в DataFrame df;

-если есть пропущенные значения, решаем, каким образом их обработать: удалить строки с пропущенными значениями или заполнить их средним, медианой или другим подходящим значением.

74

```python

#Пример удаления строк с пропущенными значениями df = df.dropna()

#Или пример заполнения средним значением df['age'].fillna(df['age'].mean(), inplace=True)

```

2.Нормализация данных:

-проводим нормализацию числовых признаков для улучшения стабильности и производительности модели;

-в данном случае нормализуем возраст (age).

```python

# Пример нормализации возраста

df['age'] = (df['age'] - df['age'].mean()) / df['age'].std()

```

3.Проверка и обработка выбросов (по необходимости):

-анализируем распределение данных и определяем наличие выбросов;

-при необходимости решаем, как обрабатывать выбросы: удалить, заменить на медиану или квантиль, применить другие методы.

```python

# Пример удаления выбросов возраста (заменить median на подходящий

метод)

median_age = df['age'].median()

df['age'] = df['age'].apply(lambda x: median_age if x < lower_bound or x > upper_bound else x)

`

4.Преобразование категориальных признаков (по необходимости):

-если в данных есть категориальные признаки, их нужно преобразовать

вчисловой формат, чтобы модель могла их использовать.

```python

# Пример преобразования категориального признака gender в числовой

формат

df['gender'] = df['gender'].map({'Male': 0, 'Female': 1})

``

75

5.Дополнительные шаги (по необходимости):

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

```python

# Пример кодирования категориальных переменных (one-hot encoding) df_encoded = pd.get_dummies(df, columns=['region'])

```

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

Рис. 6. Визуализация прогнозирования

76

График включает точки (черные), представляющие фактические значения холестерина для тестового набора данных. Красные точки, соединенные линиями, отражают предсказанные значения модели.

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

Регуляризация помогает предотвратить переобучение, но все равно наблюдаются некоторые расхождения между фактическими и предсказанными значениями. Оценки качества модели (MSE и R-squared) позволяют количественно оценить точность предсказаний.

Теперь сделаем прогнозирование на основе нелинейной модели.

Применение нелинейной модели Support Vector Regression (SVR) с Radial basis function (RBF) ядром имеет ряд отличий и обоснований по сравнению с ранее использованной линейной моделью.

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

Линейные модели, такие как линейная регрессия, обычно более интерпретируемы, так как их результаты можно легко объяснить в терминах весов признаков. В случае SVR с RBF-ядром интерпретация результатов может быть менее очевидной из-за более сложной нелинейной аппроксимации.

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

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

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

Для выполнения кода проверки работы нелинейной и линейной модели вам потребуется установить следующие библиотеки в вашем окружении Python (рис. 6), если они еще не установлены.

77

Рис. 7. Визуализация применения нелинейной модели

В командной строке пишем (рис. 8): pipinstallpandasscikit-learnmatplotlib

Где:

pandas: ранее описанная библиотека для работы с данными в виде DataFrame.

scikit-learn: библиотека, содержащая инструменты для машинного обучения, включая модели регрессии и метрики.

matplotlib: библиотека для создания графиков и визуализации данных.

78

Рис. 8. Установка библиотек через pip(системы управления пакетами)

Код нелинейной модели прогнозирования:

#Импорт необходимых библиотек import pandas as pd

import numpy as np

from sklearn.model_selection import train_test_split from sklearn.preprocessing import StandardScaler from sklearn.svm import SVR

from sklearn.metrics import mean_squared_error, r2_score import matplotlib.pyplot as plt

#Создание DataFrame с более разнообразными данными data = {

'age': [35, 40, 45, 50, 55, 60, 65, 70, 75, 80],

'cholesterol': [180, 220, 200, 250, 280, 230, 260, 240, 210, 200]

}

df = pd.DataFrame(data)

# Предобработка данных (нормализация) scaler = StandardScaler()

79

df[['age', 'cholesterol']] = scaler.fit_transform(df[['age', 'cholesterol']])

# Разделение данных на тренировочный и тестовый наборы

X = df[['age']]

y = df['cholesterol']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Создание и обучение нелинейной модели (SVR)

model_svr = SVR(kernel='rbf') #Используем Radial basis function (RBF)

ядро

model_svr.fit(X_train, y_train)

#Предсказание на тестовом наборе y_pred_svr = model_svr.predict(X_test)

#Оценкарезультатов

mse_svr = mean_squared_error(y_test, y_pred_svr) r2_svr = r2_score(y_test, y_pred_svr)

# Выводрезультатов

print(f'Mean Squared Error (SVR): {mse_svr}') print(f'R-squared (SVR): {r2_svr}')

# Визуализациярезультата

X_range = np.linspace(min(X['age']), max(X['age']), 100).reshape(-1, 1) y_range_pred_svr = model_svr.predict(X_range)

plt.scatter(X_test, y_test, color='black', label='Actual') plt.plot(X_range, y_range_pred_svr, label='SVR Prediction', color='red') plt.title('SVR - Cholesterol Prediction')

plt.xlabel('Age') plt.ylabel('Cholesterol Level') plt.legend()

plt.show()

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

80

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]