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

Анализ выживания и объяснимость

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

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

Сложность вывода моделей выживания означает, что стандартные методы объяснения не могут быть применены напрямую.

По этой причине мы (я и команда: Матеуш Кржизинский, Хуберт Банецкий и Пшемыслав Бичек) разработали пакет R — survex. , который дает объяснения для моделей выживания. Мы надеемся, что этот инструмент позволит более широко использовать сложные модели анализа выживания с помощью машинного обучения. До сих пор предпочтение отдавалось более простым статистическим моделям, таким как пропорциональные риски Кокса, из-за их интерпретируемости, что жизненно важно в таких областях, как медицина, даже несмотря на то, что они часто уступали сложным моделям машинного обучения.

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

Что влияет на общие предсказания модели?

Знание того, какие переменные являются наиболее важными для интересующей модели при прогнозировании, имеет решающее значение. Эту информацию можно сравнить со знаниями предметной области и использовать для оценки того, сделаны ли прогнозы на основе правильных переменных или модель использует что-то неожиданное для получения выходных данных. Объяснения такого рода можно вычислить с помощью функции model_parts() функции survex.

Чтобы измерить глобальную важность переменных, мы используем пермутационную важность переменной. Интуитивно это работает так: мы переставляем одну переменную (столбец) набора данных и делаем прогнозы, используя этот переставленный ввод. Затем вычисляем метрику производительности и смотрим, насколько ухудшилась производительность модели после перестановки по сравнению с исходным результатом. Мы повторяем это для всех переменных в наборе данных.

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

Ниже вы можете увидеть важность перестановочной переменной для модели Random Survival Forest.

Мы видим, что переменная karno является самой важной до момента времени ~100, а затем celltype выходит вперед.

Как прогноз меняется в среднем?

Другой вопрос, который может задать пользователь модели выживания, заключается в следующем: как прогнозы модели зависят от индивидуальных переменных? Конечно, на этот вопрос сложно ответить, потому что модели сложны, а переменные часто зависят друг от друга, но профили частичной зависимости, доступные через функцию model_profile() в survex, предоставляют такого рода информацию.

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

Ниже представлены частные профили зависимости для двух переменных — категориальной — celltype и непрерывной — karno.

Мы видим, что типы клеток large и squamous почти синонимичны модели, как и adeno и smallcell, причем последние имеют гораздо худшие шансы на выживание. Мы также наблюдаем, что наблюдения с высокими значениями непрерывной переменной karno с большей вероятностью сохранятся дольше.

Что влияет на прогноз для выбранного наблюдения?

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

Это можно сделать с помощью методов SurvSHAP(t) и SurvLIME, доступных методом predict_parts() в survex.

SurvSHAP(t) — это расширение пояснений SHAP для моделей с функциональным выходом. Основная идея состоит в том, чтобы вычислить отклики модели с «отключенными» некоторыми переменными и увидеть аддитивный эффект от их включения в разных подмножествах. Полученное объяснение имеет некоторые приятные свойства, например, значения SurvSHAP(t) для всех переменных суммируются со средним прогнозом для набора данных. Этот метод позволяет выявлять эффекты, зависящие от времени, для некоторых переменных — рассматриваемое лечение может быть эффективным в начале, но начиная с определенного момента времени шансы на выживание могут снижаться.

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

Ниже представлены оба этих объяснения одного и того же наблюдения. Они показывают, что для этого наблюдения функция выживания ниже среднего, а основной вклад вносят переменные celltype и age. SurvSHAP(t) показывает вклад каждой переменной отдельно для каждого момента времени, тогда как SurvLIME описывает только общий вклад. Для объяснения SurvLIME функция выживания суррогатной модели также отображается вместе с объяснением модели черного ящика, поскольку это информирует нас о том, насколько близко объяснение действительно соответствует фактическому прогнозу.

Как изменится прогноз для выбранного наблюдения?

Вопрос «а что, если?» вдохновляет следующий тип объяснения. Это профили при прочих равных условиях, и они помогают нам понять, что происходит с прогнозом модели, когда мы меняем переменную для одного наблюдения (пациента). Его можно использовать для проверки правильности модели, например, мы можем проверить, повысит ли введение лечения согласно модели шансы на выживание пациента. Эти пояснения доступны через функцию predict_profile() survex.

Ниже при прочих равных условиях представлено объяснение переменной age.

Мы видим, что если бы пациент был моложе, у него были бы более высокие шансы на выживание в этом конкретном наблюдении.

Измерение производительности

Производительность моделей, используемых для принятия решений, особенно в таких важных областях, как медицина, имеет решающее значение для пользователей. survex позволяет измерять и сравнивать модели с помощью функции model_performance(). Производительность моделей выживания можно измерять по-разному — некоторые метрики зависят от времени, то есть оценивают производительность в конкретные моменты времени. К ним относятся показатель Бриера (также известный как показатель Графа) и C/D AUC. Другие, такие как индекс соответствия и интегрированные версии оценки Брайера и C/D AUC, предоставляют информацию об общей производительности модели во всем временном интервале.

Показатель Бриера является эквивалентом показателя MSE с небольшими корректировками, позволяющими учитывать цензурированные данные, тогда как C/D AUC является расширением показателя AUC, известного из задач классификации.

Ниже вы можете увидеть сравнение этих метрик, подготовленных с помощью survex для двух моделей.

Краткое содержание

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

Если эта статья кажется убедительной, нет лучшего способа узнать, как все это работает, чем проверить это самостоятельно. Мы настоятельно рекомендуем вам попробовать объяснения, предоставленные survex, для себя. Просто введите install.packages("survex") и начните объяснять свои модели выживания!

Если вас интересуют другие публикации об объяснимом, справедливом и ответственном машинном обучении, подпишитесь на #ResponsibleML на Medium.

Чтобы увидеть больше контента, связанного с R, посетите https://www.r-bloggers.com