Wybór funkcji dla „ostatecznego” modelu podczas weryfikacji krzyżowej w uczeniu maszynowym

76

Trochę się mylę co do wyboru funkcji i uczenia maszynowego i zastanawiałem się, czy możesz mi pomóc. Mam zestaw danych mikromacierzy, który jest podzielony na dwie grupy i ma tysiące funkcji. Moim celem jest uzyskanie niewielkiej liczby genów (moich cech) (10–20) w sygnaturze, którą teoretycznie będę mógł zastosować do innych zbiorów danych w celu optymalnego sklasyfikowania tych próbek. Ponieważ nie mam tylu próbek (<100), nie używam zestawu testów i szkolenia, ale używam krzyżowej walidacji z pominięciem jednego, aby pomóc w określeniu odporności. Czytałem, że należy dokonać wyboru funkcji dla każdego podziału próbek, tj

  1. Wybierz jedną próbkę jako zestaw testowy
  2. Na pozostałych próbkach dokonaj wyboru funkcji
  3. Zastosuj algorytm uczenia maszynowego do pozostałych próbek, korzystając z wybranych funkcji
  4. Sprawdź, czy zestaw testowy jest poprawnie sklasyfikowany
  5. Idź do 1.

Jeśli to zrobisz, możesz uzyskać różne geny za każdym razem, więc jak uzyskać swój „ostateczny” optymalny klasyfikator genów? tzn. co to jest krok 6.

Przez „optymalne” rozumiem kolekcję genów, którą powinny wykorzystać wszelkie dalsze badania. Powiedzmy na przykład, że mam zbiór danych dotyczących raka / normalności i chcę znaleźć 10 genów, które sklasyfikują typ nowotworu według SVM. Chciałbym poznać zestaw genów plus parametry SVM, które można by wykorzystać w dalszych eksperymentach, aby sprawdzić, czy można je wykorzystać jako test diagnostyczny.

danielsbrewer
źródło
Powinienem powiedzieć, że dla pełnego ujawnienia już pisał o tym do listy BioConductor
danielsbrewer
Proszę podsumować tutaj wyniki bioprzewodników?
Shane

Odpowiedzi:

39

To bardzo dobre pytanie, przed którym stanąłem, pracując z danymi SNP ... I nie znalazłem żadnej oczywistej odpowiedzi w literaturze.

Niezależnie od tego, czy używasz LOO, czy K-fold CV, skończysz z różnymi funkcjami, ponieważ iteracja weryfikacji krzyżowej musi być najbardziej zewnętrzną pętlą, jak powiedziałeś. Możesz pomyśleć o jakimś schemacie głosowania, który oceniałby n-wektory funkcji, które uzyskałeś z LOO-CV (nie pamiętam gazety, ale warto sprawdzić pracę Haralda Bindera lub Antoine Cornuéjols ). W przypadku braku nowej próbki testowej zwykle wykonuje się ponownie zastosowanie algorytmu ML do całej próbki po znalezieniu jej optymalnych parametrów walidowanych krzyżowo. Ale postępując w ten sposób, nie można zapewnić, że nie nastąpi przeregulowanie (ponieważ próbka była już używana do optymalizacji modelu).

np

  1. Cutler, A., Cutler, DR i Stevens, JR (2009). Metody oparte na drzewach, w wysokowymiarowej analizie danych w Cancer Research , Li, X. i Xu, R. (red.), Str. 83-101, Springer.
  2. Saeys, Y., Inza, I. i Larrañaga, P. (2007). Przegląd technik wyboru funkcji w bioinformatyce. Bioinformatics , 23 (19) : 2507-2517.
  3. Díaz-Uriarte, R., Alvarez de Andrés, S. (2006). Selekcja genów i klasyfikacja danych mikromacierzy przy użyciu losowego lasu. BMC Bioinformatics , 7 : 3.
  4. Diaz-Uriarte, R. (2007). GeneSrF i varSelRF: narzędzie internetowe i pakiet R do selekcji i klasyfikacji genów przy użyciu losowego lasu. BMC Bioinformatics , 8 : 328

Skoro mówisz o SVM, możesz szukać ukaranej SVM .

chl
źródło
Dziękuję za to. Nie jestem szczególnie sprzedawany na SVM, po prostu wykorzystując to jako przykład. Więc jeśli użyłeś losowych drzew, nie musisz przeprowadzać weryfikacji krzyżowej? Czy to prawda?
danielsbrewer
7
p
3
Ważne jest, aby nazywał się Losowy Las, a nie Losowe Drzewa; możesz mieć problemy z Google.
1
+1, dobra odpowiedź i nieoczekiwany dla mnie - wielkie dzięki za referencje, szczególnie recenzję.
ars
Mając wystarczającą ilość danych, czy nie byłoby najlepiej przetrzymać zestaw testowy, wykonać loocv na zestawie treningowym, aby zoptymalizować parametry modelu, dopasować cały zestaw pociągu (i nazwać to „ostatecznym” klasyfikatorem), a następnie ocenić ostateczny model na zestawie testowym?
użytkownik0
40

Zasadniczo:

Sprawdź swoje prognozy, używając jednego modelu wyszkolonego dla całego zestawu danych (więc istnieje tylko jeden zestaw funkcji). Walidacja krzyżowa służy jedynie do oszacowania wydajności predykcyjnej pojedynczego modelu wyuczonego na całym zestawie danych. Zasadnicze znaczenie w stosowaniu walidacji krzyżowej polega na powtarzaniu w każdej zakładce całej procedury zastosowanej w celu dopasowania do modelu podstawowego, ponieważ w przeciwnym razie może dojść do znacznego optymizmu w zakresie wydajności.

Aby zobaczyć, dlaczego tak się dzieje, rozważ problem klasyfikacji binarnej z 1000 cechami binarnymi, ale tylko ze 100 przypadkami, przy czym wszystkie przypadki i cechy są całkowicie losowe, więc nie ma statystycznego związku między cechami a przypadkami. Jeśli trenujemy model podstawowy na pełnym zbiorze danych, zawsze możemy osiągnąć zerowy błąd w zestawie szkoleniowym, ponieważ jest więcej funkcji niż przypadków. Możemy nawet znaleźć podzbiór funkcji „informacyjnych” (które są przypadkowo skorelowane). Jeśli następnie przeprowadzimy walidację krzyżową przy użyciu tylko tych funkcji, uzyskamy oszacowanie wydajności, które jest lepsze niż losowe zgadywanie. Powodem jest to, że w każdym folderze procedury weryfikacji krzyżowej znajdują się pewne informacje na temat wstrzymanych przypadków wykorzystywanych do testowania, ponieważ cechy zostały wybrane, ponieważ były dobre do przewidywania, wszystkie z nich, w tym przetrzymywane. Oczywiście rzeczywisty poziom błędu wyniesie 0,5.

Jeśli zastosujemy odpowiednią procedurę i dokonamy wyboru funkcji w każdej zakładce, nie będzie już żadnych informacji o wyciągniętych przypadkach w wyborze funkcji użytych w tej zakładce. Jeśli zastosujesz odpowiednią procedurę, w tym przypadku uzyskasz poziom błędu wynoszący około 0,5 (choć będzie on nieco różny dla różnych realizacji zestawu danych).

Dobre artykuły do ​​przeczytania to:

Christophe Ambroise, Geoffrey J. McLachlan, „Bias selekcji w ekstrakcji genów na podstawie danych ekspresji genów mikromacierzy”, PNAS http://www.pnas.org/content/99/10/6562.abstract

co ma duże znaczenie dla PO i

Gavin C. Cawley, Nicola LC Talbot, „O nadmiernym dopasowywaniu w wyborze modelu i późniejszej tendencyjności w selekcji w ocenie wydajności”, JMLR 11 (lipiec): 2079-2107, 2010 http://jmlr.csail.mit.edu/papers /v11/cawley10a.html

co pokazuje, że to samo może łatwo wystąpić przy wyborze modelu (np. dostrajanie hiper-parametrów SVM, które również muszą być powtarzane przy każdej iteracji procedury CV).

W praktyce:

Poleciłbym użycie Bagging i użycie błędu „out-of-bag” do oszacowania wydajności. Otrzymasz model komitetu wykorzystujący wiele funkcji, ale tak naprawdę jest to dobra rzecz. Jeśli użyjesz tylko jednego modelu, prawdopodobnie przekroczysz kryterium wyboru funkcji i skończysz na modelu, który daje gorsze prognozy niż model, który używa większej liczby funkcji.

Książka Alana Millersa na temat wyboru podzbiorów w regresji (monografie Chapmana i Halla na temat statystyki i prawdopodobieństwa zastosowanego, tom 95) daje dobrą radę (strona 221), że jeśli wydajność predykcyjna jest najważniejsza, nie wybieraj żadnych cech , zamiast tego użyj regresji grzbietu. I to jest w książce o wyborze podzbiorów !!! ; o)

Dikran Torbacz
źródło
17

Aby dodać do chl: Podczas korzystania z maszyn wektorów nośnych, wysoce zalecaną metodą karania jest elastyczna siatka. Ta metoda zmniejszy współczynniki do zera i teoretycznie zachowa najbardziej stabilne współczynniki w modelu. Początkowo był używany w ramach regresji, ale można go łatwo rozszerzyć do użycia z maszynami wektorów wsparcia.

Oryginalna publikacja : Zou i Hastie (2005): Regularyzacja i wybór zmiennych za pomocą elastycznej siatki. JRStatist.Soc. B, 67-2, str .301-320

Elastyczna siatka do SVM : Zhu i Zou (2007): Wybór zmiennych dla maszyny wektora wsparcia: Trendy w obliczeniach neuronowych, rozdział 2 (Redaktorzy: Chen i Wang)

ulepszenia w elastycznej siatce Jun-Tao i Ying-Min (2010): Ulepszona elastyczna siatka do klasyfikacji raka i selekcji genów: Acta Automatica Sinica, 36-7, s. 976-981

Joris Meys
źródło
9

W kroku 6 (lub 0) uruchamiasz algorytm wykrywania funkcji na całym zestawie danych.

n1n

Aniko
źródło
Wydaje mi się, że nadal występuje problem uogólnienia podczas korzystania z tej samej próbki (1) do oceny wydajności klasyfikacji / prognozowania klasyfikatora podczas dostrajania jego parametrów (ewentualnie z wyborem funkcji) i (2) używania z kolei jego prognoz dotyczących całego zestawu danych. W rzeczywistości łamiesz kontrolę nad nadmiernym dopasowaniem, która została opracowana przy użyciu weryfikacji krzyżowej. Hastie i in. dobrze ilustrują pułapki związane z CV, szczególnie. wrt. wybór funkcji w książce ESL, § 7.10.2 w drugim wydaniu.
chl
@chl: kto powiedział coś o dostrajaniu parametrów? W przypadku wykonania dodatkowych czynności należy je również powtórzyć podczas weryfikacji krzyżowej. Wyraźne modyfikowanie algorytmu, dopóki nie uzyska się dobrych wskaźników błędu, jest „oszustwem”. BTW, zgadzam się, że wzajemna walidacja, szczególnie wykluczenie, nie jest wcale taka świetna.
Aniko
nie, to nie oszustwo, ponieważ CV pokazuje przybliżone działanie algorytmu na nowych danych. Musisz tylko upewnić się, że nie zdecydowałeś się na coś opartego na całym zestawie (jest to wyciek informacji o strukturze pełnego zestawu, dzięki czemu może on natychmiast polaryzować wszystkie części pociągu).
@mbq - Ankino ma rację, strojenie modelu w celu zminimalizowania statystyki CV to „oszustwo”, a statystyki CV ostatecznego modelu będą miały znaczne optymistyczne nastawienie. Powodem tego jest to, że statystyka CV ma nieistotną wariancję (ponieważ jest oceniana na skończonym zbiorze danych), a zatem jeśli bezpośrednio zoptymalizujesz statystykę CV, możesz ją przesadzić i możesz otrzymać model uogólnia gorzej niż ten, od którego zacząłeś. Aby to zademonstrować, w kontekście uczenia maszynowego, patrz jmlr.csail.mit.edu/papers/v11/cawley10a.html Rozwiązanie: Użyj zagnieżdżonego XVAL
Dikran Marsupial
1

W ten sposób wybieram funkcje. Załóżmy, że w oparciu o pewną wiedzę istnieją 2 modele do porównania. Model A wykorzystuje funkcje nr 1 do nie. 10. Model B używa nr 11 do nie. 20. Zastosuję LOO CV do modelu A, aby uzyskać wyniki poza próbą. Zrób to samo z modelem B, a następnie porównaj je.

FMZ
źródło
-1

Nie jestem pewien co do problemów z klasyfikacją, ale w przypadku wyboru cech dla problemów z regresją, Jun Shao wykazał, że CV typu Leave-One-Out jest asymptotycznie niespójne , tj. Prawdopodobieństwo wyboru odpowiedniego podzbioru cech nie jest zbieżne z 1, ponieważ liczba próbek wzrasta. Z praktycznego punktu widzenia Shao zaleca walidację krzyżową Monte-Carlo lub procedurę pomijania wielu osób.

shabbychef
źródło
O rany, jeszcze raz; czy przeczytałeś tytuł tego artykułu?
2
Ok, żeby być jasnym - nie mówię, że LOOCV to dobry pomysł na dużą liczbę obiektów; oczywiście nie jest, ale Shao nie ma tutaj zastosowania. Rzeczywiście w większości przypadków zasady dotyczące LM nie mają zastosowania do ML.
1
Wątpliwe jest również, czy wyniki asymptotyczne są przydatne w przypadku zestawów danych o dużej liczbie funkcji i stosunkowo niewielkiej liczbie wzorców. W takim przypadku wariancja procedury może mieć większe znaczenie praktyczne niż stronniczość lub spójność. Główną wartością LOOCV jest to, że dla wielu modeli można go wdrożyć przy niewielkich kosztach obliczeniowych, więc chociaż ma większą wariancję niż, powiedzmy, ładowanie początkowe, może to być jedyne możliwe podejście w ramach dostępnego budżetu obliczeniowego. Dlatego go używam, ale używam czegoś innego do oceny wydajności!
Dikran Marsupial