Jaki jest najbardziej odpowiedni sposób na utworzenie zestawu podtrzymującego: aby usunąć niektóre przedmioty lub usunąć niektóre obserwacje z każdego przedmiotu?

11

Mam zestaw danych z 26 funkcjami i 31000 wierszami. Jest to zbiór danych 38 podmiotów. To jest dla systemu biometrycznego. Więc chcę być w stanie zidentyfikować podmioty.

Aby mieć zestaw testowy, wiem, że muszę usunąć niektóre wartości.

Więc co lepiej robić i dlaczego?

  1. (a) trzymaj 30 osób jako zestaw szkoleniowy i usuń 8 przedmiotów jako zestaw testowy

  2. (b) zachowaj 38 badanych, ale usuń niektóre wiersze każdego z nich. Na koniec skończę zestawem treningowym: 24800 rzędów 38 przedmiotów ORAZ zestawem testowym: 6200 rzędów 38 przedmiotów

Aizzaac
źródło
1
Jeśli chcesz zidentyfikować podmioty, jak możesz usunąć „całe” przedmioty z zestawu testowego? Model przeszkolony na 30 osobach będzie w stanie zidentyfikować tylko te 30 osobników, a nie 8 osobników, których nigdy nie widział. Wyjaśnienie dotyczące „systemu biometrycznego” może sprawić, że większość istniejących odpowiedzi nie będzie miała zastosowania.
ameba
1
Pomocne byłoby wyjaśnienie: (1) dokładnego celu, jakiej zmiennej wynikowej próbujesz przewidzieć (2) jakie masz dane i ewentualnie (3) jakiego podejścia używasz.
Matthew Gunn
Jak po wdrożeniu systemu zostanie wdrożony? Czy celem jest użycie go u osób spoza zestawu treningowego? Czy nowe dane będą pochodzić od tych samych 38 podmiotów? Próbuję zrozumieć, w jaki sposób system ma być używany i czy jesteś w przypadku (1) czy przypadku (2) odpowiedzi @ AmiTavory.
Matthew Gunn
@amoeba Nie mam zbyt dużego doświadczenia :( Zadałem pytanie, ponieważ zaleca się dzielenie danych (szkolenie, sprawdzanie poprawności i testowanie). Więc albo albo usuń niektóre tematy, albo niektóre obserwacje każdego LUB użyj zestawu danych dostępnego online. Więc 1) Chcę być w stanie zidentyfikować podmioty. Do kogo należą funkcje. 2) Używam EEG (więc szeregi czasowe). 3) Używam Stratified-fold. Ale dzieje się tak dlatego, że mam większą dokładność dzięki temu niż w Kfold. Wiedziałem tylko o k-fold, stratyfikacji i pomijaniu. Jak zawsze myślałem, było to zrekompensowanie braku równowagi w danych. Ale jestem otwarty na sugestie.
Aizzaac
@MatthewGunn Myślę, że nie byłoby możliwe używanie go z ludźmi, których nie ma w zbiorze danych. Byłoby to bardzo trudne, ale bardzo interesujące, gdyby zostało osiągnięte. Powiedziałbym więc, że przypadek 1.
Aizzaac

Odpowiedzi:

9

Myślę, że odpowiedź Matthew Gunna jest poprawna, ale wydaje mi się, że „rekordowe” CV może obejmować dwie różne koncepcje:

  1. Rekordy są losowo dzielone na fałdy, niezależnie od tematu i czasu.

  2. Rekordy dzielone są na fałdy czasowe, przy czym nie są używane do treningu, który zawiera dane z początku fałdu testowego.

W pierwszym przypadku zagrożony jest szereg danych w szeregach czasowych, ponieważ zestaw treningowy może zawierać dane zarówno przed, jak i po zestawie testowym. Zasadą pociągu / testu jest to, że dane treningowe reprezentują dane znane obecnie, a dane testowe reprezentują dane, których jeszcze nie widziano (być może dosłownie z przyszłości).

Być może autokorelacja szeregów czasowych zagraża opcji nr 2. Być może element czasowy modelu nie jest tak naprawdę ważny, więc obserwacje „przeszłe” i „przyszłe” prawdopodobnie będą takie same. W takich przypadkach ani nr 1, ani nr 2 nie są dobrym rozwiązaniem.

Jeśli występuje tylko sezonowość, a nie trendy, wydaje się, że można włączyć „przyszłość” w szkoleniach dla niektórych przedmiotów, aby przewidzieć nowe podmioty (na które będzie miała wpływ ta sama sezonowość). Jeśli istnieją trendy, szkolenie na temat przyszłości powinno nauczyć się czegoś o przyszłości, której tak naprawdę nie poznałbyś podczas używania modelu w produkcji.

W przykładzie PO wydaje się, że temat jest dobry. Ale jeśli trendy i obawy dotyczące szeregów czasowych były częścią modelu, spróbowałbym użyć podziału na temat i czasu, więc trenowałeś na jednym zestawie tematów przed określonym momentem, a następnie testowałem na innych tematach po w tym konkretnym momencie.

Wayne
źródło
1
+1 To bardzo ważny punkt, że jeśli istnieje struktura szeregów czasowych, nie powinieneś używać przyszłości do przewidywania przeszłości! Jest to częsty i niebezpieczny błąd w finansach, polegający na wykorzystaniu informacji niedostępnych w czasie (ponieważ nie jest to znane do przyszłości) do przewidywania zwrotów, wartości domyślnych itp. W czasie t . Przy skomplikowanych projektach i tonach danych bardzo łatwo jest popełnić błędy i pozwolić algorytmowi treningowemu skutecznie dotrzeć do przyszłości, osiągając wyniki niemożliwe w rzeczywistości. tt
Matthew Gunn
1
Powiedziałbym, że aplikacja decyduje o tym, jaki jest odpowiedni podział. Np. Nawet w przypadku szeregów czasowych może być zadaniem przewidzenie zmiennej zależnej dla późniejszych pomiarów nieznanych podmiotów, co oznaczałoby, że podział musi być dokonany zarówno pod względem przedmiotowym, jak i czasowym.
cbeleites niezadowoleni z SX
3
@cbeleites: Zgoda. To właśnie zrobiłem w ostatnim projekcie: podzieliłem dane na pociągi i uczestników testów, i używam tylko danych przed datą szkolenia i danych po testach, więc testowaliśmy na tematach, których nigdy nie widziałem, przez pewien czas jeszcze nie widzieliśmy. Jeśli chcesz naprawdę wiedzieć, jak dobrze twój model poradzi sobie w praktyce, chcesz postawić talię na sobie - bez wychodzenia za burtę.
Wayne
16

Krytyczne jest rozróżnienie, czy chcesz:

  1. [Najczęstszy przypadek]: konstruuj oszacowanie skuteczności nowych tematów (na podstawie tej samej populacji, co Twoje dane).
  2. Skonstruuj oszacowanie wyników na podstawie nowych obserwacji z tych samych przedmiotów, co w Twojej próbie.

O wiele bardziej powszechnym przypadkiem jest numer sprawy (1). Np. Jak dobrze przewidujesz ataki serca u kogoś, kto przyjdzie na izbę przyjęć? A jeśli jesteś w przypadku (1), prawie na pewno powinieneś zrobić (a) podmiotową weryfikację krzyżową zamiast (b) ewidencyjną weryfikację krzyżową. Dokonanie rekordowej walidacji w przypadku (1) najprawdopodobniej doprowadzi do nieuzasadnionych wysokich, fałszywych oszacowań wyników na nowych tematach.

Nie rozumiem dokładnie, co próbujesz zrobić (i być może jest to samokształcenie, więc pytanie nie jest całkowicie realistyczne). Nie wiem, w jakim jesteś przypadku. Jeśli jesteś w znacznie mniej powszechnym przypadku (2), sprawdzanie poprawności zapisu może być w porządku.

Ogólnym tematem w statystykach jest dokładne przemyślenie tego, co jest niezależne, a co skorelowane. Ogólnie rzecz biorąc, niezależna obserwacja jest zwykle innym tematem. Jeśli chcesz przewidzieć wyniki na nowych tematach, musisz przetestować przedmioty, na których nie trenowałeś!

Dlaczego pod względem przedmiotowym sprawdzanie poprawności krzyżowej zamiast rejestrowania?

W typowych ustawieniach powtarzane obserwacje tej samej osoby są skorelowane ze sobą nawet po uwarunkowaniu cech. Dlatego dzięki rekordowej weryfikacji krzyżowej Twój zestaw testowy nie jest niezależny od zestawu treningowego! W skrajnym przypadku idealnej korelacji miałbyś dokładnie takie same obserwacje w zestawie treningowym i zestawie testowym! Będziesz trenował na zestawie testowym! Wyniki mierzone w ramach walidacji krzyżowej nie byłyby w stanie przewidzieć wyników w odniesieniu do nowych podmiotów.

Na przykład ten najnowszy artykuł nazywa rekordową weryfikację krzyżową `` Voodoo Machine Learning ''.

Ale co zrobić z tak małą liczbą tematów ...

k=n

Aby zmaksymalizować dane do szkolenia, możesz pominąć jeden temat do wzajemnej weryfikacji. Każdej iteracji, testuj inny temat trzymania się i trenuj na wszystkich pozostałych.

n=38

Matthew Gunn
źródło
Wiem, że zestaw danych musi być podzielony na 3: szkolenie, walidacja i testowanie. W walidacji krzyżowej stosuje się „szkolenie i walidację”. Zestaw wstrzymania to „testowanie”. Sugerujesz: do szkolenia i walidacji użyj 37 przedmiotów i przetestuj z 1 przedmiotu? I że mogę wykonać każdy rodzaj walidacji krzyżowej: k-krotnie, stratyfikowany itp.?
Aizzaac
1
OP dokonał edycji, mówiąc: „To dotyczy systemu biometrycznego. Chcę więc móc identyfikować podmioty”. Jeśli dobrze rozumiem, co to znaczy, oznacza to, że sensowne jest tylko CV z zapisami, ponieważ celem jest przewidzenie identyfikatora podmiotu na podstawie próbki.
ameba
@amoeba Tylko jeśli nowe dane będą pochodzić od tych samych 38 podmiotów. Na przykład. jeśli system ma powiedzieć, czy odciski palców pasują do siebie, czy nie, i zostanie umieszczony przy drzwiach wejściowych mojego domu (tj. musi identyfikować nieznajomych jako obcych), szkolenie i testowanie na te same tematy byłyby problematyczne ( lubią wiedzieć, jak często zapewnia wstęp osobom, których nigdy wcześniej nie widział, nigdy nie trenował). Zgadzam się jednak, że „To dla systemu biometrycznego” rodzi pytania ...
Matthew Gunn
3

To naprawdę zależy od tego, jak wyobrażasz sobie ustawienie, które chcesz emulować przy podziale pociągu / testu. Mówiąc konkretnie, powiedzmy, że każdy wiersz opisuje jakość snu pacjenta w ciągu jednej nocy.

  1. Możliwe, że w przyszłości każdy uczestnik najpierw przyjdzie do laboratorium snu i zapewni jakość snu na kilka nocy. Następnie musisz przewidzieć jakość snu w przyszłości dla tych osób . W takim przypadku skorzystasz z opcji b). W sklearn, możesz użyćsklearn.model_selection.StratifiedShuffleSplit

  2. Możliwe, że w przyszłości kilka osób przyjdzie najpierw do laboratorium snu i zapewni ci jakość snu na kilka nocy. Następnie będziesz musiał przewidzieć jakość snu w przyszłości dla innych osób . W takim przypadku skorzystasz z opcji a). W sklearn, możesz użyćsklearn.cross_validation.LeavePLabelOut

Ami Tavory
źródło
1
Realistycznie rzecz biorąc, pytanie jest prawie na pewno w twoim przypadku (2), a opcja (a), tj. Przedmiotowa weryfikacja krzyżowa, jest właściwa.
Matthew Gunn
1
@MatthewGunn Masz rację. Przypadek 2 jest znacznie bardziej powszechny. Muszę powiedzieć, że natknąłem się na rzeczywiste przypadki, w których 1 był właściwym wyborem.
Ami Tavory,
1
Ciekawy. Widziałem (1) słuszność przewidywania nowych obserwacji dla dużej, ustalonej bazy klientów. Punkt wzięty. Być może reaguję tak silnie, ponieważ niedawno przeczytałem ten artykuł na temat powszechnego niewłaściwego wykorzystywania rekordowej krzyżowej walidacji w dziedzinie medycyny.
Matthew Gunn
Co o tym sądzisz: używam 38 przedmiotów z dowolnym rodzajem weryfikacji krzyżowej; oraz w celu przetestowania, czy mój model może być używany z innym przedmiotem; Korzystam z zestawu danych online? Myślę, że ideą ustalonego zestawu jest posiadanie „nowego” zestawu danych w celu przetestowania modelu.
Aizzaac
3

Aby wejść, zakładam, że aplikacja ma przewidywać nieznane tematy. Oznacza to (niezależnie od tego, czy masz szeregi czasowe, czy z natury nieuporządkowane powtarzane pomiary), że podział musi zostać wykonany, aby badane były nieznane obiekty => podział a)

Biorąc pod uwagę, że masz tylko 38 przedmiotów, powinieneś przemyśleć proces weryfikacji poprawności. Z mojego doświadczenia w pracy z podobnie małymi rozmiarami próbek (choć więcej funkcji), oto kilka zaleceń w skrócie:

  • Przejdź do tematycznego out-of-bootstrap lub iterowanej weryfikacji krzyżowej. Pozwalają ocenić stabilność modeli, co ma kluczowe znaczenie w przypadku problemów z małą liczbą próbek. Wyniki mogą być nawet wykorzystane w przypadku modelu zagregowanego w przypadku niestabilności.

  • Czy nie należy pozostawiać-One-przedmiot-out. Nie pozwala ani zmierzyć stabilności modelu, ani go zmniejszyć. Ponadto zdarzają się sytuacje, w których podlega on dużym pesymistycznym uprzedzeniom z powodu małej wielkości próby (w przeciwieństwie do oczekiwanej minimalnej pesymistycznej stronniczości).

  • Jeśli używasz typowych wartości klasyfikacyjnych, takich jak dokładność, czułość, specyficzność itp., A zadaniem jest poprawna klasyfikacja przedmiotów: strzeż się, że kluczowym problemem jest pomiar wydajności, ponieważ niepewność wyników testu zależy od liczby bezwzględnej przypadków testowych. Przykładowo, obserwowanie 17 prawidłowych prognoz z 17 prawdziwie pozytywnych pacjentów odpowiada 95% przedziałowi ufności dla czułości w zakresie od około 80% do 100%.
    Innymi słowy, nie będziesz w stanie przeprowadzić opartej na danych optymalizacji modelu opartego na danych.

  • Oznacza to również, że nie trzeba konfigurować podziału na trzy zestawy (sprawdzanie poprawności zagnieżdżonej), ponieważ marnowałbyś zasoby na statystycznie nieistotne porównania tutaj - twoja optymalizacja jest prawie nieudana (chociaż możesz tego nie zauważyć, jeśli nie sprawdzaj stabilności).

  • Te same obliczenia dla dwumianowego przedziału ufności dla proponowanych 5 (3) podmiotów testujących / optymalizujących / walidujących dają 95% ci dla wszystkich prawidłowych przedziałów do 50% (30%), więc w oparciu o doskonałe wyniki testu twój przedział ufności nadal obejmowałby 50 / 50 zgadywania!

Niektóre artykuły, które pisaliśmy na te tematy:

cbeleites niezadowoleni z SX
źródło