과적합 및 가지치기

위에 설명된 알고리즘을 사용하면 각 예시를 분리할 수 있다는 가정하에 학습 예시를 완벽하게 분류하는 결정 트리를 학습시킬 수 있습니다. 하지만 데이터 세트에 노이즈가 포함되어 있으면 이 트리는 데이터에 과적합되어 테스트 정확도가 떨어집니다.

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

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

그림 12. 노이즈가 많은 데이터 세트입니다.

 

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

  • 최대 깊이 설정: 결정 트리가 최대 깊이(예: 10)를 넘어서지 않도록 합니다.
  • 리프에 최소 예시 개수 설정: 예시의 개수가 일정 개수 미만인 리프는 분할에 고려되지 않습니다.

다음 그림은 리프당 최소 예 수가 다른 영향을 보여줍니다. 모델이 노이즈를 더 적게 포착합니다.

리프당 최소 예 수에 따른 다른 값의 효과를 보여주는 3개의 도표. 서로 다른 값은 2, 5, 10입니다.

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

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

다음 그림은 이 개념을 보여줍니다. 여기서는 리프가 아닌 녹색 노드가 리프로 바뀌면, 즉 주황색 노드를 프루닝하면 결정 트리의 유효성 검사 정확성이 개선되는지 테스트합니다.

결정 트리 2개 한 결정 트리에는 9개의 노드가 포함되어 있고, 다른 하나는 조건 중 하나를 리프로 변환하여 6개의 노드로만 다시 프루닝되었습니다.

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

 

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

이상적인 직선 모델을 바탕으로 비정형 과적합 모델을 보여주는 도표

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

 

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

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

  • 리프당 최소 개수의 예시를 적용합니다.
  • 최대 깊이를 적용하여 결정 트리의 성장을 제한합니다.
  • 결정 트리 프루닝
YDF 코드
YDF에서 학습 알고리즘은 모든 프루닝 초매개변수의 기본값으로 사전 구성되어 있습니다. 예를 들어 2개의 프루닝 초매개변수의 기본값은 다음과 같습니다.
  • 최소 예시 수는 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의 모델 검사 튜토리얼을 참조하세요.

그러나 간접 해석도 유익합니다.