Анализ выживания — это группа моделей, моделирующих данные о времени до события, с упором на данные, которые подвергаются цензуре. Цензура данных происходит, когда точное время события неизвестно, в основном по таким причинам, как выход из исследования, отсутствие права на участие в исследовании и окончание исследования до того, как становится известно, испытает ли субъект исследования в конечном итоге событие или нет. . Событие не обязательно должно быть событием, но может быть чем угодно, что может произойти «внезапно», например статусом.
Анализ выживаемости чаще всего используется в данных здравоохранения для моделирования смерти или неблагоприятных событий, таких как опухоли, но с тех пор он дебютировал в основной отрасли, особенно для прогнозирования оттока (например, отказа от подписки). Тем не менее, его можно использовать для моделирования любого дискретного события или статуса, в том числе приобретения клиента или входа клиента в систему в первый, второй или n-й раз. Если вы когда-нибудь задумывались, почему люди просто не использовали более знакомую логистическую регрессию, цензура была бы одной из ключевых причин, поскольку анализ выживаемости способен давать более достоверные p-значения перед лицом цензуры, чем логистическая регрессия.
Модель Cox-Proportional Hazards или Cox-PH, вероятно, является наиболее известной из моделей анализа выживаемости, вероятно, из-за простоты ее регрессионной спецификации и интерпретируемости. Другие регрессионные модели анализа выживаемости гораздо менее известны, но еще более неясным, возможно, является существование широкого спектра моделей анализа выживаемости ML, охватывающих весь спектр от машин опорных векторов до древовидных (ансамблевых). Литература по этим моделям анализа выживаемости ML была относительно скудной, и вы можете себе представить, что сравнение этих моделей с традиционными моделями, основанными на регрессии, еще более редкое.
В этой статье проводится сравнение модели Cox-PH с четырьмя моделями выживания ML: SVM, дерево решений, RandomForest и градиентное повышение, помимо того, что сначала предоставляется немного информации об анализе выживания, который лучше всего понять через объектив базовой модели Cox-PH. Поэтому давайте прямо сейчас приступим к модели Cox-PH.
Модель Кокса-PH
Модель Cox-Proportional Hazards основана на идее, что отношения рисков, связанные с ее бета-коэффициентами, должны быть более или менее постоянными во времени. Опасность определяется как риск наличия события или состояния, а также коэффициент опасности, отношение рисков двух людей, групп или одного и того же лица, имеющих еще одну единицу или другую категорию категориальной переменной.
Его спецификация регрессии математически довольно проста и понятна.
h(t), переменная результата в левой части, относится к опасности или риску. h₀(t) относится к базовой опасности, которую можно рассматривать как точку пересечения. Он принимает значение, когда все xᵢ равны 0, потому что exp(0)=1, в результате чего у вас остается h₀(t) x 1 = h₀(t).
Каждый экспоненциальный бета-коэффициент относится к коэффициенту риска наличия еще одной единицы x, если x непрерывен, или уровня/категории по сравнению с эталоном (например, диабетик против недиабетика).
Вот некоторые предположения модели Кокса-PH:
- Цензура неинформативна, то есть не связана с результатом или прошедшим временем.
- Линейный в бета-версии (похож на интерпретацию в OLS)
- Пропорциональные опасности, что означает, что коэффициент опасности, или exp(beta), не меняется со временем.
Давайте посмотрим на некоторый код для нашей модели Cox-PH в наборе данных о раке легких ветеранов, который будет использоваться во всех других моделях для сравнения. Во-первых, мы загрузим данные и отметим, что особенного в этом наборе данных. Обратите внимание, что результирующая переменная data_y представляет собой массив кортежей.
Обратите внимание, что результирующая переменная data_y представляет собой массив кортежей. Это идеальный и единственный приемлемый формат для будущих моделей выживания ML, но не для регрессий Cox-PH с использованием scikit-Survival или Lifelines, последний из которых мы будем использовать для нашей модели Cox-PH. Следовательно, мы преобразуем этот массив в фрейм данных на этапах предварительной обработки (как показано в официальной документации scikit) ниже, которые также включают преобразование переменной tgrade в порядковый (категории имеют числовой порядок), а другой непрерывный переменные в фиктивные переменные OneHotEncoded.
Теперь мы готовы запустить нашу модель Cox-PH и посмотреть на результаты статистического вывода и метрику оценки прогноза. Переменная «cens» относится к статусу события. При просмотре исходного массива y метка не появлялась, но после преобразования y в фрейм данных автоматически появлялись метки столбцов «time» и «cens».
Хотя эта статья предназначена только для сравнения точности прогнозирования различных моделей, здесь стоит продемонстрировать, как интерпретировать некоторые бета-коэффициенты, на реальном примере. Разберем возраст. Причина, по которой exp(coef) приводится здесь в итоговой сводке, заключается именно в том, что коэффициент риска основан на exp(coef), а не на самом коэффициенте. Глядя на второй столбец, вероятность смерти человека с увеличением размера опухоли на единицу возрастает в 1,008 раза. Чтобы переключить наше внимание на категориальную переменную, у кого-то в постменопаузе вероятность умереть в 1,306 раза выше, чем у человека, не находящегося в постменопаузе.
Метрика согласованности, указанная после всех этих результатов вывода, также известна как индекс согласованности или C-статистика. Это стандартный способ оценки соответствия модели анализа выживаемости. Он рассчитывается так:
- Для каждой возможной пары индивидуумов, если тот, у которого произошло событие (до другого человека), имеет более высокий расчетный риск по модели, чем другой индивидуум, у которого нет события, то говорят, что пара соответствует.
- Доля конкордантных пар из всех возможных пар является индексом конкордации.
Наша конкордантность 0,688 здесь означает, что 68,8% всех возможных пар индивидуумов были конкордантны по приведенному выше определению. Редко обсуждаемая причуда (вызванная математическими причинами) заключается в том, что C-статистика имеет тенденцию быть меньше для больших наборов данных, что кажется нелогичным, поэтому не паникуйте, если вы столкнетесь с этим или сразу же предполагайте, что использование большего количества данных ухудшает соответствие вашей модели.
Обратите внимание, что этот индекс соответствия предназначен только для всего набора данных, но следует использовать модель в наборе проверки X_test для проверки производительности невидимых данных. К сожалению, кажется, что нет простого способа использовать команду «прогнозировать» для отдельного набора проверки, как в scikit (и эта опция не доступна для sksurv.linear-model). К счастью, в библиотеке жизненных линий есть как минимум возможность выполнить перекрестную проверку в k-кратном порядке, и усредненная производительность от этого должна быть вполне сравнима с производительностью только одного набора задержек, так что давайте воспользуемся хотя бы этой опцией.
Согласованность теперь составляет 0,680, что обнадеживает ненамного ниже, чем полученное в результате обучения на всем наборе данных.
Итак, мы уже обсудили предположения Cox-PH, но не проверили их. Как следует из документации библиотеки Lifelines, нарушенные допущения допустимы, если целью является чистое предсказание, а не статистический вывод. Тем не менее, давайте рассмотрим простую команду для проверки неверных предположений.
Что можно сделать, чтобы исправить нарушенные допущения о пропорциональных опасностях? Стратифицировать по переменной, если она категориальная, а если она непрерывная, сначала разбить ее на группы, прежде чем стратифицировать по ней. Также можно создать переменные взаимодействия переменной со временем.
Олкай Цирит и его команда из Uber AI смогли создать нейронную сеть, которая превзошла XGBoost. Узнайте больше, просмотрев этот ролик из нашего недавнего круглого стола для клиентов Comet.
Выживание SVM
Survival SVM, кажется, немного отличается от исходной модели машин опорных векторов. Оба гиперпараметра gamma и C, обнаруженные в канонической SVM scikit, по-видимому, недоступны для SVM выживания, хотя альфа в FastSurvivalSM, по-видимому, относится к гиперпараметру C, который контролирует, насколько некорректна классификация, которую вы допускаете при обучении (и таким образом, гиперпараметр регуляризации).
В частности, в FastSurvivalSVM используется только линейное ядро (линейная граница разделения), но «из sksurv.kernels import Clinical_kernel» дает нам возможность определить оптимальное ядро для использования.
Здесь было опробовано несколько альфа-каналов, но ни один другой не показал более высокой согласованности, чем 0,684. Если вам интересно, почему здесь не используется поиск по сетке, это связано с тем, что GridSearchCV предназначался для стандартных алгоритмов машинного обучения (не связанных с анализом выживания), так что индекс соответствия и оценка Бриера, обычно используемые для анализа выживания, не являются параметрами в разделе «оценка». Эта проблема усугубляется тем, что единственным показателем оценки FastSurvivalSVM является индекс соответствия. Следовательно, если вы попытаетесь получить «best_scores_» через GridSearchCV даже после указания другой метрики оценки в GridSearchCV, такой как «точность», это даст нулевой результат, что сделает критерии выбора полностью непрозрачными. Было бы лучше самостоятельно зациклить ваши комбинации гиперпараметров на модели, чтобы сравнить соответствие здесь, или, возможно, создать собственную функцию оценки для передачи в GridSearchCV.
*Вероятно, интересно отметить, что версия, преобразующая порядковую переменную tgrade в фиктивную переменную, как и другие категориальные переменные, привела к увеличению согласованности до 0,693, в то время как согласованность других моделей осталась прежней или немного снизилась примерно на .01. Не совсем ясно, является ли это поведение, демонстрируемое SVM выживания, просто случайностью или оно имеет тенденцию лучше работать с категориальными, а не с порядковыми переменными (идея возможности использовать больше степеней свободы, но неясно, почему это не так). похоже, не применяются к другим моделям для тех же данных).
Дерево выживания
Дерево выживания имеет ту же архитектуру, что и дерево решений. Однако вместо использования Джини, энтропии или других критериев разделения на основе дерева он использует статистическую значимость критерия логарифмического ранга и статистическую величину теста. Тест логарифмического ранга - это обычно используемый тест в каноническом анализе выживаемости для проверки статистически значимой разницы между двумя кривыми выживаемости. (Это также можно визуализировать, проверив, перекрываются ли доверительные интервалы вокруг каждой кривой.) Выбранный объект-кандидат и точка на спектре переменной для разделения основаны на этих критериях логарифмического ранга. Прогнозируемый результат также отличается от дерева решений и представляет собой кумулятивную опасность.
Очевидно, что одним из преимуществ дерева выживания по сравнению с регрессией анализа выживания является автоматическое обнаружение переменных взаимодействия, хотя, если бы у вас было дерево очень небольшой глубины, вы могли бы преобразовать ветвление в переменные взаимодействия в регрессии с дополнительным преимуществом легкости. обычная интерпретируемость с регрессией.
Давайте посмотрим, как закодировать дерево выживания, а также посмотрим на его соответствие.
Согласованность этого дерева выживания составляет 0,665, что ниже, чем у регрессии Кокса-PH. Возможно, этот результат можно было бы улучшить, используя расширенный поиск по сетке, но уже были опробованы несколько комбинаций гиперпараметров, близких к используемой.
Случайный лес выживания
Это всего лишь версия дерева выживания в RandomForest, а это означает, что есть бэггинг — подвыборка наблюдений для использования в каждом дереве. В каждом узле также используется подвыборка наблюдений, а также подвыборка объектов-кандидатов для разделения. Обычно это квадратный корень из числа признаков. Теоретически предполагается, что Survival Random Forest улучшит регулярную регрессию анализа выживания за счет автоматического обнаружения переменных взаимодействия (что также делают деревья выживания), а также за счет того, что метод ансамбля снижает вероятность переобучения, сохраняя при этом низкую погрешность.
Давайте сейчас запустим модель Random Survival Forest и посмотрим, соответствует ли она этим ожиданиям в данном конкретном случае.
Согласованность составляет 0,676, что является небольшим и ожидаемым улучшением по сравнению с деревом выживания, но все же немного бледнеет по сравнению с моделью Cox-PH. Опять же, возможно, эта модель выиграла бы от исчерпания большего количества комбинаций гиперпараметров.
Градиентный анализ выживания
Разница между этим и Random Survival Forest заключается просто в разнице между бэггингом как методом параллельного ансамблевого обучения и бустингом как методом последовательного ансамблевого обучения. Я также воспользуюсь аналогией из моего прошлого поста на LinkedIn. Несмотря на то, что сравнение проводится с XGBoost, XGBoost очень похож на GBM, являясь методом повышения дерева.
RandomForest — это как взращивание большого количества подписчиков в Instagram и принятие решений на основе их «голосов». объединенные вместе, могут дать вам сильный ответ.
XGBoost тратит время на выращивание одного дерева, вероятно, психотерапевта, который будет узнавать о вас все больше и больше и пересматривать прошлые недоразумения с каждым сеансом (по крайней мере, в теории).
Предполагается, что XGBoost и, в некоторой степени, GBM превзойдут регрессии и все другие модели машинного обучения, включая RandomForest, поэтому давайте посмотрим, оправдывает ли градиентный повышающий анализ выживаемости ожидания в этом дополнительном продукте анализа выживаемости.
Согласованность немного ниже, чем у SVM выживания, и чуть выше, чем у Cox-PH, но опять же, возможно, модель могла бы выиграть от более исчерпывающего поиска гиперпараметров. Тем не менее, это оправдывает наши ожидания, что повышение градиента будет работать лучше, чем деревья решений и RandomForest.
Заключение
Результаты в значительной степени соответствуют ожиданиям для древовидных моделей, если исходить из анекдотических относительных характеристик повышения градиента, RandomForest и деревьев решений. Эти ожидаемые относительные характеристики были перенесены из их канонических форм ML в их побочные продукты для выживания. Тем не менее, что было неожиданным и интересным, так это сопоставимость Cox-PH с градиентным бустером в анализе выживаемости, а также превосходство выживаемости SVM над анализом выживаемости с градиентным бустером.
Возможно, еще более многообещающим для выживания SVM является то, что он потенциально может показать еще больше преимуществ в производительности в будущем, если исследования смогут строго продемонстрировать, лучше ли и почему он работает с категориальными признаками по сравнению с другими методами анализа выживаемости. Все любят аутсайдеров, и я болею за этого!
Примечание редактора. Heartbeat — это интернет-издание и сообщество, созданное участниками и посвященное предоставлению лучших образовательных ресурсов для специалистов по науке о данных, машинному обучению и глубокому обучению. Мы стремимся поддерживать и вдохновлять разработчиков и инженеров из всех слоев общества.
Независимая от редакции, Heartbeat спонсируется и публикуется Comet, платформой MLOps, которая позволяет специалистам по данным и командам машинного обучения отслеживать, сравнивать, объяснять и оптимизировать свои эксперименты. Мы платим нашим авторам и не продаем рекламу.
Если вы хотите внести свой вклад, перейдите к нашему призыву к участию. Вы также можете подписаться на получение нашего еженедельного информационного бюллетеня (Еженедельник глубокого обучения), заглянуть в блог Comet, присоединиться к нам в Slack и подписаться на Comet в Twitter и LinkedIn для получения ресурсов и событий. и многое другое, что поможет вам быстрее создавать более качественные модели машинного обучения.