인프런 커뮤니티 질문&답변
273쪽 df[df['Class']==1][column]부분
작성
·
236
0
273쪽 df[df['Class']==1][column]부분을 fraud에 대해서만 아니라 'v14' 속성의 모든 데이터에 대한 이상치를 구하기 위해
df[:][column]으로 수정하여 학습을 진행하였습니다. 그랬더니다음과 같은 성능이 나왔는데 재현율이 이렇게 급격하게 떨어지는 이유가 뭘가요? 애초에 amount가 매우 큰 값이 사기 트랜젝션에 검사에 중요한 요소인데 이상치로 이러한 값들을 모두 제거해버려서 그런가요?
다른 질문에서 답변해주셨듯이 'v14'의 모든 데이터에 대해 이상치를 제거하려면 코드를 어떻게 수정해야하나요?

답변 1
2
안녕하십니까,
현재 creditcard 데이타의 특성은 전체 데이터를 기반으로 IQR 을 설정하면 삭제되는 범위가 너무 커지게 됩니다.
outlier_index = get_outlier(df=card_df, column='V14', weight=1.5)로 출력해보시면 너무 많은 데이터가 이상치로 설정됩니다. outlier 제거는 가능한 최소치로 해주셔야 합니다. 전체 데이터를 IQR로 하면 실제 사기 데이터에 잘 동작하는 데이터도 삭제 시켜버리고 있습니다.
그리고 해당 모델은 실제값 0을 0으로 예측하는 것은 기본적으로 잘됩니다. 하지만 카드 사기 검출 모델에서 중요한 것은 실제 사기 즉 1을 1로 예측하는 것이 중요하므로 타겟값이 1인 데이터에 대해서 적절한 outlier들을 제거하는 것이 필요합니다. 때문에 현재 데이터에서는 1의 데이터만 일정 수준에서 outlier를 제거해 주시는게 좋습니다.
감사합니다.






답변 너무너무 감사합니다 ㅎㅎ 강의를 통해 너무 많은걸 배우고 있어요 ㅎㅎ