과적 합이 너무 나빠서 테스트 오류가 더 작더라도 과적 합을하는 모델을 선택해서는 안됩니까? 아니요. 그러나 선택에 대한 정당성이 있어야합니다.
이 동작은 XGBoost로 제한되지 않습니다. 모든 머신 러닝 기술에서 공통적 인 스레드입니다. 불충분과 과적 합 사이의 올바른 균형을 찾는 것. 공식적인 정의는 Bias-variance tradeoff (Wikipedia) 입니다.
편향-분산 트레이드 오프
다음은 모델의 선택을 정당화하는 데 도움이되는 바이어스-분산 트레이드 오프를 단순화 한 것입니다.
우리는 모델이 데이터의 정보를 완전히 사용할 수 없다면 바이어스 가 높다고 말합니다 . 가장 빈번한 사례, 응답의 평균 또는 몇 가지 강력한 기능과 같은 일반 정보에 너무 의존합니다. 변수가 정규 분포를 따르거나 모형이 선형이라고 가정하면 바이어스는 잘못된 가정에서 비롯 될 수 있습니다.
데이터에서 너무 많은 정보를 사용 하는 모델은 분산 이 높다고 말합니다 . 그것은 제시 된 훈련 세트에서만 관련이있는 정보에 의존합니다.이 정보는 충분히 일반화되지 않습니다. 일반적으로 훈련 세트를 변경하면 모델이 많이 변경되므로 "고 분산"이름입니다.
이러한 정의는 언더 피팅 및 오버 피팅 정의와 매우 유사합니다. 그러나 이러한 정의는 종종 너무 단순화되어 반대의 경우가 아닙니다
- 훈련 오류와 테스트 오류가 모두 높은 경우 모델이 적합하지 않습니다. 이것은 모델이 너무 단순하다는 것을 의미합니다.
- 테스트 오차가 훈련 오차보다 높으면 모형이 과적 합됩니다. 이것은 모델이 너무 복잡하다는 것을 의미합니다.
모델의 올바른 복잡성을 선택하는 데 도움이되므로 이러한 단순화는 물론 도움이됩니다. 그러나 그들은 (거의) 모든 모델에 편향과 분산 성분이 모두 있다는 중요한 점을 간과합니다. 언더 피팅 / 과피 팅 설명은 편차가 너무 많거나 편차가 너무 많지만 항상 (거의) 둘 다 있음을 나타 냅니다.
바이어스-분산 트레이드 오프에 대한 자세한 정보를 원하면 Google을 통해 유용한 시각화 및 리소스를 많이 활용할 수 있습니다. 모든 머신 러닝 교재에는 바이어스-분산 트레이드 오프에 관한 섹션이 있습니다.
- 통계 학습 및 통계 학습 요소 소개 (여기에서 사용 가능) .
- Christopher Bishop의 패턴 인식 및 기계 학습.
- 기계 학습 : 확률 론적 관점, Kevin Murphy.
또한, 스캇 포트만-로의 편견-차이점 트레이드 오프 이해에 도움이 된 멋진 블로그 게시물이 있습니다.
문제에 적용
두 가지 모델이 있습니다.
화성XGBoost기차 MAE∼ 4.0∼ 0.3MAE 테스트∼ 4.0~ 2.4저 분산, 높은 바이어스 ,높은 분산, 낮은 바이어스 ,
하나를 선택해야합니다. 그러기 위해서는 더 나은 모델을 정의해야합니다. 의사 결정에 포함되어야하는 매개 변수는 모델의 복잡성과 성능입니다.
- 하나의 성능 단위로 교환하려는 "단위"의 복잡도는 몇 개입니까?
- 복잡성이 높을수록 분산이 높아집니다. 학습 한 것과 약간 다른 데이터 집합에서 모델을 일반화하려면 복잡성을 줄이십시오.
- 쉽게 이해할 수있는 모델을 원한다면 모델의 복잡성을 줄임으로써 성능 비용을 절감 할 수 있습니다.
- 당신은 당신이하는 데이터 세트에 최적의 성능을 목표로하는 경우 알고 훈련 세트에 비해 같은 생식 과정에서 오는, 당신은 당신의 테스트 오류를 최적화하고 통계로 사용하기 위해 복잡성을 조작 할 수 있습니다. 이것은 훈련 세트가 더 큰 세트에서 무작위로 샘플링되고 모델이이 세트에 적용될 때 발생합니다. 이것은 대부분의 Kaggle 대회에서 그렇습니다.
여기서 목표는 "과적 합하지 않은"모델을 찾는 것이 아닙니다. 바이어스 편차가 가장 좋은 모형을 찾는 것입니다. 이 경우, XGBoost 모델에 의해 달성 된 바이어스 감소는 분산 증가를 정당화하기에 충분하다고 주장합니다.
당신은 무엇을 할 수 있나요
그러나 하이퍼 파라미터를 조정하여 더 잘 수행 할 수 있습니다.
라운드 수를 늘리고 학습 속도를 줄이는 것이 가능합니다. 그래디언트 부스팅에 대해 "이상한"것은 훈련 오류가 0에 도달 한 지점을 지나서 실행하면 여전히 테스트 오류를 개선하는 것으로 보입니다 (여기에서 논의 된 것처럼 : 얕은 것이 좋을 때만 더 낫습니까? ). 다른 매개 변수를 설정하면 데이터 세트에서 모델을 조금 더 길게 학습 할 수 있습니다.
자라는 나무의 깊이는 시작하기에 아주 좋은 곳입니다. 하나의 깊이 단위마다 구성 할 리프 수를 두 배로 늘립니다. 크기가 16이 아닌 크기가 2 인 나무를 키우려면1 / 214그 시간의! 더 작은 나무를 키우는 것이 좋습니다. 그 이유 는 트리의 깊이가 피처 상호 작용의 정도를 나타내야하기 때문 입니다. 이것은 전문 용어 일 수 있지만 기능의 상호 작용 수준이 3 인 경우 (거의 : 4 개의 기능 조합이 해당 기능의 3 + 4 조합보다 강력하지 않은 경우) 3보다 큰 크기의 나무가 자랍니다. 해로운. 깊이 3의 두 나무는 깊이 4의 한 나무보다 일반화 능력이 더 높습니다. 이것은 다소 복잡한 개념이므로 지금은 다루지 않겠지 만 시작하기 위해이 논문 모음을 확인할 수 있습니다 . 또한 깊은 나무는 높은 분산으로 이어집니다!
로 알려진 서브 샘플링, 사용 포기할을 , 분산을 줄이기 위해 중대하다. 개별 나무의 분산이 높은 경우, 자루에 넣는 것은 나무의 평균을 구하고 평균은 개별 나무보다 덜 분산됩니다. 트리의 깊이를 조정 한 후에도 여전히 높은 분산이 발생하면 서브 샘플링을 늘리십시오 (즉, 사용 된 데이터의 일부를 줄이십시오). 특징 공간의 서브 샘플링도이 목표를 달성합니다.