ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 분류 - 7
    Python Machine Learning/분류 2020. 8. 13. 19:47

    이상치 데이터 제거 후 모델 학습/예측/평가

    - 이상치 데이터는 전체 데이터의 패턴에서 벗어난 이상 값을 가진 데이터이며, 이상치를 찾는 방법 중 

      IQR( Inter Quantile Range )방식에 대해서 설명드리겠습니다. IQR방식은 사분위 값의 편차를 이용하는

      기법으로 흔히 박스 플롯방식으로 시각화할 수 있습니다.

    - 많은 피처들 중 결정값 ( 즉 레이블)과 가장 상관성이 높은 피처들을 위주로 이상치를 검출하는 것이 좋습니다.

    - 피처들의 상관도를 구하기 위해서는 데이터프레임의 corr( )을 이용해 구할 수 있습니다.

     

    4분위란?

    - 전체 데이터를 값이 높은 순으로 정렬하고, 이를 1/4씩( Q1, Q2, Q3, Q4 )으로 구간을 분할하는 것을 지칭하며

      Q1~ Q3의 범위를 IQR이라 합니다.

     

    IQR 방식을 이용해 이상치 데이터 검출하는 방식

    - IQR에 1.5를 곱해서 생성된 범위를 외용해 최댓값과 최솟값을 결정한 뒤 최댓값을 초과하거나 최솟값에 미달하는 데이터를 이상치로 간주하고 검출합니다.

    - 최대값 : 3/4분위수에서 1.5*IQR 값을 더한 지점, 최솟값 : 1/4분위수에서 1.5 * IQR값을 뺸 지점

     

    상관도 시각화

       cmap = 'RdBu' -> 양의 상관관계가 높을수록 진한 파란색, 음의 상관관계가 높을수록 진한 빨간색
    결정 레이블인 CLASS피처와 음의 상관관계가 가장 높은 피처는 V14, V17
                       사기에 해당하는 column데이터만 추출, 1/4,3/4 분위 지점을 np.percentile로 구함.                                   IQR을 구하고 1.5를 곱해 최댓값과 최솟값 지점을 구함.                                                               최댓값보다 크거나 최솟값보다 작은 값을 이상치로 설정하고 데이터프래임 index를 반환.

     

    get_outlier( ) 함수를 이용해 V14 컬럼에서 이상치 데이터를 찾음.

    ==> 4개의 데이터 ( 8296, 8615, 9035, 9252)가 이상치로 추출됐습니다.

     

    get_outlier( ) 함수를 이용해 이상치를 추출하고 이를 삭제하는 것을 get_processed_df( ) 함수에 추가한 뒤 이 데이터 세트를 로지스틱 회귀와 LightGBM 모델에 적용.

    ==> 이상치를 제거한 뒤, 로지스틱 회귀와 LightGBM 모두 예측 성능이 크게 향상되었습니다.

     

     

    SMOTE 오버 샘플링 적용 후 모델 학습/예측/평가

    - SMOTE를 적용할 때는 반드시 학습 데이터세트만 오버 샘플링 해야 합니다.

    - SMOTE객체의 fit_sample( ) 메서드를 이용해 증식한 뒤 증식 전과 비교해 보겠습니다.

    SMOTE 적용후 2배에 가깝게 데이터가 증식됐습니다.
    로지스틱 회귀 모델의 경우 재현율은 증가했지만 정밀도가 급격하게 저하되는 결과가 나타남. 

    ==> 로지스틱 회귀모델이 오버 샘플링으로 인해 실제 원본 데이터의 유형보다 너무나 많은 Class=1 데이터를 학습하면서 실제 테스트 데이터 세트에서 예측을 지나치게 Class=1로 적용해 정밀도가 급격히 떨어진 것입니다.

     

    LightGBM의 경우 재현율은 증가하고 정밀도도 저하된 결과가 나타남

    ==>SMOTE를 적용하면 재현율은 높아지나, 정밀도는 낮아지는 것이 일반적인 것으로 나타났습니다. 즉 좋은 SMOTE

    일수록 재현율 증가율은 높이고 정밀도 감소율은 낮출 수 있도록 효과적으로 데이터를 증식합니다.

     

    'Python Machine Learning > 분류' 카테고리의 다른 글

    분류 - 8  (0) 2020.08.14
    분류 - 7  (0) 2020.08.12
    분류 - 6  (0) 2020.08.12
    분류 - 5  (0) 2020.08.12
    분류 - 4  (0) 2020.08.11
Designed by Tistory.