Moje pytanie dotyczy technik radzenia sobie z niekompletnymi danymi podczas szkolenia / dopasowania / klasyfikacji klasyfikatora / modelu.
Na przykład w zestawie danych zawierającym kilkaset wierszy, z których każdy ma powiedzmy pięć wymiarów i etykietę klasy jako ostatni element, większość punktów danych będzie wyglądać następująco:
[0,74, 0,39, 0,14, 0,33, 0,34, 0]
Kilka może wyglądać mniej więcej tak:
[0,21, 0,68, 8, 0,82, 0,58, 1]
Więc to typy punktów danych są przedmiotem tego pytania.
Pierwszym powodem, dla którego zadałem to pytanie, był problem przede mną; jednak przed opublikowaniem mojego pytania pomyślałem, że może być bardziej użyteczne, jeśli przeformułuję je, aby odpowiedzi były przydatne dla większej części Wspólnoty.
Jako prostą heurystykę podzielmy te techniki przetwarzania danych w oparciu o to, kiedy w trakcie przetwarzania są one stosowane - przed wprowadzeniem do klasyfikatora lub podczas (tj. Technika jest w klasyfikatorze).
Najlepszym przykładem tego drugiego może być sprytna technika „trójdrożnego rozgałęziania” stosowana w drzewach decyzyjnych.
Bez wątpienia pierwsza kategoria jest znacznie większa. Znane mi techniki należą do jednej z poniższych grup.
Podczas niedawnego przeglądania moich osobistych notatek na temat „obsługi brakujących danych” zauważyłem, że mam dość imponującą listę technik. Po prostu przechowuję te notatki dla ogólnego spokoju i na wypadek, gdyby młodszy kolega zapytał mnie, jak radzić sobie z brakującymi danymi. W rzeczywistości nie używam żadnego z nich, z wyjątkiem ostatniego.
Imputacja : szeroka rubryka dla zestawu technik, których wspólnym mianownikiem (uważam) jest to, że brakujące dane są dostarczane bezpośrednio przez ten sam zestaw danych - podstawianie, a nie szacowanie / przewidywanie.
Rekonstrukcja : oszacuj brakujące punkty danych za pomocą sieci auto-asocjacyjnej (tylko sieć neuronowa, w której rozmiary warstw wejściowych i wyjściowych są równe - innymi słowy, dane wyjściowe mają taki sam wymiar jak dane wejściowe); chodzi tutaj o to, aby wyszkolić tę sieć na kompletnych danych, a następnie podać jej niekompletne wzorce i odczytać brakujące wartości z węzłów wyjściowych.
Bootstrapping : (podsumowanie nie jest konieczne, nie powinienem myśleć, biorąc pod uwagę jego zastosowanie w analizie statystycznej).
Odmowa : po cichu usuń punkty danych z brakującymi / uszkodzonymi elementami z zestawu treningowego i udawaj, że nigdy nie istniały.
źródło
modern
technik? Dziękimice
zawiera fajny dokument wprowadzający na temat JSS: jstatsoft.org/article/view/v045i03 . (Wprowadzenie powinno być przydatne, nawet jeśli nie używasz R.) A pakiet RAmelia
ma ładną winietę, która jest dołączona do pakietu. Te dwa pakiety różnią się szczegółami, ale oba wykorzystują wielokrotne przypisywanie.Odpowiedzi:
Udzieliłem tej odpowiedzi na inne pytanie , ale może mieć zastosowanie również tutaj.
„Istnieje całkiem nowy obszar badań o nazwie Matrix Completion , który prawdopodobnie robi to, co chcesz. Naprawdę miłe wprowadzenie znajduje się w wykładzie Emmanuela Candesa”
Zasadniczo, jeśli twój zestaw danych ma niską rangę (lub w przybliżeniu niską rangę), tj. Masz 100 wierszy, ale rzeczywista macierz ma jakąś małą rangę, powiedzmy 10 (lub tylko 10 dużych pojedynczych wartości), możesz użyć Uzupełniania macierzy, aby uzupełnić brakujące dane.
źródło
Mogę być trochę niekonwencjonalny tutaj, ale co do cholery. Uwaga: ten tok myślenia wywodzi się z mojej własnej filozofii klasyfikacji, a mianowicie, że używam go, gdy moim celem jest wyłącznie przewidywanie - a nie wyjaśnienie, spójność pojęciowa itp. Zatem to, co tu mówię, jest sprzeczne z tym, jak ja podchodziłbym do budowania modelu regresji.
Różne podejścia do klasyfikacji różnią się pod względem zdolności do obsługi brakujących danych, a w zależności od niektórych innych czynników ^, mogę po prostu spróbować # 5: użyć klasyfikatora, który nie zadławi tych NA. Część decyzji, by wybrać tę drogę, może również obejmować zastanowienie się nad tym, jak prawdopodobne będzie wystąpienie podobnego odsetka NA w przyszłych danych, do których będziesz stosować ten model. Jeśli NA dla niektórych zmiennych będą równe kursowi, warto po prostu z nimi walczyć (tj. Nie buduj modelu predykcyjnego, który zakłada więcej informacji niż to, co faktycznie masz, lub „ Żartuję sobie z tego, jak to naprawdę będzie przewidywać). W rzeczywistości, jeśli nie jestem przekonany, że NA brakuje losowo, byłbym skłonny przekodować nową zmienną (lub nowy poziom, jeśli „
Gdybym miał dobry powód, aby użyć klasyfikatora, który nie wziął zbyt dobrze brakujących danych, wówczas moim podejściem byłoby numer 1 (wielokrotna imputacja), szukając modelu klasyfikacji, który zachowałby się podobnie dobrze w przypisanych zestawach danych.
^ W tym: ile braków masz w swoich predyktorach, czy istnieją systematyczne wzorce (jeśli tak, warto przyjrzeć się bliżej i zastanowić się nad konsekwencjami dla Twojej analizy) oraz ile danych musisz pracować z ogólną .
źródło
Jeśli masz uzasadnione przeczucie, że proces generowania danych jest odpowiedzialny za dane dane, możesz użyć pomysłów bayesowskich do oszacowania brakujących danych. Zgodnie z podejściem bayesowskim można po prostu założyć, że brakujące dane są również zmiennymi losowymi, i zbudować tylne dla brakujących danych, zależnie od danych obserwowanych. Środki późniejsze zostałyby wówczas wykorzystane jako substytut brakujących danych.
Użycie modeli bayesowskich może kwalifikować się jako imputacja w szerokim znaczeniu tego słowa, ale pomyślałem o wspomnieniu o nim, ponieważ nie pojawił się on na twojej liście.
źródło