과적합 및 프루닝

위에서 설명한 알고리즘을 사용하면 예시가 분리 가능하다고 가정하여 학습 예시를 완벽하게 분류하는 결정 트리를 학습할 수 있습니다. 하지만 데이터 세트에 노이즈가 포함된 경우 이 트리는 데이터에 오버핏되어 테스트 정확도가 낮아집니다.

다음 그림은 특성 x와 라벨 y 간에 선형 관계가 있는 노이즈 데이터 세트를 보여줍니다. 또한 이 그림에는 정규화 유형 없이 이 데이터 세트에서 학습된 결정 트리가 표시되어 있습니다. 이 모델은 모든 학습 예시를 올바르게 예측합니다 (모델의 예측이 학습 예시와 일치함). 하지만 동일한 선형 패턴과 다른 노이즈 인스턴스가 포함된 새 데이터 세트에서는 모델의 성능이 저하됩니다.

일반적인 기울기는 +1이지만 데이터 세트의 노이즈가 너무 많아 개별 데이터 포인트가 최적의 선에서 멀리 떨어져 있는 경우도 있습니다.

그림 12. 노이즈가 있는 데이터 세트입니다.

 

결정 트리의 오버피팅을 제한하려면 결정 트리를 학습하는 동안 다음 정규화 기준 중 하나 또는 둘 다를 적용합니다.

  • 최대 깊이 설정: 결정 트리가 최대 깊이(예: 10)를 초과하여 확장되지 않도록 합니다.
  • 리프의 최소 예시 수 설정: 특정 개수보다 적은 예시가 있는 리프는 분할에 고려되지 않습니다.

다음 그림은 리프당 최소 예시 수가 다른 경우의 영향을 보여줍니다. 모델이 노이즈를 덜 포착합니다.

리프당 최소 예시 수에 서로 다른 값이 미치는 영향을 보여주는 세 개의 그래프 다른 값은 2, 5, 10입니다.

그림 13. 리프당 최소 예시 수가 다릅니다.

특정 비잎 노드를 잎으로 변환하여 특정 브랜치를 선택적으로 삭제 (정리)하여 학습 후에 정규화할 수도 있습니다. 삭제할 브랜치를 선택하는 일반적인 해결 방법은 검증 데이터 세트를 사용하는 것입니다. 즉, 브랜치를 삭제하면 검증 데이터 세트에서 모델 품질이 개선되면 브랜치가 삭제됩니다.

다음 그림은 이 개념을 보여줍니다. 여기서는 잎이 아닌 녹색 노드를 잎으로 바꾸면 의사 결정 트리의 검증 정확성이 개선되는지 테스트합니다. 즉, 주황색 노드를 정리합니다.

두 개의 결정 트리 한 결정 트리에는 9개의 노드가 포함되어 있고 다른 결정 트리는 조건 중 하나를 리프로 전환하여 6개의 노드로만 줄였습니다.

그림 14. 조건과 그 하위 요소를 리프로 프루닝합니다.

 

다음 그림은 데이터 세트의 20% 를 유효성 검사로 사용하여 결정 트리를 정리하는 효과를 보여줍니다.

직선형 이상적 모델에 비해 오버핏된 모델이 울퉁불퉁한 모습을 보여주는 그래프

그림 15. 데이터 세트의 20% 를 사용하여 결정 트리를 프루닝합니다.

 

검증 데이터 세트를 사용하면 결정 트리의 초기 학습에 사용할 수 있는 예시 수가 줄어듭니다.

많은 모델 제작자가 여러 기준을 적용합니다. 예를 들어 다음 작업을 모두 할 수 있습니다.

  • 리프당 최소 예시 수를 적용합니다.
  • 최대 깊이를 적용하여 결정 트리의 성장을 제한합니다.
  • 결정 트리를 정리합니다.
YDF 코드
YDF에서는 학습 알고리즘이 모든 가지치기 초매개변수의 기본값으로 사전 구성됩니다. 예를 들어 다음은 두 가지 프루닝 초매개변수의 기본값입니다.
  • 최소 예시 수는 5개 (min_examples = 5)입니다.
  • 학습 데이터 세트의 10% 는 검증을 위해 보관됩니다(validation_ratio = 0.1).
validation_ratio=0.0를 설정하여 검증 데이터 세트에서 프루닝을 사용 중지할 수 있습니다.

이러한 기준은 조정이 필요한 새로운 초매개변수 (예: 최대 트리 깊이)를 도입하며, 종종 자동 초매개변수 조정을 사용합니다. 결정 트리는 일반적으로 교차 검증과 함께 초매개변수 조정을 사용하도록 학습할 만큼 빠릅니다. 예를 들어 'n'개의 예시가 있는 데이터 세트에서

  • 학습 예시를 겹치지 않는 p개 그룹으로 나눕니다. 예를 들면 p=10입니다.
  • 가능한 모든 초매개변수 값(예: 최대 깊이: {3,5,6,7,8,9}, 최소 예시: {5,8,10,20})
    • 각 그룹에서 다른 p-1 그룹에서 학습된 결정 트리의 품질을 평가합니다.
    • 그룹 전체의 평가를 평균합니다.
  • 평균 평가가 가장 좋은 초매개변수 값을 선택합니다.
  • 선택한 하이퍼파라미터와 함께 모든 'n' 예시를 사용하여 최종 결정 트리를 학습합니다.

이 섹션에서는 결정 트리가 오버피팅을 제한하는 방법을 설명했습니다. 이러한 방법에도 불구하고, 아래 첨자 및 오버피팅은 결정 트리의 주요 약점입니다. 학습 포레스트는 과적합을 제한하는 새로운 방법을 도입합니다. 이는 나중에 살펴보겠습니다.

직접 결정 트리 해석

결정 트리는 쉽게 해석할 수 있습니다. 하지만 몇 개의 예시만 변경해도 결정 트리의 구조와 해석이 완전히 달라질 수 있습니다.

결정 트리가 빌드되는 방식, 즉 학습 예시를 분할하는 방식으로 인해 결정 트리를 사용하여 모델이 아닌 데이터 세트 자체를 해석할 수 있습니다. 각 리프는 데이터 세트의 특정 모서리를 나타냅니다.

YDF 코드
YDF에서는 model.describe() 함수를 사용하여 트리를 볼 수 있습니다. model.get_tree()를 사용하여 개별 트리에 액세스하고 표시할 수도 있습니다. 자세한 내용은 YDF의 모델 검사 튜토리얼을 참고하세요.

하지만 간접적 해석도 유용한 정보를 제공합니다.