R의 교차 검증: 사용, 모델 및 측정
게시 됨: 2020-10-19데이터 과학 및 기계 학습의 세계로 여행을 시작할 때 항상 모델 생성 및 알고리즘으로 시작하는 경향이 있습니다. 실제 데이터에서 모델의 효율성을 테스트하는 방법을 배우거나 아는 것을 피하는 경향이 있습니다.
R의 교차 검증 은 데이터의 하위 집합에 우선 순위를 부여하고 우리가 훈련한 데이터 이상으로 적용될 때 모델 성능에 대한 좋은 이해를 얻기 위해 편향 또는 분산 절충을 이해함으로써 홀드아웃 검증 프로세스를 개선하는 모델 검증 유형입니다. 켜짐. 이 기사는 데이터 모델 검증과 모델 검증의 필요성을 설명하는 시작부터 끝까지 가이드가 될 것입니다.
목차
학습 모델의 불안정성
이를 이해하기 위해 다음 그림을 사용하여 다양한 모델의 학습 곡선 적합성을 설명합니다.
원천
우리는 여기에서 크기에 대한 품목 가격에 대한 종속성의 학습된 모델을 보여주었습니다.
플롯을 표시하기 위해 이들 사이에 맞는 선형 변환 방정식을 만들었습니다.
훈련 세트 포인트에서 첫 번째 플롯이 잘못되었습니다. 따라서 테스트 세트에서는 성능이 좋지 않습니다. 그래서 우리는 이것을 “과소적합”이라고 말할 수 있습니다. 여기서 모델은 데이터의 실제 패턴을 이해할 수 없습니다.
다음 플롯은 크기에 대한 가격의 올바른 종속성을 보여줍니다. 최소한의 훈련 오류를 나타냅니다. 따라서 관계가 일반화됩니다.
마지막 플롯에서는 훈련 오류가 거의 없는 관계를 설정합니다. 데이터 포인트와 노이즈의 각 변동을 고려하여 관계를 구축합니다. 데이터 모델은 매우 취약합니다. 맞춤은 오류를 최소화하도록 자체적으로 정렬되어 주어진 데이터 세트에서 복잡한 패턴을 생성합니다. 이것을 "과적합"이라고 합니다. 여기에서 훈련 세트와 테스트 세트 사이에 더 큰 차이가 있을 수 있습니다.
데이터 과학의 세계에는 다양한 모델 중에서 더 나은 성능을 보이는 모델이 있습니다. 그러나 때때로 이러한 개선된 점수가 관계가 더 잘 포착되었기 때문인지 아니면 데이터 과적합 때문인지 이해하기 어렵습니다. 우리는 이러한 검증 기술을 사용하여 올바른 솔루션을 제공합니다. 여기에서 우리는 또한 이러한 기술을 통해 더 잘 일반화된 패턴을 얻습니다.
오버피팅과 언더피팅이란?
머신 러닝에서 언더피팅은 불충분한 패턴을 포착하는 것을 의미합니다. 훈련 및 테스트 세트에서 모델을 실행하면 성능이 매우 낮습니다.
기계 학습에서 과적합은 노이즈와 패턴을 포착하는 것을 의미합니다. 이들은 훈련을 받지 않은 데이터로 잘 일반화되지 않습니다. 훈련 세트에서 모델을 실행하면 매우 잘 수행되지만 테스트 세트에서 실행하면 성능이 저하됩니다.
교차 검증이란 무엇입니까?
교차 검증 은 과적합 또는 선택 편향과 같은 문제가 표시되도록 추정에 사용되지 않은 새 데이터를 예측하는 모델의 능력을 테스트하는 것을 목표로 합니다. 또한 데이터베이스의 일반화에 대한 통찰력이 제공됩니다.
교차 검증 을 구성하는 단계 :
- 샘플 표본으로 데이터 세트를 따로 보관합니다.
- 우리는 데이터 세트의 다른 부분으로 모델 훈련을 받습니다.
- 테스트용으로 예약된 샘플 세트를 사용합니다. 이 세트는 모델의 뛰어난 성능을 수량화하는 데 도움이 됩니다.
통계 모델 검증
통계에서 모델 유효성 검사는 통계 모델의 허용 가능한 출력이 실제 데이터에서 생성되었음을 확인합니다. 통계 모델 출력이 데이터 생성 프로세스 출력에서 파생되어 프로그램의 주요 목표가 철저히 처리되도록 합니다.
Validation은 일반적으로 모델 구성에 사용된 데이터에 대해 평가될 뿐만 아니라 구성에 사용되지 않은 데이터도 사용합니다. 따라서 유효성 검사는 일반적으로 모델의 일부 예측을 테스트합니다.
교차 검증의 용도는 무엇입니까?
교차 검증 은 주로 미래 데이터에 대한 모델의 기술을 추정하기 위해 적용된 기계 학습에서 사용됩니다. 즉, 주어진 샘플을 사용하여 모델 훈련 중에 사용되지 않은 데이터에 대한 예측을 수행하는 동안 모델이 일반적으로 수행될 것으로 예상되는 방식을 추정합니다.
교차 검증이 과적합을 줄입니까?
교차 검증 은 과적합에 대한 강력한 보호 조치입니다. 아이디어는 훈련 세트에 사용된 초기 데이터를 사용하여 더 작은 훈련 테스트 분할을 많이 얻는 것입니다. 그런 다음 이러한 분할을 사용하여 모델을 조정합니다. 일반적인 k-fold Cross-Validation 에서는 데이터를 k개의 부분집합으로 나눈 다음 접기라고 합니다.
읽기: 인도의 R 개발자 급여
R에서 교차 검증에 사용되는 방법
데이터 과학자가 교차 검증 성능 을 위해 사용하는 많은 방법이 있습니다 . 우리는 여기에서 그들 중 일부에 대해 논의합니다.
1. 검증 세트 접근법
Validation Set Approach는 테스트 데이터 세트를 생성하여 모델의 오류율을 추정하는 데 사용되는 방법입니다. 훈련 데이터 세트라고도 하는 다른 관찰 세트를 사용하여 모델을 빌드합니다. 그런 다음 모델 결과가 테스트 데이터 세트에 적용됩니다. 그런 다음 테스트 데이터 세트 오류를 계산할 수 있습니다. 따라서 모델이 과적합되지 않도록 합니다.
R 코드:
훈련 데이터 세트와 다른 테스트 데이터 세트를 생성하기 위해 위의 코드를 작성했습니다. 따라서 훈련 데이터 세트를 사용하여 예측 모델을 구축합니다. 그런 다음 테스트 데이터 세트에 적용하여 오류율을 확인합니다.
2. LOOCV(leave-one-out cross-validation)
LOOCV( Leave-one-out Cross-Validation )는 k 폴드에 대한 특정 다차원 유형의 교차 검증 입니다. 여기서 데이터 세트의 폴드 수와 인스턴스 번호는 동일합니다. 모든 인스턴스에 대해 학습 알고리즘은 한 번만 실행됩니다. 통계에는 잭나이프 추정이라는 유사한 프로세스가 있습니다.
R 코드 조각:
각 반복에 대해 동일한 크기의 검증 세트를 생성하는 몇 가지 훈련 예제를 생략할 수 있습니다. 이 프로세스를 LPOCV(Leave P Out Cross Validation)라고 합니다.

3. k-폴드 교차 검증
기계 학습 모델 평가를 위해 제한된 데이터 샘플에서 리샘플링 절차가 사용되었습니다.
절차는 주어진 데이터 샘플이 분할될 그룹 수를 나타내는 단일 매개변수를 정의하는 것으로 시작됩니다. 따라서 이 절차를 k-fold Cross-Validation 이라고 합니다.
데이터 과학자는 사용 되지 않는 데이터에 대한 기계 학습 모델의 기능을 추정하기 위해 적용된 기계 학습에서 교차 검증 을 사용하는 경우가 많습니다.
비교적 이해하기 쉽습니다. 이는 종종 단순한 훈련 세트 또는 테스트 세트와 같은 모델 기술의 덜 편향되거나 과대적합된 추정치를 초래합니다.
일반적인 절차는 몇 가지 간단한 단계로 구성됩니다.
- 데이터 세트를 혼합하여 무작위화해야 합니다.
- 그런 다음 데이터 세트를 비슷한 크기의 k 그룹으로 나눕니다.
- 각 고유 그룹에 대해:
특정 테스트 데이터 세트로 그룹을 가져와야 합니다. 그런 다음 나머지 모든 그룹을 전체 훈련 데이터 세트로 간주합니다. 그런 다음 훈련 세트에 모델을 맞추고 결과를 확인합니다. 테스트 세트에서 실행합니다. 우리는 평가 점수를 기록합니다.
R 코드 스니펫:
4. 계층화된 k-폴드 교차 검증
계층화는 각 접기가 건전한 대표임을 확인하기 위해 데이터를 재배열하는 것입니다. 50% 데이터의 각 클래스를 갖는 이진 분류 문제를 고려하십시오.
편향과 분산을 모두 처리할 때 계층화된 k-겹 교차 검증 이 가장 좋은 방법입니다.
R 코드 조각:
5. 적대적 검증
기본 아이디어는 기능의 유사성 비율과 훈련과 테스트 간의 분포를 확인하는 것입니다. 구별하기 쉽지 않다면 분포는 반드시 유사하며 일반적인 검증 방법이 해결되어야 합니다.
실제 데이터셋을 다루다보면 테스트셋과 트레인셋이 많이 다른 경우가 있습니다. 내부 교차 검증 기술은 테스트 점수 영역이 아닌 점수를 생성합니다. 여기에서 적대적 유효성 검사가 작동합니다.
특징 분포에 관한 훈련 및 테스트 내 유사성 정도를 확인합니다. 이 검증은 훈련 세트와 테스트 세트를 병합하고, 0 또는 1에 레이블을 지정하고(zero – train, one-test) 이진 점수의 분류 작업을 분석하는 기능입니다.
우리는 훈련 세트의 각 행에 대해 1이고 테스트 세트의 각 행에 대해 0인 새 목표 변수를 생성해야 합니다.
이제 훈련 데이터 세트와 테스트 데이터 세트를 결합합니다.
위에서 새로 생성된 대상 변수를 사용하여 분류 모델을 피팅하고 테스트 세트에 포함될 각 행의 확률을 예측합니다.
6. 시계열에 대한 교차 검증
시계열 데이터 세트는 시간 섹션이 데이터를 엉망으로 만들기 때문에 무작위로 분할할 수 없습니다. 시계열 문제에서는 아래와 같이 교차 검증 을 수행합니다.
시계열 교차 검증 의 경우 체인을 전달하는 방식으로 폴드를 만듭니다.
예를 들어, n년 동안 특정 제품에 대한 연간 소비자 수요에 대한 시계열이 있는 경우. 우리는 다음과 같이 접습니다.
폴드 1: 훈련 그룹 1, 테스트 그룹 2
폴드 2: 훈련 그룹 1,2, 테스트 그룹 3
폴드 3: 훈련 그룹 1,2,3, 테스트 그룹 4
폴드 4: 훈련 그룹 1,2,3,4, 테스트 그룹 5
폴드 5: 훈련 그룹 1,2,3,4,5, 테스트 그룹 6
.
.
.
fold n: 훈련 그룹 1에서 n-1, 테스트 그룹 n
새로운 기차와 테스트 세트가 점진적으로 선택됩니다. 처음에는 모델을 맞추는 데 필요한 최소한의 관측값이 있는 기차 세트로 시작합니다. 점차적으로 접을 때마다 기차와 테스트 세트를 변경합니다.
R 코드 조각:
h = 1은 1단계 선행 예측에 대한 오류를 고려한다는 것을 의미합니다.
세계 최고의 대학에서 데이터 과학 과정 을 배우십시오 . 이그 제 큐 티브 PG 프로그램, 고급 인증 프로그램 또는 석사 프로그램을 획득하여 경력을 빠르게 추적하십시오.
모델의 편향 분산을 측정하는 방법은 무엇입니까?
k-fold Cross-Validation 을 사용하여 다양한 k 모델 추정 오류를 얻습니다. 이상적인 모델의 경우 오류 합계는 0입니다. 모델이 편향을 반환하기 위해 모든 오류의 평균을 취하고 크기를 조정합니다. 더 낮은 평균은 모델에 대해 인식할 수 있는 것으로 간주됩니다.
모델 분산 계산을 위해 모든 오류의 표준 편차를 사용합니다. 표준 편차가 작은 경우 모델은 훈련 데이터의 다른 하위 집합으로 가변적이지 않습니다.
초점은 편향과 분산 사이의 균형을 유지하는 데 있어야 합니다. 분산을 줄이고 모델 편향을 제어하면 어느 정도 평형에 도달할 수 있습니다. 그것은 결국 더 나은 예측을 위한 모델을 만들 것입니다.
또한 읽기: Python의 교차 검증: 알아야 할 모든 것
마무리
이 기사에서 우리는 교차 검증 과 R에서의 적용에 대해 논의했습니다. 또한 과적합을 피하는 방법도 배웠습니다. 또한 validation set approach, LOOCV, k-fold Cross-Validation 및 stratified k-fold와 같은 다양한 절차에 대해 논의한 후 Iris 데이터 세트에서 수행되는 R에서 각 접근 방식을 구현했습니다.
R 프로그래밍이란 무엇입니까?
R 프로그래밍은 수학적 분석, 그래픽 표현 및 보고에 사용할 수 있는 컴퓨팅 언어 및 소프트웨어 설정입니다. 뉴질랜드 오클랜드 대학에서 Ross Ihaka와 Robert Gentleman이 발명했으며 현재 R Development Core Team에서 개발 중입니다. R 프로그래밍은 GNU 라이선스에 따라 공개적으로 사용 가능한 소프트웨어이며 여러 운영 체제용으로 미리 컴파일된 바이너리 버전을 사용할 수 있습니다.
교차 검증은 어디에서 필요합니까?
머신 러닝의 훈련 데이터에 모델을 맞출 수 없으면 모델이 실제 데이터에서 효과적으로 작동한다고 보장할 수 없습니다. 그렇게 하려면 모델이 데이터에서 올바른 패턴을 추출하고 과도한 노이즈를 생성하지 않았음을 보장해야 합니다. 이러한 이유로 교차 검증 방법을 사용합니다. 우리는 모델이 올바른 데이터 패턴을 가지고 있고 교차 검증을 통해 과도한 노이즈를 생성하지 않는다는 것을 보장할 수 있습니다.
R의 응용 프로그램은 무엇입니까?
R 프로그래밍은 다양한 산업 분야에서 사용됩니다. 통계 계산 및 분석은 통계학자와 학생이 R을 사용하여 수행합니다. 은행, 의료, 제조, IT 부문, 금융, 전자 상거래 및 소셜 미디어와 같은 다양한 부문은 R 프로그래밍 언어를 사용합니다. R은 기록 보관 및 인구 조사 처리와 같은 정부 목적으로도 사용됩니다.