Ryzyko związane z brakującymi danymi w danych kredytowych

Modelowanie ryzyka kredytowego w Pythonie

Michael Crabtree

Data Scientist, Ford Motor Company

Czym są brakujące dane?

  • NULL w wierszu zamiast rzeczywistej wartości
  • Pusty ciąg znaków ''
  • Niekoniecznie cały wiersz jest pusty
  • Może wystąpić w dowolnej kolumnie

Fragment ramki danych z brakującą długością zatrudnienia

Modelowanie ryzyka kredytowego w Pythonie

Podobieństwa z wartościami odstającymi

  • Negatywnie wpływają na wydajność modeli uczenia maszynowego
  • Mogą powodować nieoczekiwane błędy w modelach
  • Mogą generować błędy w niektórych modelach uczenia maszynowego
Modelowanie ryzyka kredytowego w Pythonie

Podobieństwa z wartościami odstającymi

  • Negatywnie wpływają na wydajność modeli uczenia maszynowego
  • Mogą powodować nieoczekiwane błędy w modelach
  • Mogą generować błędy w niektórych modelach uczenia maszynowego
Typ brakujących danych Możliwy wynik
NULL w kolumnie numerycznej Błąd
NULL w kolumnie tekstowej Błąd
Modelowanie ryzyka kredytowego w Pythonie

Jak postępować z brakującymi danymi

  • Zazwyczaj stosuje się trzy podejścia do brakujących danych
    • Zastąpienie brakujących wartości
    • Usunięcie wierszy z brakującymi danymi
    • Pozostawienie wierszy bez zmian
  • Właściwe działanie zależy od zrozumienia danych
Modelowanie ryzyka kredytowego w Pythonie

Jak postępować z brakującymi danymi

  • Zazwyczaj stosuje się trzy podejścia do brakujących danych
    • Zastąpienie brakujących wartości
    • Usunięcie wierszy z brakującymi danymi
    • Pozostawienie wierszy bez zmian
  • Właściwe działanie zależy od zrozumienia danych
Brakujące dane Interpretacja Działanie
NULL w loan_status Pożyczka niedawno zatwierdzona Usunąć z danych do predykcji
NULL w person_age Wiek nieodnotowany lub nieujawniony Zastąpić medianą
Modelowanie ryzyka kredytowego w Pythonie

Wykrywanie brakujących danych

  • Wartości null można łatwo znaleźć za pomocą funkcji isnull()
  • Liczbę rekordów null można policzyć funkcją sum()
  • Metoda .any() sprawdza wszystkie kolumny
null_columns = cr_loan.columns[cr_loan.isnull().any()]
cr_loan[null_columns].isnull().sum()
# Total number of null values per column
person_home_ownership          25
person_emp_length             895
loan_intent                    25
loan_int_rate                3140
cb_person_default_on_file      15
Modelowanie ryzyka kredytowego w Pythonie

Zastępowanie brakujących danych

  • Brakujące dane można zastąpić metodami takimi jak .fillna() z funkcjami agregującymi
cr_loan['loan_int_rate'].fillna((cr_loan['loan_int_rate'].mean()), inplace = True)

Przykład zastąpienia brakującej stopy procentowej wartością średnią

Modelowanie ryzyka kredytowego w Pythonie

Usuwanie brakujących danych

  • Rekordy są identyfikowane za pomocą indeksów — tak samo jak w przypadku wartości odstających
  • Rekordy usuwa się całkowicie metodą .drop()
indices = cr_loan[cr_loan['person_emp_length'].isnull()].index
cr_loan.drop(indices, inplace=True)
Modelowanie ryzyka kredytowego w Pythonie

Czas na ćwiczenia!

Modelowanie ryzyka kredytowego w Pythonie

Preparing Video For Download...