주제
3차 프로젝트 5일차
- 어제의 중간 보고 회의 이후에 나온 사항 :
- 아직 성능을 올릴 시간이 부족하여 추가적으로 하루를 더 작업하고 오늘 다시 한 번 모이기로 함
- 파생 변수의 유무가 성능에 큰 영향을 줌
- 조원의 요청으로 내가 작업한 코드 공유함
- 나는 어느정도 해볼 것은 다 해보았기 때문에 혹시 몰라 한 두가지 시도만 더 해보았음
1. 성능 개선 시도
- 이상치를 제거한 총상환원금비율을 포함한 총 4개의 피쳐로 다시 하이퍼파라미터 튜닝을 시도
- best_params_의 결과가 동일했다
- 4개 피쳐 + 튜닝 모델의 조합은 여태 튜닝 모델의 결과 중 가장 우수했지만 역시나 기본 모델보다 높진 않았다
- 이 현상은 다른 조원들도 겪고 있었다
- 이번에는 두번째로 중요도가 높았던 총상환이자비율의 이상치를 제거하여 시도해보았다
- 총상환원금비율은 이상치가 제거되지 않은 상태로 두고, 총상환이자비율만 제거하였다
- 먼저 이상치 확인

# 이상치 제거
Q1 = train[['총상환이자비율']].quantile(0.25)
Q3 = train[['총상환이자비율']].quantile(0.75)
IQR = Q3 - Q1
threshold = 1.5
outliers = (train[['총상환이자비율']] < (Q1 - threshold * IQR)) | (train[['총상환이자비율']] > (Q3 + threshold * IQR))
train_no_outliers = train[~outliers.any(axis=1)]
- 제거한 후 총 94385개의 데이터가 남았다. 그 전에는 96294개가 존재
- 이상치 제거 후 다시 시각화하여 확인
- 이상치가 많이 줄어든 것을 확인할 수 있었다

- 이상치 제거 후에 다시 스케일링을 진행하고 피쳐 4개 ('총상환원금비율', '총상환이자비율', '총상환원금_log', '총상환이자_log')만 사용하여 기본 모델을 훈련시켜보았다
- 그 결과 정확도는 약 94.7%, F1 score는 약 93.3%였다
- 이는 총상환원금비율의 이상치를 제거한 결과보다 우수하지 않았다
- 그 다음 시도는 총상환원금비율과 총상환이자비율 모두 이상치를 제거해보았다
- 과정은 위와 동일하여 생략
- 이상치 제거 전과 후의 모습은 이렇다 :


- 이번에도 이상치가 잘 제거되었다
- 같은 기본 모델에 4가지 피쳐를 사용해본 결과는 이렇다 :
- 정확도는 약 95.0%, F1 score는 약 93.8%로 정확도는 최우수 성능과 같았지만, F1 점수는 떨어졌다
- 이는 일반화가 덜 되었다고 생각해볼 수 있다.
- 정확도도 반올림하여 95%지만 실제로 0.951정도였고 1개 피쳐의 이상치만 제거했을 땐 0.952였으므로 사실상 정확도의 미세한 차이도 존재했다

정리
- 오늘의 시도를 분석해보자면, 특성 중요도가 가장 높은 피쳐의 이상치를 제거하는 것이 가장 효과적이었고 오히려 많은 피쳐의 이상치를 제거하는 건 F1 score의 성능 저하를 일으킬 수 있다는 것이다.
- 이상치 제거 방법에 대해 공부할 때, 전체 데이터의 이상치를 제거하면 오히려 정확도가 매우 매우 낮았는데 이런 이유에서였던 것 같다
- 모델의 정확도도 중요하지만, 다중분류 모델에서는 F1 score도 중요하기 때문에 F1 score의 저하는 눈여겨볼 필요가 있는 것 같다
'Data Science > TIL (Today I Learned)' 카테고리의 다른 글
| 프로그래머스 데이터분석 데브코스 1기 - 62일차 (0) | 2024.02.20 |
|---|---|
| 프로그래머스 데이터분석 데브코스 1기 - 61일차 (0) | 2024.02.19 |
| 프로그래머스 데이터분석 데브코스 1기 - 59일차 (1) | 2024.02.15 |
| 프로그래머스 데이터분석 데브코스 1기 - 58일차 (1) | 2024.02.14 |
| 프로그래머스 데이터분석 데브코스 1기 - 57일차 (1) | 2024.02.13 |