Надежные методы действительно лучше?

17

У меня есть две группы субъектов, A и B, каждая из которых имеет размер около 400 и около 300 предикторов. Моя цель - построить модель прогнозирования для бинарной переменной ответа. Мой клиент хочет увидеть результат применения модели, построенной из A на B. (В своей книге «Стратегии регрессионного моделирования», @FrankHarrell упоминает, что лучше объединить два набора данных и построить модель на этом, так как это добавляет сила и точность - см. стр. 90, Внешняя проверка. Я склонен с ним согласиться, учитывая, что сбор данных, которые у меня есть, очень дорог и требует много времени. Но у меня нет выбора относительно того, что хочет клиент .) Многие из моих предикторов сильно коррелированы и также очень искажены. Я использую логистическую регрессию для построения своей прогнозной модели.

Мои предсказатели происходят в основном из механики. Например, общее время, в течение которого субъект находился в состоянии стресса, превышающем пороговое значение за период времени для различных значений и . Ясно, что только из их определений многие из этих полных времен алгебраически связаны друг с другом. Многие из предикторов, которые не связаны алгебраически, связаны по своей природе: субъекты, находящиеся в состоянии сильного стресса в течение периода времени как правило напряжение в течение периода времени , даже еслиα[T1,T2]α>00T1<T2[T1,T2][T3,T4][T1,T2][T3,T4]знак равно, Чтобы уменьшить размерность данных, я объединил связанные предикторы (например, все общее время стресса) и использовал анализ основных компонентов для представления каждого кластера. Поскольку переменные были искажены, я попробовал два альтернативных пути:

  • Перед выполнением PCA я использовал логарифмическое преобразование, чтобы уменьшить перекос в переменных.
  • Я использовал алгоритм ROBPCA Миа Хьюберта, реализованный пакетом rrcov в R, (PcaHubert), чтобы найти надежные главные компоненты.

Я использую общую форму кривой ROC, форму кривой точного отзыва и площадь под кривой ROC (AUC) в качестве моих показателей эффективности, и я хотел бы получить аналогичные результаты для обоих наборов данных A и B Я ожидал получить гораздо лучший результат от использования надежных основных компонентов, но, к моему удивлению, первый метод оказался лучше: лучшее значение AUC для обоих наборов данных A и B, большее сходство между кривыми ROC и большее сходство точности-отзыва кривые.

Чем это объясняется? И как я могу использовать надежные основные компоненты вместо того, чтобы мои данные выглядели как нормальные? Существуют ли какие-либо конкретные надежные методы PCA, которые вы бы порекомендовали вместо ROBPCA?

user765195
источник
«Я объединил связанные предикторы вместе». Можете ли вы объяснить, какие шаги это включает? «Я ожидал получить гораздо лучший результат от использования надежных основных компонентов». Можете ли вы объяснить, как вы измеряете результаты?
user603
Как вы думаете, почему лучше объединять наборы данных? Я совсем не согласен. Одна из трудностей такого рода заключается в том, что слишком много полагаются на конкретные данные. Тестирование модели на другом наборе данных - хорошая идея.
Питер Флом - Восстановить Монику
В каком смысле обычная PCA по переменным журнала «лучше»? Это имело более интуитивный смысл? Это дало лучший результат во втором наборе данных?
Питер Флом - Восстановить Монику
Спасибо @PeterFlom за ваши комментарии! Я обновил вопрос в соответствии с вашими комментариями.
user765195
Спасибо @ user603 за ваш комментарий! Я обновил вопрос, чтобы отразить ваш комментарий.
user765195

Ответы:

17

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

журнал

Рассмотрим этот пример:

library("MASS")
library("copula")
library("rrcov")
p<-2;n<-100;

eps<-0.2
l1<-list()
l3<-list(rate=1)
#generate assymetric data
model<-mvdc(claytonCopula(1,dim=p),c("unif","exp"),list(l1,l3));
x1<-rMvdc(ceiling(n*(1-eps)),model);
#adding 20% of outliers at the end:
x1<-rbind(x1,mvrnorm(n-ceiling(n*(1-eps)),c(7,3),1/2*diag(2))) 

данные

Теперь поместите две модели (ROBPCA и классическая PCA в журнал данных):

x2<-log(x1)
v0<-PcaClassic(x2)
v1<-PcaHubert(x2,mcd=FALSE,k=2)

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

модель

Видимо, ROBPCA лучше справляется с обработкой незагрязненной части данных (зеленые точки):

Но теперь я перехожу ко второму пункту.

ЧАСUZявеся

у вас есть это (это тихо видно на графике выше):

ΣяЧАСU(Zя)2<ΣяЧАСU(веся)2(1)

Но вы, кажется, удивлены тем, что:

Σязнак равно1N(Zя)2>Σязнак равно1N(веся)2(2)

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

Другими словами, не ожидайте, что надежное согласование будет иметь меньшую сумму квадратов ортогональных невязок, чем ненадежная процедура в вашем полном наборе данных: не надежная оценка уже является уникальным минимизатором SSOR в полном наборе данных.

user603
источник
1
Благодарю за ваш ответ. Мне потребовалось некоторое время, чтобы поэкспериментировать с другими данными и подумать о вашем ответе, чтобы действительно понять его.
user765195