Czy solidne metody są naprawdę lepsze?

17

Mam dwie grupy badanych, A i B, każda o wielkości około 400 i około 300 predyktorów. Moim celem jest zbudowanie modelu predykcyjnego dla zmiennej odpowiedzi binarnej. Mój klient chce zobaczyć wynik zastosowania modelu zbudowanego z A na B. (W swojej książce „Strategie modelowania regresji” @FrankHarrell wspomina, że ​​lepiej jest połączyć dwa zestawy danych i zbudować na nim model, ponieważ powoduje to dodanie moc i precyzja --- patrz strona 90, Zewnętrzna walidacja. Zwykle się z nim zgadzam, biorąc pod uwagę, że zbieranie danych, które posiadam, jest bardzo kosztowne i czasochłonne. Ale nie mam wyboru, czego chce klient .) Wiele moich predyktorów jest wysoce skorelowanych, a także bardzo wypaczonych. Używam regresji logistycznej do budowy mojego modelu predykcyjnego.

Moje predyktory pochodzą głównie z mechaniki. Na przykład całkowity czas pacjent był pod wpływem stresu wyższego niż próg α przez okres czasu [t1,t2] , dla różnych wartości α>0 i 0t1<t2 . Oczywiste jest, że właśnie z ich definicji wiele z tych całkowitych czasów jest ze sobą powiązanych algebraicznie. Wiele predyktorów, które nie są algebraicznie powiązane, są ze względu na swoją naturę: podmioty, które są pod dużym stresem w pewnym okresie czasu [t1,t2]mają tendencję do dużego stresu w czasie [t3,t4] , nawet jeśli . Aby zmniejszyć wymiar danych, zgrupowałem powiązane predyktory razem (na przykład wszystkie całkowite czasy naprężeń razem) i zastosowałem analizę składowych głównych do przedstawienia każdego klastra. Ponieważ zmienne były wypaczone, wypróbowałem dwie alternatywne ścieżki:[t1,t2][t3,t4]=

  • Przed wykonaniem PCA użyłem transformacji logarytmicznej, aby zmniejszyć pochylenie zmiennych.
  • Użyłem algorytmu ROBPCA Mii Hubert, zaimplementowanego przez pakiet rrcov w R (PcaHubert), aby znaleźć solidne główne komponenty.

Używam ogólnego kształtu krzywej ROC, kształtu krzywej precyzyjnego przywołania oraz obszaru pod krzywą ROC (AUC) jako moich miar wydajności i chciałbym uzyskać podobne wyniki dla obu zestawów danych A i B Oczekiwałem, że uzyskam znacznie lepszy wynik dzięki zastosowaniu solidnych głównych komponentów, ale ku mojemu zaskoczeniu pierwsza metoda była lepsza: lepsza wartość AUC dla obu zestawów danych A i B, większe podobieństwo między krzywymi ROC i bardziej podobne przypominanie o precyzji Krzywe.

Jakie jest tego wytłumaczenie? I w jaki sposób mogę użyć solidnych głównych komponentów, zamiast próbować sprawić, by moje dane wyglądały normalnie? Czy są jakieś szczególne solidne metody PCA, które poleciłbyś zamiast ROBPCA?

użytkownik765195
źródło
„Zgrupowałem powiązane predyktory razem”. Czy możesz lepiej wyjaśnić, jakie kroki się z tym wiążą? „Spodziewałem się znacznie lepszego wyniku dzięki zastosowaniu solidnych głównych komponentów”. Czy możesz wyjaśnić, w jaki sposób mierzysz wyniki?
user603
Jak myślisz, dlaczego lepiej połączyć zestawy danych? W ogóle się nie zgadzam. Jedną z trudności tego rodzaju problemu jest zbyt duże uzależnienie od konkretnych danych. Testowanie modelu na innym zestawie danych jest dobrym pomysłem.
Peter Flom - Przywróć Monikę
W jakim sensie zwykłe PCA na zmiennych dziennika było „lepsze”? Czy miało to bardziej intuicyjny sens? Czy dało to lepszy wynik w drugim zestawie danych?
Peter Flom - Przywróć Monikę
Dziękuję @PeterFlom za komentarze! Zaktualizowałem pytanie według twoich komentarzy.
user765195,
Dziękuję @ user603 za komentarz! Zaktualizowałem pytanie, aby odzwierciedlić twój komentarz.
user765195,

Odpowiedzi:

17

Krótko mówiąc, z twojego opisu porównujesz jabłko do pomarańczy .... na dwa sposoby.

Pozwólcie, że pokrótce omówię pierwszy problem dotyczący porównywalności. Transformacja dziennika nie rozwiązuje problemu wartości odstających. Może to jednak pomóc uczynić silnie wypaczone dane bardziej symetrycznymi, potencjalnie poprawiając dopasowanie dowolnej metody PCA. Krótko mówiąc, danych nie zastępuje rzetelnej analizy, aw niektórych przypadkach (skośne dane) może być uzupełnieniem. Aby odłożyć na bok ten pierwszy błąd, w dalszej części tego postu używam przekształconej logami wersji niektórych asymetrycznych bi-zmiennych danych.log

Rozważ ten przykład:

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))) 

dane

Teraz dopasuj dwa modele (ROBPCA i klasyczne PCA oba do dziennika danych):

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

Rozważmy teraz oś najmniejszej zmienności znalezionej każdą metodą (tutaj, dla wygody, rysuję ją na przestrzeni przekształconej w log, ale otrzymamy takie same wnioski na temat pierwotnej przestrzeni).

Model

Widocznie ROBPCA lepiej radzi sobie z niezanieczyszczoną częścią danych (zielone kropki):

Ale teraz przechodzę do drugiego punktu.

H.uzjawja

masz to (jest to ciche widoczne na powyższej fabule):

jaH.u(zja)2)<jaH.u(wja)2)(1)

Ale wydajesz się być zaskoczony, że:

ja=1n(zja)2)>ja=1n(wja)2)(2))

- tak, jak opisałeś swoją procedurę testową, obliczasz kryterium oceny dopasowania dla całego zestawu danych, więc twoje kryterium oceny jest monotonną funkcją (2), w której powinieneś użyć monotonnej funkcji (1) -

Innymi słowy, nie oczekuj, że niezawodne dopasowanie będzie zawierało mniejszą sumę kwadratowych reszt ortogonalnych niż nieobciążona procedura w pełnym zbiorze danych: nieobciążony estymator jest już unikalnym minimalizatorem SSOR w pełnym zbiorze danych.

użytkownik603
źródło
1
Dziękuję za odpowiedź. Zajęło mi trochę czasu, aby poeksperymentować z innymi danymi i zastanowić się nad odpowiedzią, aby naprawdę je zrozumieć.
user765195,