python 의 교차 검증 법 과 유출 법 을 상세 하 게 설명 합 니 다.

기계 학습 에서 우 리 는 항상 훈련 집에 서 훈련 모델 을 가지 고 테스트 집에 서 모델 을 테스트 한다.최종 목 표 는 우리 모델 이 테스트 집에 서 가장 잘 표현 되 기 를 바 라 는 것 이다.
그러나 우 리 는 m 개의 관측 을 포함 한 데이터 세트 D 만 있 고 우 리 는 그것 으로 훈련 을 해 야 할 뿐만 아니 라 그것 에 대해 서도 테스트 를 해 야 한다.이때 우 리 는 데이터 세트 D 를 구분 해 야 한다.
데이터 세트 D 의 구분 에 대해 우 리 는 가능 한 한 세 가지 요 구 를 만족 시 켜 야 한다.
훈련 집 샘플 양 충분 하 다
훈련 모델 의 계 산 량 은 참 을 수 있다4.567917.서로 다른 구분 방식 으로 서로 다른 훈련 집 과 테스트 집 을 얻어 서로 다른 결 과 를 얻 을 수 있다.우 리 는 이런 영향 을 없 애 야 한다우 리 는 각각 유치 법,교차 검증 법,그리고 각자 의 python 실현 을 소개 할 것 이다.셀 프 서비스(bootstrapping)는 다음 편 에서 소개 할 것 이다.
1.유출 법
남 겨 두 는 방법 은 가장 자주 사용 되 는 가장 직접적 이 고 가장 간단 한 방법 으로 데이터 세트 D 를 두 개의 서로 배척 하 는 집합 으로 나 누 는데 그 중 하 나 는 훈련 집합 R 이 고 다른 하 나 는 테스트 집합 T 이다.즉시

남 겨 두 는 방법 을 사용 할 때 주의해 야 합 니 다:
4.567917.훈련 모델 의 효 과 를 확보 하기 위해 충분 한 샘플 량 이 있어 야 한다.
4.567917.구분 할 때 데이터 분포 의 일치 성 을 확보 하 는 데 주의해 야 한다(예 를 들 어 500 개 견본 에서 정규 와 반 례 의 비례 는 2:3 이 고 훈련 집 과 테스트 에서 정규 와 반 례 의 비례 도 2:3 이 어야 한다).무 작위 로 층 을 나 누 어 표본 을 추출 하면 된다4.567917.무 작위 구분 의 영향 을 약화 시 키 기 위해 훈련 집 과 테스트 집 을 반복 적 으로 나 누 어 얻 은 여러 번 의 결과 에 대해 평균 적 으로 최종 결과 로 한다일반 훈련 집 과 테스트 집의 비율 은 8:2 또는 7:3 이다.
물론 법 을 남 기 는 단점 도 매우 뚜렷 하 다.즉,그것 은 일정한 견본 정 보 를 손실 시 킬 수 있다.동시에 큰 견본 이 필요 하 다.
python 은 남 겨 두 는 방법 을 실현 합 니 다.sklearn 가방 만 사용 하면 됩 니 다.

from sklearn.model_selection import train_test_split
#  train_test_split         
train_X , test_X, train_Y ,test_Y = train_test_split(
  X, Y, test_size=0.2,random_state=0)
''' 
X         ,Y        ;
train_X,test_X  X  8:2    ;
train_Y,test_Y  X  8:2    ;
test_size     ;
random_state         
'''
2.교차 검증 법
교차 검증 법(cross vaidation)은 유출 법의 문 제 를 잘 해결 할 수 있 고 데이터 양 에 대한 요구 가 높 지 않 으 며 샘플 정보 손실 이 많 지 않다.
교차 검증 법 은 먼저 데이터 세트 D 를 k 개의 크기 가 비슷 한 상호 배척 부분 집합 으로 나 누 었 다.즉,
 
데이터 분포 의 일치 성 을 확보 하기 위해 D 에서 무 작위 로 층 을 나 누 어 표본 을 추출 하면 된다.
그 후에 매번 k-1 개의 부분 집합 을 훈련 집 으로 하고 나머지 부분 집합 을 테스트 집 으로 한다.그러면 우 리 는 k 조 훈련/테스트 집 을 얻 고 k 차 훈련 과 테스트 를 한 다음 에 이 k 조 테스트 의 평균 값 으로 돌아 갈 수 있다.
구체 적 으로 말 하면 우 리 는 k=10 을 예 로 들 면
처음으로 우 리 는 10 번 째 데 이 터 를 테스트 집합 으로 선택 하고 9 번 째 는 훈련 집합 이다.
두 번 째 로 우 리 는 9 번 째 데 이 터 를 테스트 집 으로 선택 하고 1-8 과 10 번 을 훈련 집 으로 한다.

열 번 째 로 우 리 는 첫 번 째 데 이 터 를 테스트 집 으로 선택 하고 2-9 는 훈련 집 으로 한다.
이로써 우 리 는 모두 10 조 의 훈련 집 과 테스트 집 을 얻어 10 차례 의 훈련 과 테스트 를 거 쳐 최종 적 으로 10 차례 의 테스트 결과 의 평균 치 를 되 돌려 받 았 다.
분명 한 것 은 교차 검증 법 결과 의 안정성 과 진실성 은 어느 정도 k 의 선택 에 달 려 있다.이 점 을 강조 하기 위해 교차 검증 법 은'k 절 교차 검증 법'이 라 고도 부 르 는데 k 가 가장 많이 취 하 는 것 은 10 이 고 5 또는 20 을 취 하 는 것 도 있다.

이 동시에 우 리 는 데이터 구분 의 임 의성 으로 인 한 오 차 를 피해 야 한다.우 리 는 p 차 실험 을 반복 할 수 있다.
p 차 k 접 기 교차 검증 법 은 pk 차 유출 법(비율 k-1:1)을 한 것 과 같다.
python 은 교차 검증 법 을 실현 합 니 다.sklearn 패키지 만 사용 하면 됩 니 다.함수 가 샘플 번 호 를 되 돌려 줍 니 다.

import pandas as pd
from sklearn.model_selection import KFold

data = pd.read_excel('') #    
kf = KFold(n_splits = 4,shuffle = False,random_state = None) 
'''n_splits         ;shuffle random_state        。
  shuffle = False,random_state = None,            ;
  shuffle = True,random_state = None,            ;
  shuffle = True,random_state = (    ),            ;
'''
for train, test in kf.split(data):
 print("%s %s" % (train, test))
 '''
   
[ 5 6 7 8 9 10 11 12 13 14 15 16 17 18] [0 1 2 3 4]
[ 0 1 2 3 4 10 11 12 13 14 15 16 17 18] [5 6 7 8 9]
[ 0 1 2 3 4 5 6 7 8 9 15 16 17 18] [10 11 12 13 14]
[ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14] [15 16 17 18]
'''
데이터 세트 를 몇 번 반복 해서 교차 검증 법 으로 구분 하려 면 RepeatedKFold 함 수 를 사용 하면 됩 니 다.그 중 에 인자 n 이 하나 더 있 습 니 다.repeats
유출 법 에 비해 교차 검증 법의 데이터 손실 이 적 고 작은 견본 에 더욱 적합 하지만 그 계산 복잡 도가 높 아 지고 저장 공간 이 커진다.극단적으로 말 하면 데이터 세트 D(m 개 샘플)를 m 부 로 나 누 면 매번 m-1 개의 샘플 을 훈련 집 으로 하고 나머지 하 나 는 테스트 집 으로 한다.모두 m 회 훈련 과 테스트 를 진행한다.이런 방법 은 유일 법 이 라 고 불 린 다.
남 겨 두 는 방법의 장점 은 분명 하 다.그 데이터 손실 은 하나의 견본 만 있 고 견본 이 즉시 구분 하 는 영향 을 받 지 않 는 다.그러나 그 계산 복잡 도가 너무 높 고 공간 저장 소 가 너무 많이 차지한다.
python 교차 검증 법 구현,sklearn 패키지 만 사용 하면 됩 니 다.
from sklearn.model_selection import LeaveOneOut

X = [1, 2, 3, 4]
loo = LeaveOneOut()
for train, test in loo.split(data):
 print("%s %s" % (train, test))
'''  
[1 2 3] [0]
[0 2 3] [1]
[0 1 3] [2]
[0 1 2] [3]
'''
위 에서 말 한 바 와 같이:
4.567917.우리 의 데이터 양 이 충분 할 때 남 겨 두 는 방법 을 선택 하여 간단 하고 시간 을 절약 하 며 아주 작은 정확 도 를 희생 하 는 상황 에서 계산 하 는 것 이 간편 하 다4.567917.우리 의 데이터 양 이 시간 에 비해 우 리 는 교차 검증 법 을 선택해 야 한다.이때 견본 집 을 나 누 면 훈련 데이터 가 너무 적 기 때문이다4.567917.우리 의 데이터 양 이 매우 적 을 때 우 리 는 남 겨 두 는 방법 을 고려 할 수 있다이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기