교차 검증이란 무엇입니까? 기계 학습 모델 비교
게시 됨: 2021-07-21교차 검증은 데이터 과학자에게 매우 유용한 도구입니다.
보다 정확한 빌드에 유용합니다. 기계 학습 독립적인 테스트 데이터 세트에서 모델이 얼마나 잘 작동하는지 평가합니다.
교차 검증은 이해하고 구현하기 쉽기 때문에 다양한 모델의 예측 기능(또는 기술)을 비교하고 가장 좋은 것을 선택하는 데 사용하는 방법입니다. 사용 가능한 데이터 양이 제한되어 있을 때 유용하며 실제로 예측 모델이 어떻게 작동하는지 확인하는 좋은 방법입니다.
교차 검증이란 무엇입니까?
교차 검증(CV)은 기계 학습 모델을 평가하고 성능(또는 정확도)을 테스트하는 데 사용되는 기술입니다. 여기에는 모델이 학습되지 않은 데이터 세트의 특정 샘플을 예약하는 작업이 포함됩니다. 나중에 이 샘플에서 모델을 테스트하여 평가합니다.
교차 검증은 특히 사용 가능한 데이터 양이 제한된 경우 과적합 으로부터 모델을 보호하는 데 사용됩니다. 회전 추정 또는 샘플 외 테스트라고도 하며 주로 모델의 대상이 예측인 설정에서 사용됩니다.
알고 계셨나요? 모델이 훈련 데이터를 너무 잘 모델링하여 새 데이터에 대한 성능에 부정적인 영향을 미치는 경우 모델은 "과적합"된 것으로 간주됩니다.
이 리샘플링 절차는 다른 기계 학습 모델을 비교하고 특정 문제를 해결하기 위해 얼마나 잘 작동하는지 확인하는 데에도 사용됩니다. 즉, 교차 검증은 기계 학습 모델의 기술을 평가하는 데 사용되는 방법입니다.
간단히 말해서, 교차 검증 과정에서 원본 데이터 샘플은 무작위로 여러 하위 집합으로 나뉩니다. 기계 학습 모델은 하나를 제외한 모든 하위 집합에 대해 학습합니다. 훈련 후 나머지 부분 집합에 대한 예측을 수행하여 모델을 테스트합니다.
많은 경우에 서로 다른 하위 집합을 사용하여 교차 검증의 여러 라운드를 수행하고 결과를 평균하여 어떤 모델이 좋은 예측 변수인지 결정합니다.
교차 검증이 왜 중요한가요?
사용 가능한 데이터 양이 제한된 경우 교차 검증이 중요합니다.
자전거 타이어에 구멍이 날 가능성을 예측해야 한다고 가정합니다. 이를 위해 기존 타이어에 대한 데이터(타이어 수명, 주행 마일 수, 라이더의 무게, 이전에 펑크가 났는지 여부)를 수집했습니다.
예측 모델을 생성하기 위해 이 (과거) 데이터를 사용합니다. 이 데이터로 수행해야 하는 두 가지 작업이 있습니다. 바로 알고리즘을 훈련 하고 모델을 테스트 하는 것입니다.
알고 계셨나요? 기계 학습에서 알고리즘과 모델은 동일하지 않습니다. 모델은 기계 학습 알고리즘에 의해 학습된 것입니다.
사용할 수 있는 데이터의 양이 제한되어 있기 때문에 알고리즘 교육에 모든 데이터를 사용하는 것은 순진합니다. 그렇게 하면 모델을 테스트하거나 평가할 데이터가 남지 않습니다.
훈련 세트를 테스트 세트로 재사용하는 것은 훈련되지 않은 데이터에 대한 모델의 정확도를 평가해야 하므로 좋은 생각이 아닙니다. 훈련의 주요 목적은 실제 데이터에서 작동하도록 모델을 준비하는 것이기 때문입니다. 그리고 훈련 데이터 세트에 모델이 만날 수 있는 모든 가능한 데이터 포인트가 포함되어 있을 가능성은 거의 없습니다.
더 나은 아이디어는 데이터의 처음 75%(3개 블록)를 훈련 데이터 세트 로 사용하고 마지막 25%(1블록)를 테스트 데이터 세트 로 사용하는 것입니다. 이를 통해 다양한 알고리즘이 테스트 데이터를 얼마나 잘 분류했는지 비교할 수 있습니다.
그러나 물론 데이터의 처음 75%를 훈련 세트로 사용하고 나머지 25%를 테스트 세트로 사용하는 것이 가장 좋은 방법이라는 것을 어떻게 알 수 있습니까?
대신 데이터의 처음 25%를 테스트에 사용할 수 있습니다. 또는 데이터의 세 번째 블록을 테스트 데이터 세트로 사용하고 나머지를 훈련 데이터 세트로 사용할 수 있습니다.
팁: 기계 학습 소프트웨어를 사용하여 작업을 자동화하고 정확한 예측을 수행하십시오.
결과적으로 k-fold 교차 검증이라고 하는 교차 검증 유형은 데이터 세트의 모든(4개) 부분을 한 번에 하나씩 테스트 데이터로 사용한 다음 결과를 요약합니다.
예를 들어 교차 검증은 데이터의 처음 세 블록을 사용하여 알고리즘을 훈련하고 마지막 블록을 사용하여 모델을 테스트합니다. 그런 다음 테스트 데이터로 모델이 얼마나 잘 수행되었는지 기록합니다.
성능 또는 정확도를 기록한 후 데이터의 첫 번째, 두 번째 및 네 번째 블록을 사용하여 학습하고 세 번째 블록을 테스트합니다. 모든 블록이 테스트 데이터로 한 번 사용될 때까지 프로세스가 계속됩니다. 모든 결과의 평균을 계산하여 모델의 성능을 평가합니다.
위의 예에서 데이터는 4개의 블록으로 나뉩니다. 따라서 이 교차 검증을 4중 교차 검증이라고 합니다. 10개의 블록으로 나누면 10겹 교차 검증이 됩니다.
요컨대, 교차 검증은 모델 선택에 유용하며 모델이 새 데이터에 얼마나 잘 일반화되는지 쉽게 조사할 수 있습니다.
즉, 모델의 예측 오차를 파악하는 것이 도움이 됩니다. 또한 지원 벡터 머신(SVM), K-최근접 이웃(KNN), 선형 회귀 또는 로지스틱 회귀와 같은 다양한 기계 학습 방법의 성능 또는 정확도를 비교하는 데 사용됩니다.
데이터 과학자들이 교차 검증을 좋아하는 몇 가지 이유는 다음과 같습니다.
- 하위 집합을 희생하지 않고 모든 데이터를 사용할 수 있습니다(홀드아웃 방법에는 유효하지 않음).
- 데이터와 알고리즘의 일관성을 나타냅니다.
- 과적합 및 과소적합을 방지하는 데 도움이 됩니다.
교차 검증은 조정하는 데에도 사용됩니다. 초매개변수 무작위 그리드 검색 교차 검증 이라는 기술을 통해 기계 학습 모델의
교차 검증 유형
교차 검증 방법은 크게 두 가지 범주로 분류할 수 있습니다. 완전 방법과 비 완전 방법.
이름에서 알 수 있듯이 철저한 교차 검증 방법은 원본 데이터 샘플을 훈련 세트와 테스트 세트로 나누는 모든 가능한 방법을 테스트하기 위해 노력합니다. 반면에, 포괄적이지 않은 방법은 원본 데이터를 훈련 및 평가 세트로 분할하는 모든 방법을 계산하지 않습니다.
다음은 교차 검증의 5가지 일반적인 유형입니다.
1. 홀드아웃 방식
홀드아웃 방법 은 원본 데이터 세트를 훈련 데이터와 테스트 데이터의 두 부분으로 나누는 기본적인 교차 검증 접근 방식 중 하나입니다. 이는 포괄적이지 않은 방법이며 예상대로 모델은 훈련 데이터 세트에서 훈련되고 테스트 데이터 세트에서 평가됩니다.
대부분의 경우 훈련 데이터셋의 크기는 테스트 데이터셋의 두 배입니다. 즉, 원본 데이터셋이 80:20 또는 70:30의 비율로 분할됩니다. 또한 데이터는 훈련 세트와 검증 세트로 나누기 전에 무작위로 섞입니다.

그러나 이 교차 검증 방법에는 몇 가지 단점이 있습니다. 모델은 데이터 포인트의 다른 조합에 대해 훈련되기 때문에 훈련될 때마다 다양한 결과를 나타낼 수 있습니다. 또한 선택한 훈련 데이터 세트가 전체 데이터 세트를 나타내는지 완전히 확신할 수 없습니다.
원본 데이터 샘플이 너무 크지 않은 경우 테스트 데이터에 몇 가지 중요한 정보가 포함될 수도 있습니다. 이 정보는 훈련 데이터에 포함되지 않아 모델이 인식하지 못합니다.
그러나 홀드아웃 교차 검증 기술은 급하게 모델을 훈련하고 테스트하고 데이터 세트가 큰 경우 이상적입니다.
2. K-폴드 교차 검증
k-fold 교차 검증 방법은 홀드아웃 방법의 개선된 버전입니다. 훈련 및 테스트 데이터 세트를 선택하는 방법에 의존하지 않기 때문에 모델의 점수에 더 많은 일관성을 제공합니다.
완전하지 않은 교차 검증 방법이며 이름에서 알 수 있듯이 데이터 세트를 k개의 분할로 나누고 홀드아웃 방법을 k번 수행합니다.
예를 들어, k 값이 2와 같으면 크기가 같은 두 개의 하위 집합이 있습니다. 첫 번째 반복에서 모델은 한 하위 샘플에서 훈련되고 다른 하위 샘플에서 검증됩니다. 두 번째 반복에서 모델은 이전 반복에서 유효성을 검사하는 데 사용된 하위 집합에 대해 학습되고 다른 하위 집합에 대해 테스트됩니다. 이 접근 방식을 2중 교차 검증 이라고 합니다.
유사하게, k 값이 5와 같으면 접근 방식을 5겹 교차 검증 방법이라고 하며 5개의 부분 집합과 5개의 반복이 포함됩니다. 또한 k 값은 임의적입니다. 일반적으로 k의 값은 10으로 설정됩니다. 값을 선택하는 데 혼란이 있으면 동일한 값을 권장합니다.
k-폴드 교차 검증 절차는 원래 데이터 세트를 k개의 폴드 또는 하위 집합으로 무작위로 분할하는 것으로 시작합니다. 각 반복에서 모델은 전체 데이터 세트의 k-1 하위 집합에 대해 학습됩니다. 그런 다음 k번째 하위 집합에서 모델을 테스트하여 성능을 확인합니다.
이 프로세스는 모든 k-폴드가 평가 세트로 사용될 때까지 반복됩니다. 각 반복의 결과가 평균화되며 이를 교차 검증 정확도 라고 합니다. 교차 검증 정확도는 다양한 모델의 효율성을 비교하기 위한 성능 메트릭으로 사용됩니다.
k-폴드 교차 검증 기술은 일반적으로 원본 데이터 세트의 모든 데이터 포인트가 훈련 세트와 테스트 세트 모두에 나타나기 때문에 편향이 덜한 모델을 생성합니다. 이 방법은 데이터 양이 제한된 경우에 최적입니다.
그러나 예상대로 알고리즘이 처음부터 k 번 다시 실행해야 하므로 이 프로세스에 시간이 많이 걸릴 수 있습니다. 이것은 또한 홀드아웃 방법보다 k-1배 더 많은 계산이 필요함을 의미합니다.
3. 계층화된 k-겹 교차 검증
k-fold 교차 검증에서 무작위로 데이터를 섞고 폴드로 분할하기 때문에 불균형 하위 집합으로 끝날 가능성이 있습니다. 이로 인해 훈련이 편향되어 모델이 부정확해질 수 있습니다.
예를 들어, 두 가지 유형의 클래스 레이블 각각이 원본 데이터의 50%를 구성하는 이진 분류 문제의 경우를 생각해 보십시오. 이는 두 클래스가 동일한 비율로 원본 샘플에 존재함을 의미합니다. 간단하게 하기 위해 두 클래스 A와 B의 이름을 지정하겠습니다.
데이터를 섞고 폴드로 분할하는 동안 대부분의 데이터 포인트가 클래스 A에 있고 소수만 클래스 B에 있는 폴드로 끝날 가능성이 높습니다. 이러한 하위 집합은 불균형 하위 집합으로 간주되며 부정확한 분류기를 생성하게 됩니다.
이러한 상황을 피하기 위해 stratification 이라는 프로세스를 사용하여 폴드를 계층화합니다. 계층화에서 데이터는 각 하위 집합이 전체 데이터 집합을 잘 나타낼 수 있도록 재정렬됩니다.
위의 이진 분류 예에서 이는 폴드의 데이터 포인트의 절반이 클래스 A에서, 나머지가 클래스 B에서 나오도록 원본 샘플을 나누는 것이 더 낫다는 것을 의미합니다.
4. Leave-p-out 교차 검증
LpOCV(Leave-p-out cross-validation) 는 n으로 표시되는 총 데이터 샘플 수에서 p개의 데이터 포인트를 추출하는 철저한 방법입니다.
모델은 np 데이터 포인트에 대해 학습되고 나중에 p 데이터 포인트에 대해 테스트됩니다. 원본 샘플에서 p의 가능한 모든 조합에 대해 동일한 프로세스가 반복됩니다. 마지막으로 각 반복의 결과를 평균화하여 교차 검증 정확도를 얻습니다.
5. Leave-one-out 교차 검증
LOOCV (leave-one-out cross-validation) 접근 방식은 LpOCV의 단순화된 버전입니다. 이 교차 검증 기법에서 p의 값은 1로 설정됩니다. 따라서 이 방법은 훨씬 덜 철저합니다. 그러나 이 방법의 실행은 모델을 n번 피팅해야 하므로 비용과 시간이 많이 소요됩니다.
반복되는 무작위 하위 샘플링 검증, 중첩 교차 검증 및 시계열 교차 검증을 포함한 다른 교차 검증 기술이 있습니다.
교차 검증의 적용
교차 검증의 주요 응용 프로그램은 기계 학습 모델의 성능을 평가하는 것입니다. 이것은 기계 학습 방법을 비교하고 특정 문제를 해결하는 데 이상적인 방법을 결정하는 데 도움이 됩니다.
예를 들어, 광학 문자 인식을 수행하기 위해 k-최근접 이웃(KNN) 또는 주성분 분석(PCA) 을 고려한다고 가정합니다. 이 경우 교차 유효성 검사를 사용하여 각 방법으로 잘못 분류된 문자 수를 기준으로 둘을 비교할 수 있습니다.
교차 검증은 예측 출력에 가장 많이 기여하는 특성을 선택하기 위해 특성 선택 에 사용할 수도 있습니다.
교차 검증의 한계
교차 검증의 주요 과제는 특히 k-fold CV와 같은 방법에서 과도한 계산 리소스가 필요하다는 것입니다. 알고리즘을 처음부터 k 번 다시 실행해야 하므로 평가하려면 k 배 더 많은 계산이 필요합니다.
또 다른 한계는 보이지 않는 데이터를 둘러싼 한계입니다. 교차 검증에서 테스트 데이터 세트는 모델의 성능을 평가하는 데 사용되는 보이지 않는 데이터 세트입니다. 이론적으로 이것은 실제 응용 프로그램에 사용할 때 모델이 어떻게 작동하는지 확인하는 좋은 방법입니다.
그러나 실제로 보이지 않는 포괄적인 데이터 집합은 결코 있을 수 없으며 모델이 미래에 접하게 될 데이터의 종류를 예측할 수도 없습니다.
개인이 특정 전염병에 걸릴 위험을 예측하기 위한 모델이 만들어졌다고 가정합니다. 모델이 특정 인구 그룹(예: 20대 중반 여성)과 관련된 연구 연구의 데이터로 훈련된 경우 일반 인구에 적용할 때 교차 검증 정확도와 비교하여 예측 성능이 크게 다를 수 있습니다. .
또한 교차 검증은 원래 샘플 세트에서 인간의 편견이 통제되는 경우에만 의미 있는 결과를 생성합니다.
구조에 대한 교차 검증
교차 검증된 모델 구축은 더 높은 정확도 또는 성능으로 기계 학습 애플리케이션을 생성하는 훌륭한 방법입니다. k-겹 교차 검증과 같은 교차 검증 기술을 사용하면 테스트 분할을 희생하지 않고 모델의 성능을 추정할 수 있습니다.
또한 불균형 데이터 분할로 인해 발생하는 문제를 제거합니다. 요컨대, 데이터 과학자가 운에 덜 의존하고 반복에 더 많이 의존할 수 있습니다.
인간 두뇌의 기능을 모방하려고 시도하는 기계 학습의 하위 집합이 있습니다. 그것을 딥 러닝이라고 하며, 인공 일반 지능은 가능하다면 의사 결정 능력이 필요합니다.
