결측치(Missing Value)
: 데이터에 값이 없는 것
NA 또는 Null로 표현
이번 대회에서는 결측치가 모두 NaN로 채워져있었음
Not A Number(NaN)
np.nan
: dataframe에서 일반적으로 결측치를 표현하는 형식
Imputation(대치법) of Missing Value
case | Macro F1 score |
---|---|
0으로 fillna(Baseline) | 0.5495720225 |
모두 nan인 열 제거 + 0으로 fillna | 0.5139873916 |
-> 모두 nan인 열을 제거 했을 때 성능이 떨어짐
case | Macro F1 score |
---|---|
각 열의 평균값으로 fillna+0으로 fillna | 0.5491143317 |
모두 nan인 열 제거 + 각 열의 평균값으로 fillna | 0.5263849765 |
-> 모두 nan인 열을 제거 했을 때 성능이 떨어짐
case | Macro F1 score |
---|---|
interpolate + 0으로 fillna | 0.5111111111 |
모두 nan인 열 제거 + interpolate + 0으로 fillna | 0.5343137255 |
-> interpolate 함수를 사용하는 경우, 모두 nan인 열을 제거 하고 했을 때 성능 개선 효과가 있음
interpolate 내장함수를 사용한 이후에는 반드시 0으로 fillna를 수행해야 한다(채워지지 않은 NaN이 존재한다)
case | Macro F1 score |
---|---|
각 열의 중간값으로 fillna + 모두 nan인 열 제거 | 0.5367820887 |
각 열의 중간값으로 fillna + 모두 nan인 열 0으로 fillna | 0.6192559605 |
-> '각 열의 중간값으로 fillna'하는 경우, 모두 nan인 열을 0으로 fillna 했을 때 가장 성능이 높게 나온다.
'각 열의 중간값으로 fillna'할 때, '모두 nan인 열을 제거'하는 순서는 상관없다.
interpolate 내장 함수를 사용하는 경우 이외에, '모두 nan인 열을 제거'하는 것은 성능 개선에 효과가 없다.