• 카테고리

    질문 & 답변
  • 세부 분야

    딥러닝 · 머신러닝

  • 해결 여부

    미해결

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'의 모든 데이터에 대해 이상치를 제거하려면 코드를 어떻게 수정해야하나요?

답변 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를 제거해 주시는게 좋습니다. 

감사합니다. 

 

son_6631님의 프로필

son_6631

질문자

2022.01.11

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