Dostajesz dataset z 30% braków. Klient mówi "nie mamy więcej danych". Nie rezygnuj jeszcze.
Kiedy braki są OK
Pracowałem z danymi medycznymi - 45% pacjentów nie miało wyniku konkretnego testu. Okazało się, że brak wyniku sam w sobie był informacją: test robiono tylko przy podejrzeniu konkretnej choroby. Stworzyliśmy flagę test_wykonany: True/False - model poprawił wynik o 18%.
Trzy typy braków
- MCAR (Missing Completely at Random) - sensor padł losowo, można imputować
- MAR (Missing at Random) - starsi użytkownicy nie podają emaila, uwzględnij wiek
- MNAR (Missing Not at Random) - ludzie ukrywają dochody powyżej progu, to informacja sama w sobie
Praktyczne podejście
Sprawdź wzorce: missingno.matrix(df) pokazuje, czy braki są losowe czy występują razem. Jeśli kolumna ma >60% braków i nie jest predykcyjna - usuń. Jeśli <20% i losowe - imputuj.
Dla danych kategorycznych: dodaj kategorię "nieznane". Dla liczbowych: czasem mediana, czasem osobny model do przewidywania braków.
Najgorszy błąd? Freelancer usunął wszystkie wiersze z brakami. Z 50 tys. rekordów zostało 3 tys. Model był idealny... na 6% danych.