과적합화 문제 해결
# 선요약
1. 모델이 복잡해지면서 성능이 떨어지는 것을 '과적합화'라고 한다.
2. 예비 데이터를 이용하여 적합도 그래프를 그리거나 교차 검증을 통해 과적합화를 확인할 수 있다.
3. 데이터 적합도와 단순성을 모두 최적화하는 것을 '균일화'라고 한다.
3. 프루닝이나 모델링 함수에 복잡도 벌점을 부여하는 방법 등으로 균일화를 할 수 있다.
# 과적합화
모델이 훈련 데이터에만 너무 잘 맞는 것을 과적합화라고 한다. 모델이 복잡해지면 일반화 능력이 떨어지게 되어 모집단의 다른 데이터에는 적용할 수 없게 된다. 즉 성능이 떨어진다. 과적합화를 완전히 해결하는 방법은 없기 때문에 과적합화를 확인하고 복잡도를 관리하는 전략이 가장 좋다.
# 적합도 그래프
적합도 그래프는 모델의 복잡도에 따른 정확도를 보여준다. 예비 데이터는 모델의 성능을 평가하기 위해 떼어 놓은 데이터다.
모델이 너무 단순하면 정확도가 떨어진다. 모델이 어느정도 복잡해지면, 훈련 데이터는 정확도가 올라가지만 예비 데이터는 일반화 특성이 낮아지면서 정확도가 떨어진다. 트리 유도 모델에서 복잡도가 증가함에 따라 정확도가 상승하다가 다시 떨어지는 구간을 스위트 스팟이라고 한다. 성능이 떨어지는 이유는 모델이 복잡해지면서 해로운 가짜 연관성까지 학습하게 되기 때문이다. 예를 들어 분류 트리를 사용할 때, 속성 a 에 의해 데이터가 충분히 잘 분류될 수 있지만 연관성이 떨어지는 속성 b 까지 포함시키면서 잘못 예측할 수도 있다. 모든 데이터 세트는 전체 모집단 속의 유한 표본이므로 표본 추출 방법이 편향되어 있지 않더라도 표본에는 변이가 생길 수 있다.
# 교차 검증
교차 검증은 데이터를 훈련 데이터와 예비 데이터로 나누는 방법과 달리, 여러 번 분할하고 시험하기 위한 표본을 바꿔가면서 모든 데이터에 대한 추정치를 계산한다. 먼저 레이블이 붙은 데이터 세트를 k 개의 폴드라고 불리는 단위로 분할한다. 그리고 훈련과 시험을 k 번 독립적으로 실행한다. 따라서 교차 검증의 각 단계에서는 k - 1 / k 데이터를 훈련에, 1 / k 데이터를 시험에 사용한다.
교차 검증에 대한 자세한 설명: 교차 검증(cross validation) : 네이버 블로그 (naver.com)
# 모델링 비교
지원 벡터 기계는 복잡도 제어 기능이 포함되어 있기 때문에 개별 데이터에 덜 민감하다. 오류가 있어도 판별식이 크게 안바뀐다. 로지스틱 회귀 분석은 융통성이 떨어지고 개별 데이터에 민감하다. 데이터가 적을 때는 과적합화가 덜 일어나지만, 복잡한 데이터는 완전히 모델링하지 못한다. 이와 반대로 트리 유도는 융통성이 좋아서 특징과 타겟 간의 비선형 관계를 잘 표현한다. 데이터가 적을 때 과적합화가 일어나기 쉽지만, 훈련 데이터가 커지면 복잡한 규칙도 더 잘 모델링한다.
# 과적합화 회피와 복잡도 제어
트리 유도에서는 너무 복잡해지기 전에 트리의 성장을 멈추거나 트리를 최대한 키운 후에 프루닝해 복잡도를 줄이면 된다. 첫 번째 방법은 모든 단말 노드에서 가설 검증을 수행해 정보량이 우연히 증가한 것인지를 판단한다. 가설 검증은 p-값에 기반하며 이 값은 통계 데이터에서의 차이가 우연히 발생할 가능성의 한계를 나타낸다. 가설 검증에 따라 정보량이 우연히 증가한 것이 아니라면 트리를 계속 키우면 된다. 두 번째 방법인 프루닝은 가지치기를 뜻한다. 단말 노드나 가지를 제거하거나 교체해도 정확도가 떨어지지 않는다면 계속 프루닝을 반복한다.
일반적인 방법으로는 훈련 세트를 하위 훈련 세트와 하위 시험 세트로 분할하는 '내포된 예비 시험'이 있다. 또한 모델이 데이터에 잘 맞을수록 좋은 모델이지만, 동시에 단순할수록 더 좋은 모델이 되기도 한다. 균일화는 데이터 적합도와 단순성을 모두 최적화하는 것이다. 파라미터형 모델에서는 모델링 목적 함수에 복잡도 벌점을 부여하는 방법이 있다.