ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 모델 평가와 성능 향상
    전공 서적/파이썬 라이브러리를 활용한 머신러닝 2018. 8. 6. 19:00
    1. 교차검증
      1. 데이터를 여러 번 반복해서 나누고 여러 모델을 학습
      2. K-겹 교차 검증
        1. 데이터를 k개의 부분집합으로 나눈 후 그 중 하나만 테스트 세트로 사용
          이 작업을 k번 반복
        2. 다섯 개의 정확도를 얻게 된다.
        3. 이 정확도의 평균이 모델의 정확도의 기대치가 된다.
        4. 모델이 훈련에 사용한 폴드에 의존적이거나 데이터셋이 작을 경우
          폴드에 따른 정확도의 차이가 크다.
      3. 장점
        1. 데이터를 무작위로 나눴을 때 테스트 세트에 분류하기 쉬운 샘플만 담기는 경우를
          방지할 수 있다.
        2. 모델이 훈련 데이터에 얼마나 민감한지 알 수 있다.
      4. 단점
        1. 연산 비용이 k배 늘어난다.
      5. 계층별 k-겹 교차 검증
        1. 폴드 안의 클래스 비율이 전체 데이터셋의 클래스 비율과 같도록 데이터를 나눈다.
        2. 만약 샘플의 90%가 클래스 A 10%가 클래스 B일 경우
          계층별 교차 검증은 각 폴드에 클래스 A 샘플이 90%, 클래스 B 샘플이 10%가 되도록
          만든다.
        3. 교차 검증 이전에 데이터를 섞는 것으로 이 작업을 대체할 수 있다.
      6. LOOCV
        1. 폴드 하나에 샘플 하나만 들어있는 k-겹 교차 검증
        2. 각 반복에서 하나의 데이터 포인트를 선택 해 테스트 세트로 사용
        3. 시간이 오래 걸리지만 작은 데이터셋에서는 효과적임
      7. 임의 분할 교차 검증
        1. Train_size 만큼의 포인트로 훈련 세트를 만들고, test_size 만큼의 포인트로
          테스트 세트를 만들도록 분할한다.
          1. 이 분할은 n_splits 횟수만큼 반복된다.
        2. 전체 데이터의 일부만 사용할 수 있으므로 대규모 데이터셋으로 작업시 유용하다.
      8. 그룹별 교차 검증
        1. 각 분할에서 한 그룹 전체가 훈련 세트, 테스트 세트에 속함
    2. 그리드 서치
      1. 관심 있는 매개변수들을 대상으로 가능한 모든 조합을 시도해 보는 방법
      2. 이 경우 매개변수 조정시 테스트 세트를 사용했기 때문에 모델 평가시에는 사용할 수 없다.
        때문에 데이터를 세 개의 세트로 만들어 문제를 해결한다.
      3. 교차 검증을 사용한 그리드 서치
        1. 데이터를 훈련, 검증, 테스트 세트로 나누는 방법은 데이터를 나누는 방법에 민감하다.
        2. 일반화 성능을 더 잘 평가하기 위해서 교차 검증을 사용하여 성능을 평가한다.
        3. 교차 검증 결과 분석
          1. 교차 검증의 결과를 시각화하면 검색 대상 매개변수가 모델의 일반화에
            얼마나 영향을 주는지 알 수 있다.
          2. 그리드 서치는 연산 비용이 매우 크기 때문에
            비교적 간격을 넓게 하여 적은 수의 그리드로 시작한 후
            교차 검증된 그리드 서치의 결과를 분석하여 검색을 확장해 나가는 것이 좋음
        4. 중첩 교차 검증
          1. 그리드 서치를 사용할 때 데이터를 훈련, 테스트로 한 번만 나누기 때문에
            결과가 불안정하고 테스트 데이터의 분할에 크게 의존한다.
          2. 중첩 교차 검증에서는 바깥쪽 루프에서 훈련, 테스트 세트로 구성된 폴드를 만든다.
          3. 각 폴드의 훈련 세트에 대하여 그리드 서치를 실행한다.
          4. 바깥쪽에서 분할된 테스트 데이터의 점수를 최적의 매개변수 설정을 사용해 각각 측정한다.
    3. 평가 지표와 측정
      1. 이진 분류의 평가 지표
        1. 불균형 데이터셋
          1. 클래스 하나가 다른 것보다 훨씬 많은 불균형 데이터 셋에서
            거짓
            양성, 거짓 음성 같은 오류가 발생할 있다.
          2. 만약 샘플의 99% 음성 1% 양성일 경우
            무조건
            음성으로 예측하면 정확도가 99% 된다.
          3. 정확도로는 좋은 모델과 무조건 음성으로 예측하는 모델을 구분하기가 어렵다.
        2. 오차 행렬
          1. 오차 행렬은 이진 분류 평가 결과를 나타낼 때 가장 널리 사용하는 방법 중 하나이다.
          2. 오차 행렬의 대각 행렬은 정확히 분류된 경우이고,
            다른 항목은 한 클래스의 샘플들이 다른 클래스로 잘못 분류된 경우가
            얼마나 많은지 알려준다.
          3. 정확도와의 관계
          4. 정밀도, 재현율, f-점수
            1. 정밀도 (PPV)
              1. 정밀도는 양성으로 예측된 것(TF + FP) 중 얼마나 많은 샘플이
                진짜 양성(TP)인지를 측정
              2. 거짓 양성(FP)의 수를 줄이는 것이 목표일 때 성능 지표로 사용한다.
            2. 재현율 (민감도, 적중률, TPR)
              1. 전체 양성 샘플(TP + FN) 중 얼마나 많은 샘플이
                양성 클래스(TP)로 분류되는지를 측정
              2. 모든 양성 샘플을 식별해야 할 때 (거짓 음성(FN)을 피하는 것이 중요할 때) 성능 지표로 사용한다.
            3. 재현율 최적화와 정밀도 최적화는 상충한다.
            4. F-점수
        3. 불확실성 고려
          1. 오차 행렬과 classification_report 함수가 예측 결과를 자세히 분석할 수 있도록 도와준다.
            하지만 예측값은 모델에 담긴 많은 정보가 이미 손실된 상태이다.
          2. 대부분의 분류기는 decision_function, predict_proba 메서드를 제공한다.
          3. 임계값이 0일 때
            1. 클래스 0의 샘플이 매우 많으므로 분류기는 클래스 0에 초점을 맞추고 있다.
            2. 임계값을 변경해 클래스 1의 재현율을 높일 수 있다.
          4. 임계값이 -0.8일 때
            1. 데이터가 심하게 불균형일 때 결정 함수의 임계값을 바꾸면
              더 나은 결과를 쉽게 얻을 수 있다.
        4. 정밀도-재현율 곡선
          1. 정밀도-재현율 곡선을 사용해 비교하면 임계값에 따른 모델의 성능 차이를 비교할 수 있다.
          2. 곡선의 아랫 부분 면적을 평균 정밀도라고 한다.
        5. ROC와 AUC
          1. ROC 곡선
            1. 진짜 양성 비율(TPR)에 대한 거짓 양성 비율(FPR)을 나타낸다.
            2. 곡선 아랫부분 면적을 AUC라고 한다.
            3. 불균형한 클래스를 분류하는 문제에서 모델을 선택할 때는
              정확도보다 AUC가 훨씬 의미 있는 정보를 제공한다.
      2. 다중 분류의 평가 지표
        1. 다중 분류에서 불균형 데이터셋을 위해 많이 사용하는 평가 지표는 f-점수의 다중 분류 버전이다.
        2. 한 클래스를 양성으로 두고 나머지 클래스를 음성 클래스로 간주하여 클래스마다 f-점수를 계산한다.

    '전공 서적 > 파이썬 라이브러리를 활용한 머신러닝' 카테고리의 다른 글

    알고리즘 체인과 파이프라인  (0) 2018.08.06
    데이터 표현과 특성 공학  (0) 2018.08.06
    비지도학습  (0) 2018.08.06
    지도학습  (0) 2018.08.06

    댓글