Вменяемая ступенчатая регрессия?

14

Предположим, я хочу построить двоичный классификатор. У меня есть несколько тысяч функций и только несколько десятков образцов. Исходя из знания предметной области, у меня есть веские основания полагать, что метка класса может быть точно предсказана с использованием всего лишь нескольких функций, но я не знаю, какие из них. Я также хочу, чтобы правило окончательного решения было легко интерпретировать / объяснить, что также требует небольшого количества функций. Некоторые подмножества моих функций сильно коррелированы, поэтому выбор самых предсказательных из них независимо не будет работать. Я также хочу иметь возможность осмысленно проверять гипотезы моих функций.

Целесообразна ли следующая пошаговая процедура регрессии в этих условиях:

  1. Учитывая особенности, уже имеющиеся в модели (или просто перехват на первой итерации), выберите функцию, которая при добавлении в модель дает наибольшее отношение правдоподобия журнала. Используйте критерий хи-квадрат отношения правдоподобия, чтобы рассчитать номинальное значение P для каждого теста гипотез, выполненного в этом выборе. Ноль здесь состоит в том, что добавление дополнительной переменной в модель не дает дополнительной предсказательной способности. Альтернатива заключается в том, что это увеличивает

  2. Рассматривайте гипотезы, проверенные на шаге 1 каждой итерации, как семейство и вычисляйте частоту ложных открытий для наименьшего значения P (для выбранной функции), используя что-то вроде Бенджамини-Хохберга.

  3. Перейти к 1, если не выполнены некоторые критерии остановки.

  4. Сообщите о ложных показателях обнаружения для отдельных функций, но не P-значение для модели в целом (так как это будет значительно завышено). Каждое из этих множественных исправленных значений P представляет статистическую значимость этого признака с учетом всех признаков, ранее добавленных в модель.

Делает ли что-то подобное в этих обстоятельствах удачно ли все типичные критические замечания о ступенчатой ​​регрессии? Являются ли ставки ложного обнаружения, рассчитанные таким образом, разумными?

dsimcha
источник
3
Есть ли причина не подходить к регрессионному подходу с наказанием (лассо, эластик и т. Д.)?
Бен Болкер

Ответы:

11

Я бы не рекомендовал вам использовать эту процедуру. Моя рекомендация: отказаться от этого проекта. Просто сдавайся и уходи. У вас нет надежды на эту работу.

Dore иллюстрация Адского Данте "Оставь надежду" источник для изображения

Если отбросить стандартные проблемы с пошаговым отбором (см. Здесь ), в вашем случае вы, скорее всего, будете иметь совершенные прогнозы из-за разделения в таком многомерном пространстве.

У меня нет конкретной информации о вашей ситуации, но вы заявляете, что у вас есть «всего несколько десятков образцов». Давайте будем благотворительными и скажем, у вас есть 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 пользуюсь здесь.

set.seed(7938)  # this makes the simulation exactly reproducible
my.fun = function(){
  x = sample.int(512, size=90, replace=TRUE)
  return(sum(x[1:45]%in%x[46:90])==0)
}
n.unique = replicate(10000, my.fun())
mean(n.unique)  # [1] 0.0181

Моделирование предполагает, что у вас возникнет эта проблема примерно с 1,8% наборов из 9 x-переменных. Сколько сейчас наборов из 9? Строго говоря, это будет (поскольку мы оговорили, что истинные 9 детерминированных причинных переменных находятся в вашем наборе). Однако многие из этих наборов будут перекрываться; будет 1991 / 9 221 неперекрывающиеся наборы 9 в пределах указанного раздела ваших переменных (со многими такими разделами возможно). Таким образом, в некотором данном разделе мы могли бы ожидать, что будет 221 × 0,018 41991 choose 9=1.3×10241991/9221221×0.0184 наборы из 9 x-переменных, которые отлично предсказывают каждое наблюдение в вашем наборе данных.

Обратите внимание, что эти результаты только для случаев, когда у вас есть относительно большой набор данных (в пределах «десятков»), относительно меньшее количество переменных (в пределах «тысяч»), только ищет случаи, когда каждое отдельное наблюдение может быть предсказано идеально ( будет еще много подходов, которые почти идеальны) и т. д. Ваш реальный случай вряд ли сработает «так хорошо». Более того, мы оговорили, что эти отношения совершенно детерминированы. Что произойдет, если в отношениях будет какой-то случайный шум? В этом случае у вас все еще будет ~ 4 (нулевых) набора, которые идеально предсказывают ваши данные, но правильный набор может не входить в их число .

Tl; dr , суть в том, что ваш набор переменных слишком большой / большой размер, а ваш объем данных слишком мал, чтобы что-либо было возможно. Если действительно верно, что у вас есть «десятки» выборок, «тысячи» переменных и абсолютно нет земного представления о том, какие переменные могут быть правильными, у вас нет надежды получить какую-либо процедуру. Иди делай что-нибудь еще со своим временем.

Gung - Восстановить Монику
источник
1
Теперь это оригинальное вступление к ответу, мне это нравится.
Лукаш Град
1
Отказ от проекта часто является разумным вариантом. Хотя, конечно, небольшая доля случаев, я неоднократно советовал клиентам, что проекты, которые они имеют в виду, не будут работать.
gung - Восстановить Монику
1

Yi ;(i=1,,n)Xij ;(j=1,,p)YY=0Y=1γmm ;(m=1,..,M)γmTXijXij0

XjY=1Y=0

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

Теперь вам нужно определиться

  1. что вы хотите, чтобы «лучше» означало математически
  2. как разделить ваши данные на «подходящие» и «предсказывающие» части

Я сделаю предложение для каждого:

  1. Y=1Y=0F=CC+IFCI
  2. 12,,n121,3,,n2nF=CnFm

Fm(m=1,,M)m=argmaxmMFm

sthMs=p+1XjXj

Шаг за шагом может быть рискованным, потому что вы можете найти «локальные максимумы» вместо «глобальных максимумов», особенно потому, что у вас есть такое большое количество предикторов (это большое «пространство» для оптимизации и, вероятно, мультимодальное - имеется ввиду много "лучших" моделей)

100F

Я думаю, вам будет гораздо проще обосновать свой выбор конечной модели для не статистиков, чем пытаться объяснить, почему значение p указывает, что модель хорошая.

Y

Два последних замечания:

  1. Вы также можете использовать этот механизм, чтобы решить, является ли пошаговый выбор лучше, чем выбор вперед (только добавить переменные) или выбор назад (начать с полной модели и удалить только переменные).
  2. pnXTXXTWX(XTX+λI)1XTY(XTWX+λI)1XTWYλλ
probabilityislogic
источник
Спасибо за совет. Однако есть три проблемы: 1. Я забочусь о количественной оценке неопределенности в моих прогнозах и вкладе каждой переменной, а не только точности двоичного предсказания. 2. Учитывая характер моего набора данных, он слишком сложен в вычислительном отношении. 3. Исходя из знаний предметной области, я считаю, что локальная проблема оптимальности не важна.
дсимча
100nF
На самом деле вы правы. Эта процедура будет частью большей кодовой базы, и я забыл, что часть остального кода не нужно будет перезапускать для каждой итерации ножа. Другие два пункта все еще применяются, хотя.
дсимча
FFFсчасоsеN-F(-J)похоже на предельное влияние j-й переменной на точность прогнозирования для каждой переменной)
вероятностное
Другая проблема заключается в том, что мой ответ является общим в критерии, потому что я не знаю, каковы последствия использования этого классификатора. Если вы знаете больше справочной информации, тоFследует изменить, чтобы отразить то, что важно, когда вы фактически будете использовать классификатор, а не то, что важно, когда вы подгоняете модель. Я полагаю, я ясно дал это понять в своем ответе.
вероятностная