Р: Кластеризация — как предсказать новые случаи?

У меня есть 4000 (непрерывных) переменных-предикторов в наборе из 150 пациентов. Во-первых, следует определить переменные, связанные с выживаемостью. Поэтому я использую функцию множественных процедур тестирования (http://svitsrv25.epfl.ch/R-doc/library/multtest/html/MTP.html) с t-статистикой для тестов коэффициентов регрессии в моделях выживания с пропорциональными рисками Кокса для выявления значимых предикторов. Этот анализ определяет 60 параметров, которые в значительной степени связаны с выживаемостью. Затем я выполняю неконтролируемую кластеризацию k-средних с помощью пакета ConensusClusterPlus (https://www.bioconductor.org/packages/release/bioc/html/ConsensusClusterPlus.html), который определяет 3 кластера как оптимальное решение на основе кривой CDF и графика развития. Если я затем проведу анализ выживаемости Каплана-Мейера, я увижу, что каждый из трех кластеров связан с отчетливым паттерном выживаемости (низкая/промежуточная/долгая выживаемость).

Теперь у меня есть следующий вопрос: давайте предположим, что у меня есть еще один набор из 50 пациентов, где я хотел бы предсказать, к какому из трех кластеров, скорее всего, принадлежит каждый пациент. Как я могу этого добиться? Нужно ли мне обучать классификатор (например, с помощью пакета Caret (topepo.github.io/caret/bytag.html), где 150 пациентов с 60 значимыми параметрами находятся в обучающем наборе, и алгоритм знает, какой пациент был выделен для какой из трех кластеров) и проверить классификатор на 50 новых пациентах? А затем выполните анализ выживаемости Каплана-Мейера, чтобы увидеть, связаны ли снова предсказанные кластеры в проверочном наборе (n = 50) с отчетливым паттерном выживаемости?

Спасибо за вашу помощь.


person user86533    schedule 09.11.2015    source источник


Ответы (2)


Ответ намного проще. У вас есть k-средние значения с 3 кластерами. Каждый кластер идентифицируется своим центром тяжести (точкой в ​​вашем 60-мерном пространстве). Чтобы «классифицировать» новую точку, вы просто измеряете евклидово расстояние до каждого из этих трех центроидов и выбираете ближайший кластер. Это все. Это происходит непосредственно из того факта, что k-means дает вам разбиение всего пространства, а не только вашего тренировочного набора.

person lejlot    schedule 09.11.2015
comment
Хорошо, спасибо за ваш отзыв. Я только что обнаружил еще одну публикацию, в которой был задан аналогичный вопрос: stackoverflow.com/questions/22300830/ - ваше решение, скорее всего, соответствует варианту № 2 в другом сообщении. Однако вариант № 3 (то, что я упомянул в сообщении), насколько я понимаю, также является жизнеспособным решением? - person user86533; 10.11.2015
comment
короче говоря, вы можете делать все, что угодно; однако создание классификатора для имитации кластеризации бессмысленно, поскольку кластеризация является оптимальным классификатором по этому критерию. - person lejlot; 10.11.2015

Мой совет — создать прогностическую модель, такую ​​как случайный лес, используя в качестве результата номер кластера. Это приведет к лучшим результатам, чем прогнозирование с использованием расстояний в кластере.

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

person Pablo Casas    schedule 22.05.2017