-
카테고리
-
세부 분야
딥러닝 · 머신러닝
-
해결 여부
미해결
273쪽 df[df['Class']==1][column]부분
22.01.10 14:34 작성 조회수 146
0
273쪽 df[df['Class']==1][column]부분을 fraud에 대해서만 아니라 'v14' 속성의 모든 데이터에 대한 이상치를 구하기 위해
df[:][column]으로 수정하여 학습을 진행하였습니다. 그랬더니다음과 같은 성능이 나왔는데 재현율이 이렇게 급격하게 떨어지는 이유가 뭘가요? 애초에 amount가 매우 큰 값이 사기 트랜젝션에 검사에 중요한 요소인데 이상치로 이러한 값들을 모두 제거해버려서 그런가요?
다른 질문에서 답변해주셨듯이 'v14'의 모든 데이터에 대해 이상치를 제거하려면 코드를 어떻게 수정해야하나요?
답변을 작성해보세요.
2
권 철민
지식공유자2022.01.11
안녕하십니까,
현재 creditcard 데이타의 특성은 전체 데이터를 기반으로 IQR 을 설정하면 삭제되는 범위가 너무 커지게 됩니다.
outlier_index = get_outlier(df=card_df, column='V14', weight=1.5)로 출력해보시면 너무 많은 데이터가 이상치로 설정됩니다. outlier 제거는 가능한 최소치로 해주셔야 합니다. 전체 데이터를 IQR로 하면 실제 사기 데이터에 잘 동작하는 데이터도 삭제 시켜버리고 있습니다.
그리고 해당 모델은 실제값 0을 0으로 예측하는 것은 기본적으로 잘됩니다. 하지만 카드 사기 검출 모델에서 중요한 것은 실제 사기 즉 1을 1로 예측하는 것이 중요하므로 타겟값이 1인 데이터에 대해서 적절한 outlier들을 제거하는 것이 필요합니다. 때문에 현재 데이터에서는 1의 데이터만 일정 수준에서 outlier를 제거해 주시는게 좋습니다.
감사합니다.
답변 1