Klasyfikacja z częściowo „nieznanymi” danymi

11

Załóżmy, że chcę nauczyć się klasyfikatora, który przyjmuje wektor liczb jako dane wejściowe i podaje etykietę klasy jako dane wyjściowe. Moje dane treningowe składają się z dużej liczby par przepływów międzygałęziowych.

Jednak kiedy przechodzę do testowania niektórych nowych danych, dane te są zwykle tylko częściowo kompletne. Na przykład, jeśli wektor wejściowy ma długość 100, tylko 30 elementów może otrzymać wartości, a pozostałe są „nieznane”.

Jako przykład tego zastanów się nad rozpoznawaniem obrazu, gdy wiadomo, że część obrazu jest zasłonięta. Lub rozważ klasyfikację w sensie ogólnym, gdy wiadomo, że część danych jest uszkodzona. We wszystkich przypadkach wiem dokładnie, które elementy w wektorze danych są nieznanymi częściami.

Zastanawiam się, jak mogę nauczyć się klasyfikatora, który działałby dla tego rodzaju danych? Mógłbym po prostu ustawić „nieznane” elementy na liczbę losową, ale biorąc pod uwagę, że często jest więcej nieznanych elementów niż znane, nie brzmi to jak dobre rozwiązanie. Mogę też losowo zmieniać elementy danych treningowych na „nieznane” i trenować z nimi zamiast z kompletnymi danymi, ale może to wymagać wyczerpującego próbkowania wszystkich kombinacji znanych i nieznanych elementów.

W szczególności myślę o sieciach neuronowych, ale jestem otwarty na inne klasyfikatory.

Jakieś pomysły? Dzięki!

Karnivaurus
źródło
en.m.wikipedia.org/wiki/Missing_data może być miejscem do rozpoczęcia.
Hatszepsut
Myślę, że częściowo nadzorowane uczenie się jest raczej przypadkiem, gdy dane szkoleniowe nie są w pełni oznakowane. W moim przypadku wszystkie moje dane treningowe są oznaczone, ale poszczególne części danych testowych są „nieznane”.
Karnivaurus
Częściowo
itdxer 26.11.16

Odpowiedzi:

2

Myślę, że jest rozsądny sposób, aby działał z sieciami neuronowymi.

Niech twoja wartość dla nieznanego wynosi 0. Teraz podczas treningu wybierasz dane wejściowe i losowo ustawiasz niektóre z ich wartości na 0 z prawdopodobieństwem , gdzie p jest oczekiwanym ułamkiem brakujących danych wejściowych w czasie testu. Zauważ, że to samo wejście w różnych iteracjach będzie miało zera w różnych pozycjach.p

Nie widziałem tego wcześniej, ale byłoby to bardzo podobne do wykonywania Dropout (dobrze znanej metody regularyzacji w sieciach neuronowych) w neuronach wejściowych zamiast w ukrytych neuronach. Nie sądzę, że to dobry pomysł, aby to zrobić ogólnie, ale jeśli jesteś zmuszony (podobnie jak Twoja sprawa), przynajmniej teoretycznie jest wystarczająco blisko do czegoś, o czym wiadomo, że działa.

etal
źródło
1

Myślę, że istnieją pewne opcje, które działają z dowolnym klasyfikatorem:

  • Wpisuj brakujące wartości pojedynczą wartością, taką jak średnia lub mediana z zestawu treningowego lub pewna wartość przewidywana z obserwowanych części danych wejściowych, lub po prostu użyj liczby losowej lub stałej.
  • Użyj kilku różnych wartości dla niewiadomych i zsumuj wyniki, np. Uśrednij je

Oprócz tego możesz użyć klasyfikatorów opartych na drzewach (np. Losowe lasy), a jeśli drzewo musi ocenić podział brakującej funkcji, może po prostu przekazać dane do obu węzłów potomnych.

Trzecią opcją jest użycie generatywnego klasyfikatora, który modeluje pełny rozkład połączeń gdzie to dane wejściowe, etykieta klasyfikacji. Dzięki temu idealnie zmarginalizowałbyś nieznane części , tj. Wypróbowałbyś dowolną wartość dla nieznanych części i uśrednił wyniki ważone prawdopodobieństwem tej imputacji. Można to zrobić w formie analitycznej w formie zamkniętej dla niektórych klasyfikatorów, np. Modelu liniowej analizy dyskryminacyjnej, lub w przybliżeniu przez próbkowanie niewiadomych, np. Dla ograniczonej maszyny Boltzmanna lub jej głębokich wariantów (które są powiązane z sieciami neuronowymi przesyłającymi dane z wyprzedzeniem).x y x xp(x,y)xyxx

Tobiasz
źródło
nie sądzę, żeby to zadziałało. Użyj typowego przykładu z widzenia komputerowego, każdy piksel obrazu może być powiązany z inną częścią obiektu. Na przykład piksel (50,50) obrazu 1 to oko kota, ale kot jest poruszany nieco na obrazie 2, więc (50, 50) to tylko piksel tła. Jeśli lokalizacja NA, tj. przypadkowa okluzja, różni się w zależności od obserwacji, twoje przypisanie nie zadziała.
horaceT