Files
ai-med-edu/labs/lab#2.tex
T

660 lines
33 KiB
TeX
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
% ============================================================================
% ЛАБОРАТОРНАЯ РАБОТА №2
% АНАЛИЗ РАДИОМЕТРИЧЕСКИХ ПРИЗНАКОВ
% ============================================================================
% КОМПИЛЯЦИЯ: pdflatex (ДВА ПРОХОДА)
% ============================================================================
\documentclass[12pt,a4paper]{article}
% ============================================================================
% ПРЕАМБУЛА
% ============================================================================
\usepackage[utf8]{inputenc}
\usepackage[T2A]{fontenc}
\usepackage[russian]{babel}
\usepackage{amsmath,amssymb,amsfonts}
\usepackage{graphicx}
\usepackage{hyperref}
\usepackage{listings}
\usepackage{xcolor}
\usepackage{geometry}
\usepackage{booktabs}
\usepackage{longtable}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{titlesec}
\usepackage{float}
\usepackage{array}
\usepackage{multirow}
\usepackage{enumitem}
\geometry{left=2.5cm,right=2cm,top=2cm,bottom=2cm}
\hypersetup{
colorlinks=true,
linkcolor=blue,
urlcolor=blue,
pdfauthor={Студент},
pdftitle={Лабораторная работа N2}
}
\lstset{
basicstyle=\ttfamily\footnotesize,
keywordstyle=\color{blue},
commentstyle=\color{green!60!black},
stringstyle=\color{red},
breaklines=true,
frame=single,
numbers=left,
numberstyle=\tiny,
tabsize=4,
language=Python,
extendedchars=true,
inputencoding=utf8,
}
\titleformat{\section}{\Large\bfseries\centering}{}{0pt}{}
\titleformat{\subsection}{\large\bfseries}{}{0pt}{}
\titleformat{\subsubsection}{\normalsize\bfseries}{}{0pt}{}
\renewcommand{\refname}{Список использованной литературы}
\begin{document}
% ============================================================================
% ТИТУЛЬНЫЙ ЛИСТ
% ============================================================================
\begin{titlepage}
\begin{center}
\vspace*{0.5cm}
{\Large \textbf{ФГБУ <<НМИЦ онкологии им. Н.Н. Блохина>> Минздрава России}}
\vspace{0.3cm}
{\large Кафедра медицинской информатики и искусственного интеллекта}
\vspace{2.5cm}
{\Huge \textbf{ЛАБОРАТОРНАЯ РАБОТА №2}}
\vspace{0.5cm}
{\huge \textbf{Анализ радиометрических признаков}}
\vspace{0.5cm}
{\Large и построение модели обнаружения областей интереса}
\vspace{2.5cm}
\begin{tabular}{p{0.4\textwidth}p{0.4\textwidth}}
\textbf{Выполнил:} & \textbf{Руководитель:} \\
\underline{\hspace{4cm}} & \underline{\hspace{4cm}} \\
\textit{ФИО студента} & \textit{ФИО преподавателя} \\
Группа: \underline{\hspace{2cm}} & Учёная степень: \underline{\hspace{2cm}} \\
Вариант: \underline{\hspace{2cm}} & \\
\end{tabular}
\vspace{2.5cm}
{\large Москва, 2026}
\end{center}
\end{titlepage}
% ============================================================================
% СОДЕРЖАНИЕ
% ============================================================================
\tableofcontents
\newpage
% ============================================================================
% 1. ВВЕДЕНИЕ
% ============================================================================
\section{Введение}
\subsection{Цель работы}
Сформировать у слушателей практические навыки количественного анализа медицинских изображений методами радиомики и построения прогностических моделей машинного обучения для дифференциальной диагностики патологических образований.
\textbf{Задачи работы:}
\begin{enumerate}
\item Провести разведочный анализ данных (EDA) радиометрических признаков.
\item Выполнить предобработку данных (импутация пропусков, масштабирование).
\item Обучить модель бинарной классификации для дифференцировки патологических состояний.
\item Оценить качество модели и интерпретировать результаты.
\item Проанализировать важность радиометрических признаков для клинической задачи.
\end{enumerate}
\subsection{Клинический контекст}
В рамках лабораторной работы используются данные радиомического анализа пациентов с новообразованиями почек из датасета \texttt{1\_2236040\_zno\_cyst\_AF}. Задача состоит в построении модели, способной дифференцировать патологические образования (злокачественные опухоли, доброкачественные опухоли, кисты, абсцессы) на основе количественных признаков, извлечённых из медицинских изображений.
\textbf{Объекты дифференцировки:}
\begin{itemize}
\item Злокачественные опухоли (агрессивные новообразования)
\item Доброкачественные опухоли и кисты (неагрессивные образования)
\item Абсцессы (воспалительные процессы)
\end{itemize}
\textbf{Клиническая значимость:} Неинвазивная дифференцировка типов патологических образований почек на основе радиомических признаков позволяет:
\begin{itemize}
\item Снизить количество инвазивных диагностических процедур (биопсий).
\item Ускорить процесс принятия клинических решений.
\item Повысить точность дифференциальной диагностики.
\item Персонализировать тактику лечения.
\end{itemize}
\subsection{Концепция радиомики}
Радиомика — это высокопроизводительный метод извлечения количественных признаков из медицинских изображений (КТ, МРТ, ПЭТ). Её ключевая идея заключается в том, что визуальная информация содержит скрытые паттерны, неразличимые для человеческого глаза, но поддающиеся математическому описанию. Эти паттерны могут служить неинвазивными биомаркерами, отражающими гистологию, генетику и агрессивность заболевания.
\textbf{Пайплайн радиомического анализа:}
\begin{enumerate}
\item Получение медицинских изображений (КТ, МРТ).
\item Сегментация областей интереса (ROI).
\item Извлечение количественных признаков.
\item Предобработка и отбор признаков.
\item Построение прогностических моделей.
\item Клиническая валидация и интерпретация.
\end{enumerate}
% ============================================================================
% 2. ТЕОРЕТИЧЕСКАЯ ЧАСТЬ
% ============================================================================
\section{Теоретическая часть}
\subsection{Классификация радиометрических признаков}
Современные библиотеки (например, PyRadiomics) извлекают более 100 признаков. Они делятся на несколько основных групп.
\subsubsection{Геометрические признаки (Shape)}
Описывают форму и размер области интереса (ROI).
\textbf{Элонгация (вытянутость):}
\begin{equation}
E = \frac{L_{minor}}{L_{major}}
\end{equation}
где:
\begin{itemize}
\item $E$ -- элонгация (от 0 до 1)
\item $L_{minor}$ и $L_{major}$ -- малая и большая оси аппроксимирующего эллипса
\end{itemize}
Значение, близкое к 1, указывает на округлую (часто доброкачественную) форму.
\textbf{Сферичность:}
\begin{equation}
S = \frac{36\pi V^2}{A^3}
\end{equation}
где:
\begin{itemize}
\item $V$ -- объём ROI
\item $A$ -- площадь поверхности
\end{itemize}
Низкая сферичность указывает на инфильтративный, нерегулярный рост.
\subsubsection{Статистики первого порядка (First-order)}
Описывают распределение интенсивности пикселей без учёта их расположения.
\textbf{Среднее значение:}
\begin{equation}
\mu = \frac{1}{N} \sum_{i=1}^{N} X_i
\end{equation}
где:
\begin{itemize}
\item $\mu$ -- средняя интенсивность
\item $N$ -- число пикселей в маске
\item $X_i$ -- интенсивность $i$-го пикселя
\end{itemize}
\textbf{Дисперсия:}
\begin{equation}
\sigma^2 = \frac{1}{N-1} \sum_{i=1}^{N} (X_i - \mu)^2
\end{equation}
где $\sigma^2$ -- мера разброса значений (неоднородности ткани).
\textbf{Энтропия (мера хаотичности):}
\begin{equation}
H = -\sum_{k} p_k \cdot \log_2(p_k)
\end{equation}
где:
\begin{itemize}
\item $H$ -- энтропия Шеннона
\item $p_k$ -- вероятность появления интенсивности $k$
\end{itemize}
Высокая энтропия часто коррелирует с некрозом или фиброзом внутри опухоли.
\subsubsection{Текстурные признаки}
\textbf{Матрица пространственной смежности (GLCM)} оценивает, как часто пиксели с определёнными уровнями яркости встречаются рядом.
\textbf{Контраст:}
\begin{equation}
Contrast = \sum_{i} \sum_{j} |i - j|^2 \cdot P(i, j)
\end{equation}
где $P(i, j)$ -- вероятность совместного появления пикселей с интенсивностями $i$ и $j$. Высокий контраст указывает на резкие перепады яркости.
\textbf{Энергия (однородность):}
\begin{equation}
Energy = \sum_{i} \sum_{j} P(i, j)^2
\end{equation}
Высокая энергия указывает на однородность текстуры.
\textbf{Корреляция:}
\begin{equation}
Correlation = \frac{\sum_{i} \sum_{j} (i - \mu_i)(j - \mu_j) P(i, j)}{\sigma_i \sigma_j}
\end{equation}
Характеризует линейную зависимость между соседними пикселями.
\subsection{Метрики оценки моделей в клиническом контексте}
При бинарной классификации ($0$ -- норма/доброкачественное, $1$ -- патология/злокачественное) критически важен выбор метрики.
\textbf{Полнота (Recall):}
\begin{equation}
Recall = \frac{TP}{TP + FN}
\end{equation}
Приоритетна для скрининга: минимизирует пропуск патологии (ложноотрицательные результаты).
\textbf{Точность (Precision):}
\begin{equation}
Precision = \frac{TP}{TP + FP}
\end{equation}
Приоритетна для подтверждающей диагностики: минимизирует ложные тревоги, ведущие к ненужным биопсиям.
\textbf{F1-мера (баланс):}
\begin{equation}
F1 = 2 \cdot \frac{Precision \cdot Recall}{Precision + Recall}
\end{equation}
\textbf{ROC-AUC:} Площадь под ROC-кривой. Значение 0.5 соответствует случайному угадыванию, 1.0 -- идеальному классификатору.
\subsection{Предобработка данных}
\textbf{Стандартизация (Z-score):}
\begin{equation}
z = \frac{x - \mu}{\sigma}
\end{equation}
где:
\begin{itemize}
\item $z$ -- нормализованное значение
\item $x$ -- исходное значение
\item $\mu$ и $\sigma$ -- среднее и стандартное отклонение признака по обучающей выборке
\end{itemize}
Обязательна для линейных моделей и нейросетей.
\textbf{Импутация пропусков:}
\begin{equation}
x_{imputed} = \text{median}(X)
\end{equation}
Медианная импутация устойчива к выбросам.
% ============================================================================
% 3. ПРАКТИЧЕСКАЯ ЧАСТЬ
% ============================================================================
\section{Практическая часть}
\subsection{Загрузка и разведочный анализ данных (EDA)}
\subsubsection{Загрузка данных}
Радиометрические характеристики сохраняются в CSV-формате после обработки на платформе <<БиоМедАналитика>>.
\begin{lstlisting}
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
df = pd.read_csv('result.csv')
print(df.shape)
print(df.columns.tolist()[:10])
print(df.info())
print(df.describe())
\end{lstlisting}
\subsubsection{Анализ распределения классов}
\begin{lstlisting}
print("Distribution of classes:")
print(df['label'].value_counts())
print(df['label'].value_counts(normalize=True))
sns.countplot(data=df, x='label')
plt.title('Distribution of classes')
plt.show()
\end{lstlisting}
\subsubsection{Визуализация распределений признаков}
\begin{lstlisting}
features = ['original_firstorder_Mean', 'original_firstorder_Entropy',
'original_glcm_Contrast', 'original_glcm_Correlation']
fig, axes = plt.subplots(2, 2, figsize=(12, 10))
for i, feat in enumerate(features):
ax = axes[i//2, i%2]
sns.histplot(data=df, x=feat, hue='label', kde=True, ax=ax)
ax.set_title(feat)
plt.tight_layout()
plt.show()
\end{lstlisting}
\subsection{Предобработка данных}
\subsubsection{Выделение признаков и целевой переменной}
\begin{lstlisting}
feature_cols = [col for col in df.columns if col not in ['label', 'path_to_cell', 'source_file']]
X = df[feature_cols]
y = df['label']
print("Features shape:", X.shape)
print("Target shape:", y.shape)
print("Classes:", y.unique())
\end{lstlisting}
\subsubsection{Разделение на обучающую и тестовую выборки}
\begin{lstlisting}
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(
X, y, test_size=0.3, random_state=42, stratify=y
)
print("Train size:", X_train.shape[0])
print("Test size:", X_test.shape[0])
print("Train class distribution:\n", y_train.value_counts(normalize=True))
print("Test class distribution:\n", y_test.value_counts(normalize=True))
\end{lstlisting}
\subsubsection{Импутация пропусков}
\begin{lstlisting}
from sklearn.impute import SimpleImputer
imputer = SimpleImputer(strategy='median')
X_train_imputed = imputer.fit_transform(X_train)
X_test_imputed = imputer.transform(X_test)
print("Missing values after imputation:",
np.isnan(X_train_imputed).sum(), np.isnan(X_test_imputed).sum())
\end{lstlisting}
\subsubsection{Стандартизация}
\begin{lstlisting}
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train_imputed)
X_test_scaled = scaler.transform(X_test_imputed)
print("Mean after scaling:", X_train_scaled.mean(axis=0)[:5])
print("Std after scaling:", X_train_scaled.std(axis=0)[:5])
\end{lstlisting}
\subsection{Обучение модели}
\subsubsection{Случайный лес (Random Forest)}
Случайный лес устойчив к выбросам, не требует строгой нормализации и позволяет оценить важность признаков.
\begin{lstlisting}
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import classification_report, confusion_matrix
from sklearn.metrics import roc_auc_score, RocCurveDisplay
model = RandomForestClassifier(
n_estimators=100,
random_state=42,
class_weight='balanced'
)
model.fit(X_train_scaled, y_train)
\end{lstlisting}
\subsubsection{Оценка качества}
\begin{lstlisting}
y_pred = model.predict(X_test_scaled)
y_prob = model.predict_proba(X_test_scaled)[:, 1]
print("Classification Report:")
print(classification_report(y_test, y_pred, target_names=['Benign', 'Malignant']))
cm = confusion_matrix(y_test, y_pred)
print("Confusion Matrix:")
print(cm)
auc = roc_auc_score(y_test, y_prob)
print("ROC-AUC:", auc)
\end{lstlisting}
\subsubsection{Визуализация результатов}
\begin{lstlisting}
fig, axes = plt.subplots(1, 2, figsize=(12, 5))
sns.heatmap(cm, annot=True, fmt='d', cmap='Blues', ax=axes[0])
axes[0].set_title('Confusion Matrix')
axes[0].set_xlabel('Predicted')
axes[0].set_ylabel('True')
RocCurveDisplay.from_estimator(model, X_test_scaled, y_test, ax=axes[1])
axes[1].set_title('ROC Curve')
plt.tight_layout()
plt.show()
\end{lstlisting}
\subsection{Анализ важности признаков}
\begin{lstlisting}
importance = pd.DataFrame({
'feature': feature_cols,
'importance': model.feature_importances_
}).sort_values('importance', ascending=False)
print("Top 10 features:")
print(importance.head(10))
plt.figure(figsize=(10, 8))
sns.barplot(data=importance.head(15), x='importance', y='feature')
plt.title('Feature Importance')
plt.xlabel('Importance')
plt.tight_layout()
plt.show()
\end{lstlisting}
% ============================================================================
% 4. ВАРИАНТЫ ЗАДАНИЙ
% ============================================================================
\section{Варианты заданий}
Выберите один из вариантов в соответствии с указанием преподавателя. Каждый вариант акцентирует внимание на специфике определённой анатомической зоны.
\begin{table}[H]
\centering
\caption{Варианты заданий}
\begin{tabular}{p{1.5cm}|p{5cm}|p{6cm}}
\toprule
\textbf{Вариант} & \textbf{Анатомическая зона} & \textbf{Акцент} \\
\midrule
1 & Почки & Геометрические признаки и статистики первого порядка \\
2 & Молочная железа & Текстурные признаки (GLCM, GLRLM) \\
3 & Головной мозг & Спектральные признаки и NGTDM \\
4 & Брюшная полость & Комбинированное использование всех групп признаков \\
5 & Мультимодальный анализ & Сравнительный анализ и формулировка гипотез \\
\bottomrule
\end{tabular}
\end{table}
\textbf{Задание повышенной сложности (со звёздочкой):}
Реализуйте отбор признаков методом рекурсивного исключения (RFE) или через \texttt{SelectFromModel}. Сравните метрики модели до и после уменьшения размерности.
\begin{lstlisting}
from sklearn.feature_selection import RFE
from sklearn.linear_model import LogisticRegression
selector = RFE(LogisticRegression(), n_features_to_select=20)
selector.fit(X_train_scaled, y_train)
selected_features = selector.get_support()
print("Selected features:", np.sum(selected_features))
X_train_selected = X_train_scaled[:, selected_features]
X_test_selected = X_test_scaled[:, selected_features]
model_selected = RandomForestClassifier(random_state=42)
model_selected.fit(X_train_selected, y_train)
y_pred_selected = model_selected.predict(X_test_selected)
print("Accuracy with RFE:", accuracy_score(y_test, y_pred_selected))
\end{lstlisting}
% ============================================================================
% 5. РЕЗУЛЬТАТЫ
% ============================================================================
\section{Результаты}
\subsection{Пример результатов}
Ниже приведены типичные результаты, которые можно получить при выполнении работы.
\begin{table}[H]
\centering
\caption{Метрики качества модели (пример)}
\begin{tabular}{l|r|r|r}
\toprule
\textbf{Метрика} & \textbf{Значение} & \textbf{95\% CI} & \textbf{Интерпретация} \\
\midrule
Accuracy & 0.89 & 0.85--0.93 & Хорошее качество \\
Precision (Malignant) & 0.87 & 0.82--0.92 & Низкий уровень ЛП \\
Recall (Malignant) & 0.92 & 0.88--0.96 & Высокая чувствительность \\
F1 (Malignant) & 0.89 & 0.85--0.93 & Хороший баланс \\
ROC-AUC & 0.94 & 0.91--0.97 & Отличная дискриминация \\
\bottomrule
\end{tabular}
\end{table}
\subsection{Важность признаков (пример)}
\begin{table}[H]
\centering
\caption{Топ-10 важнейших признаков}
\begin{tabular}{l|r}
\toprule
\textbf{Признак} & \textbf{Важность} \\
\midrule
original\_firstorder\_Entropy & 0.142 \\
original\_glcm\_Contrast & 0.118 \\
original\_firstorder\_Variance & 0.095 \\
original\_shape\_Sphericity & 0.087 \\
original\_glcm\_Correlation & 0.076 \\
original\_firstorder\_Mean & 0.068 \\
original\_glrlm\_RunEntropy & 0.062 \\
original\_glszm\_ZoneEntropy & 0.055 \\
original\_gldm\_DependenceEntropy & 0.048 \\
original\_shape\_Elongation & 0.041 \\
\bottomrule
\end{tabular}
\end{table}
\textbf{Интерпретация:}
\begin{enumerate}
\item \textbf{Энтропия} (original\_firstorder\_Entropy) -- отражает гетерогенность ткани. Высокая энтропия указывает на неоднородность, характерную для злокачественных образований.
\item \textbf{Контраст} (original\_glcm\_Contrast) -- характеризует резкие перепады интенсивности, связанные с неоваскуляризацией и некрозом.
\item \textbf{Дисперсия} (original\_firstorder\_Variance) -- мера разброса значений интенсивности, отражающая неоднородность ткани.
\item \textbf{Сферичность} (original\_shape\_Sphericity) -- низкая сферичность характерна для инфильтративного роста злокачественных опухолей.
\end{enumerate}
% ============================================================================
% 6. ВЫВОДЫ
% ============================================================================
\section{Выводы}
В ходе выполнения лабораторной работы были получены следующие результаты:
\begin{enumerate}
\item \textbf{Проведён разведочный анализ данных}: выявлены закономерности в распределении признаков, определены классы и их соотношение.
\item \textbf{Выполнена предобработка данных}: реализована импутация пропусков и стандартизация признаков.
\item \textbf{Обучена модель случайного леса}: модель демонстрирует высокое качество классификации (ROC-AUC $> 0.9$).
\item \textbf{Проведён анализ важности признаков}: выявлены ключевые радиометрические характеристики (энтропия, контраст, дисперсия, сферичность) для дифференцировки патологических состояний.
\item \textbf{Результаты интерпретированы с клинической точки зрения}: подтверждена диагностическая ценность текстурных признаков и статистик первого порядка.
\end{enumerate}
\textbf{Клинические рекомендации:}
\begin{enumerate}
\item Для скрининга рекомендуется использовать метрику Recall (минимизация пропуска патологии).
\item Для подтверждающей диагностики рекомендуется использовать метрику Precision (минимизация ложных тревог).
\item Текстурные признаки (GLCM\_Contrast, GLCM\_Entropy) являются наиболее информативными для дифференциальной диагностики.
\end{enumerate}
% ============================================================================
% 7. КОНТРОЛЬНЫЕ ВОПРОСЫ
% ============================================================================
\section{Контрольные вопросы}
\begin{enumerate}
\item В чём заключается принципиальное различие между статистиками первого порядка и текстурными признаками? Приведите пример медицинской задачи, в которой каждый из этих типов признаков будет обладать максимальной диагностической ценностью.
\item Почему метрика Accuracy может давать искажённое представление о качестве модели при работе с медицинскими данными? Какие альтернативные метрики предпочтительнее использовать в задачах скрининга и по какой причине?
\item Какую информацию несёт коэффициент корреляции Пирсона между двумя признаками? Почему наличие сильной корреляции (мультиколлинеарности) может создавать проблемы при обучении линейных моделей?
\item Дайте содержательное объяснение метрики ROC-AUC. В каких ситуациях её использование более оправдано по сравнению с F1-мерой?
\item Перечислите обязательные этапы предобработки радиометрических данных перед обучением модели. Обоснуйте необходимость каждого из них с точки зрения статистики и машинного обучения.
\item Проанализируйте матрицу ошибок вашей модели: какое количество ложноположительных и ложноотрицательных прогнозов было допущено? Какой из этих типов ошибок представляет большую опасность в контексте вашей задачи и почему?
\item Назовите три признака, оказавшие наибольшее влияние на прогноз вашей модели. Как вы интерпретируете их вклад с медицинской точки зрения?
\item Если бы у вас появилась возможность дополнить набор данных одним новым типом информации (помимо радиометрических признаков), что бы вы выбрали: клинические метаданные, результаты лабораторных исследований, геномные данные? Обоснуйте свой выбор.
\item Как изменится ваша стратегия моделирования при увеличении объёма обучающей выборки в десять раз? Какие корректировки потребуются в случае сокращения данных вдвое?
\item Какие шаги вы предпримете, если модель демонстрирует высокую полноту при низкой точности прогноза положительных случаев (или наоборот)? Как такой дисбаланс повлияет на возможности клинического применения модели?
\end{enumerate}
% ============================================================================
% 8. СПИСОК ЛИТЕРАТУРЫ
% ============================================================================
\section{Список литературы}
\begin{enumerate}
\item Владзимирский, А. В. Компьютерное зрение в лучевой диагностике: первый этап Московского эксперимента / А. В. Владзимирский, Ю. А. Васильев, К. М. Арзамасов [и др.]. -- 2-е изд. -- Москва : ООО <<Издательские решения>>, 2023. -- 388 с. -- ISBN 978-5-0059-3043-9.
\item Гавриченков, Ю. Д. Системы искусственного интеллекта : учебно-методическое пособие / Ю. Д. Гавриченков, В. Ю. Переверзев. -- Самара : Медицинский университет <<Реавиз>>, 2024. -- 55 с.
\item Поляков, Е. В. Цифровая обработка медицинских изображений : учебное пособие / Е. В. Поляков, В. В. Дмитриева, А. А. Фроня. -- Москва : НИЯУ МИФИ, 2024. -- 100 с.
\item Савченко, Е. Ю. Основы и применение нейронных сетей: теория, практика, инновации : учебное пособие / Е. Ю. Савченко. -- Бишкек : Нео Принт, 2024. -- 116 с.
\item van Griethuysen, J. J. M. Computational Radiomics System to Decode the Radiographic Phenotype / J. J. M. van Griethuysen, A. Fedorov, C. Parmar [et al.] // Cancer Research. -- 2017. -- Vol. 77, No. 21. -- P. e104--e107.
\item Lambin, P. Radiomics: the bridge between medical imaging and personalized medicine / P. Lambin, E. Rios-Velazquez, R. Leijenaar [et al.] // Nature Reviews Clinical Oncology. -- 2017. -- Vol. 14, No. 12. -- P. 749--762.
\item Breiman, L. Random Forests / L. Breiman // Machine Learning. -- 2001. -- Vol. 45, No. 1. -- P. 5--32.
\end{enumerate}
\end{document}