Предположим, я хочу построить двоичный классификатор. У меня есть несколько тысяч функций и только несколько десятков образцов. Исходя из знания предметной области, у меня есть веские основания полагать, что метка класса может быть точно предсказана с использованием всего лишь нескольких функций, но я не знаю, какие из них. Я также хочу, чтобы правило окончательного решения было легко интерпретировать / объяснить, что также требует небольшого количества функций. Некоторые подмножества моих функций сильно коррелированы, поэтому выбор самых предсказательных из них независимо не будет работать. Я также хочу иметь возможность осмысленно проверять гипотезы моих функций.
Целесообразна ли следующая пошаговая процедура регрессии в этих условиях:
Учитывая особенности, уже имеющиеся в модели (или просто перехват на первой итерации), выберите функцию, которая при добавлении в модель дает наибольшее отношение правдоподобия журнала. Используйте критерий хи-квадрат отношения правдоподобия, чтобы рассчитать номинальное значение P для каждого теста гипотез, выполненного в этом выборе. Ноль здесь состоит в том, что добавление дополнительной переменной в модель не дает дополнительной предсказательной способности. Альтернатива заключается в том, что это увеличивает
Рассматривайте гипотезы, проверенные на шаге 1 каждой итерации, как семейство и вычисляйте частоту ложных открытий для наименьшего значения P (для выбранной функции), используя что-то вроде Бенджамини-Хохберга.
Перейти к 1, если не выполнены некоторые критерии остановки.
Сообщите о ложных показателях обнаружения для отдельных функций, но не P-значение для модели в целом (так как это будет значительно завышено). Каждое из этих множественных исправленных значений P представляет статистическую значимость этого признака с учетом всех признаков, ранее добавленных в модель.
Делает ли что-то подобное в этих обстоятельствах удачно ли все типичные критические замечания о ступенчатой регрессии? Являются ли ставки ложного обнаружения, рассчитанные таким образом, разумными?
Ответы:
Я бы не рекомендовал вам использовать эту процедуру. Моя рекомендация: отказаться от этого проекта. Просто сдавайся и уходи. У вас нет надежды на эту работу.
источник для изображения
Если отбросить стандартные проблемы с пошаговым отбором (см. Здесь ), в вашем случае вы, скорее всего, будете иметь совершенные прогнозы из-за разделения в таком многомерном пространстве.
У меня нет конкретной информации о вашей ситуации, но вы заявляете, что у вас есть «всего несколько десятков образцов». Давайте будем благотворительными и скажем, у вас есть 90. Вы также говорите, что у вас есть «несколько тысяч функций». Давайте представим, что у вас «только» 2000. Для простоты предположим, что все ваши функции являются двоичными. Вы «верите, что метку класса можно точно предсказать, используя только несколько функций», скажем, вы будете искать наборы максимум из 9 функций. Наконец, давайте представим, что отношения детерминированы, поэтому истинные отношения всегда будут идеально присутствовать в ваших данных. (Мы можем изменить эти цифры и предположения, но это только усугубит проблему.) Теперь насколько хорошо вы сможете восстановить эти отношения в этих (щедрых) условиях? То есть как часто правильный набор будет единственным набором, который дает идеальную точность? Или, другими словами, сколько наборов из девяти функций также подойдет случайно?
Некоторые (чрезмерно) простые математические и симуляторы должны дать некоторые подсказки к этому вопросу. Во-первых, с 9 переменными, каждая из которых может быть 0 или 1, количество шаблонов, которые может показать наблюдение, составляет , но у вас будет только 90 наблюдений. Таким образом, вполне возможно, что для данного набора из 9 двоичных переменных каждое наблюдение имеет различный набор значений предикторов - нет повторов. Без повторов с одинаковыми значениями предикторов, где некоторые имеют y = 0, а некоторые y = 1, у вас будет полное разделение, и будет возможно точное предсказание каждого наблюдения.29=512
Ниже у меня есть симуляция (закодированная в R), чтобы увидеть, как часто вы можете не иметь шаблонов значений х с 0 и 1. Это работает так, что я получаю набор чисел от 1 до 512, которые представляют возможные шаблоны, и вижу, соответствует ли какой-либо из шаблонов в первых 45 (это могут быть 0) какой-либо из шаблонов во вторых 45 (это может быть 1 с). Это предполагает, что у вас есть идеально сбалансированные данные ответов, что обеспечивает вам наилучшую защиту от этой проблемы. Обратите внимание, что наличие реплицированных x-векторов с различными значениями y на самом деле не выводит вас из леса, это просто означает, что вы не сможете точно предсказать каждое отдельное наблюдение в вашем наборе данных, что является очень строгим стандартом I пользуюсь здесь.
Моделирование предполагает, что у вас возникнет эта проблема примерно с 1,8% наборов из 9 x-переменных. Сколько сейчас наборов из 9? Строго говоря, это будет (поскольку мы оговорили, что истинные 9 детерминированных причинных переменных находятся в вашем наборе). Однако многие из этих наборов будут перекрываться; будет 1991 / 9 ≈ 221 неперекрывающиеся наборы 9 в пределах указанного раздела ваших переменных (со многими такими разделами возможно). Таким образом, в некотором данном разделе мы могли бы ожидать, что будет 221 × 0,018 ≈ 41991 choose 9=1.3×1024 1991/9≈221 221×0.018≈4 наборы из 9 x-переменных, которые отлично предсказывают каждое наблюдение в вашем наборе данных.
Обратите внимание, что эти результаты только для случаев, когда у вас есть относительно большой набор данных (в пределах «десятков»), относительно меньшее количество переменных (в пределах «тысяч»), только ищет случаи, когда каждое отдельное наблюдение может быть предсказано идеально ( будет еще много подходов, которые почти идеальны) и т. д. Ваш реальный случай вряд ли сработает «так хорошо». Более того, мы оговорили, что эти отношения совершенно детерминированы. Что произойдет, если в отношениях будет какой-то случайный шум? В этом случае у вас все еще будет ~ 4 (нулевых) набора, которые идеально предсказывают ваши данные, но правильный набор может не входить в их число .
Tl; dr , суть в том, что ваш набор переменных слишком большой / большой размер, а ваш объем данных слишком мал, чтобы что-либо было возможно. Если действительно верно, что у вас есть «десятки» выборок, «тысячи» переменных и абсолютно нет земного представления о том, какие переменные могут быть правильными, у вас нет надежды получить какую-либо процедуру. Иди делай что-нибудь еще со своим временем.
источник
Поэтому я бы предложил оценить прогноз напрямую, а не соотношение правдоподобия. Однако прогнозируемое наблюдение не следует включать в оценку модели (поскольку именно с такой ситуацией вы столкнетесь при фактическом использовании вашей модели). Итак, сделайте новый шаг 1) (жирным шрифтом является мое предлагаемое изменение). 1) Учитывая особенности, уже имеющиеся в модели (или только пересечение на первой итерации), выберите функцию, которая дает лучшие прогнозы при добавлении в модель.
Теперь вам нужно определиться
Я сделаю предложение для каждого:
Шаг за шагом может быть рискованным, потому что вы можете найти «локальные максимумы» вместо «глобальных максимумов», особенно потому, что у вас есть такое большое количество предикторов (это большое «пространство» для оптимизации и, вероятно, мультимодальное - имеется ввиду много "лучших" моделей)
Я думаю, вам будет гораздо проще обосновать свой выбор конечной модели для не статистиков, чем пытаться объяснить, почему значение p указывает, что модель хорошая.
Два последних замечания:
источник