머신 러닝의 모델 평가와 모델 선택, 알고리즘 선택 – 2장. 부트스트래핑과 불확실성

이 글은 파이썬 머신 러닝의 저자 세바스찬 라쉬카(Setabstian Raschka)가 쓴 ‘Model evaluation, model selection, and algorithm selection in machine learning Part II – Bootstrapping and uncertainties‘를 원저자의 동의하에 번역한 것입니다.

소개

이전 포스트(1장)에서 지도 학습 모델 평가의 이면에 있는 일반적인 개념에 대해 소개했습니다. 모델 평가시 레이블된 데이터를 새로 구하기 어려운 현실적인 제약을 해결하려고 홀드 아웃holdout 방법을 소개했습니다. 홀드아웃 방법에서는 데이터셋을 훈련 세트와 테스트 세트 두 부분으로 나눕니다. 먼저 훈련 데이터를 지도 학습 알고리즘에 주입합니다. 학습 알고리즘은 레이블된 훈련 데이터를 사용해 모델을 학습합니다. 그런 다음 본적이 없는 새 데이터의 역할을 하는 테스트 세트로 예측 성능을 평가합니다. 또한 소량의 테스트 세트 하나에 기초한 성능 추정의 불확실성을 모델링하기 위해 신뢰 구간confidence interval을 계산하려고 정규 근사normal approximation의 가정을 소개했습니다.

여기에서는 모델 평가를 위한 조금 더 발전된 기법을 살펴 보겠습니다. 모델의 변동variance과 안정성stability은 물론 모델의 성능 추정의 불확실성을 가늠하는 기법에 대해 논의하겠습니다. 이런 기본 사항을 익힌 뒤 다음 글에서는 모델 선택을 위한 크로스 밸리데이션 방법을 살펴 보겠습니다. 1 장에서 모델 평가가 왜 중요한지 세가지 이유에 대해 언급했습니다.

  1. 미래 (처음 본) 데이터에 대한 예측 성능인 일반화 정확도를 추정하려고 합니다.
  2. 주어진 가설 공간hypothesis space에서 가장 뛰어난 성능의 모델을 선택하고 학습 알고리즘을 튜닝하여 예측 성능을 증가시키려고 합니다.
  3. 문제에 가장 적합한 머신 러닝 알고리즘을 찾으려 합니다. 그래서 서로 다른 알고리즘들을 비교하고 알고리즘 가설 공간 안에서 가장 성능이 좋은 모델과 알고리즘을 선택하려고 합니다.

(이 글에 있는 그림을 만드는 코드는 깃허브에 주피터 노트북으로 업로드 되어 있습니다.)

리샘플링

이전 글에서 분류 모델의 예측 정확도와 에러에 대해 소개했습니다. 데이터셋 S 에서 분류 에러와 정확도는 다음 공식으로 정의됩니다.

ERR_s = \dfrac{1}{n} \underset{i=1}{\overset{n}{\sum}} L(\hat{y}_i, y_i) = 1 - ACC_s

여기서 L(·) 은 0-1 손실을 나타냅니다. 이는 데이터셋 S 에 있는 모든 n 개의 샘플에 대해 예측한 클래스 레이블 \hat{y}_i 와 진짜 레이블 y_i 를 사용해 아래와 같이 계산됩니다:

L(\hat{y}_i, y_i) :=\begin{cases} 0 & \mbox{if }\hat{y}_i = y_i \\ 1 & \mbox{if }\hat{y}_i \ne y_i\end{cases}

요약하면 분류 에러는 단순하게 잘못된 예측 수를 데이터셋에 있는 전체 샘플수로 나눈 것입니다. 반대로 예측 정확도는 올바르게 예측한 수를 전체 샘플수로 나눈 것입니다.

이 글에서 언급한 개념은 회귀와 같은 다른 종류의 지도 학습에도 적용됩니다. 다음 섹션에서 언급할 리샘플링resampling 방법을 적용하려면 평균 제곱 에러mean squared error(MSE)를 사용한 예측 정확도와 에러로 바꾸기만 하면 됩니다.

MSE_s = \dfrac{1}{n}\overset{n}{\underset{i=1}{\sum}}(\hat{y}_i-y_i)^2

1장에서 보았듯이 성능 예측은 편향과 분산을 피할 수 없고 적절한 절충점을 찾아야 합니다. 예를 들어 재치환 평가resubstitution evaluation(모델을 학습할 때 사용한 훈련 세트로 모델을 평가하는 것)는 매우 낙관적인 편향을 만듭니다. 반대로 데이터셋에서 많은 비율을 테스트 세트로 떼어 놓으면 비관적으로 편향된 추정이 됩니다. 테스트 세트의 사이즈를 줄이면 비관적인 편향은 감소하지만 성능 추정의 변동은 아마 커지게 될 것입니다. 이 글에서는 모델 평가와 선택에서 편향과 분산 사이에 적절한 균형점을 찾기 위한 대안으로 리샘플링 방법을 살펴 보겠습니다.

visual_bias_variance

비율이 큰 테스트 세트가 비관적인 편향을 만드는 이유는 모델이 미처 최대 성능 한계에 도달하지 않았기 때문입니다. 다른 말로 하면 데이터가 더 있다면 학습 알고리즘이 더 강력하고 일반화된 분류 가설을 만들 수 있습니다. 이런 현상을 시뮬레이션하기 위해 MNIST 데이터 일부를 사용해 학습시킨 소프트맥스 분류기softmax classifier1 학습 곡선learning curve을 그렸습니다:

model-eval-mnist_0

이 그래프를 그리기 위해 0에서 9까지의 손글씨 숫자 데이터인 MNIST으로 부터 10개의 클래스에서 각각 500개의 샘플을 무작위로 골랐습니다. MNIST의 5000개 샘플 데이터는 게층stratification 샘플링을 사용해 클래스 비율이 유지되도록 하면서 3500개의 훈련 세트와 1500개의 테스트 세트로 랜덤하게 나누었습니다. 마지막으로 3500개의 훈련 세트에서 다시 랜덤하게 계층 샘플링으로 서브 데이터셋을 만들고 이 데이터셋으로 소프트맥스 분류기를 학습한 다음 1500개의 테스트 세트로 성능을 평가했습니다. 훈련에 사용한 서브 데이터셋들 사이에는 중복된 샘플 있을 수 있습니다. 위 그림에서 두 가지 경향을 볼 수 있습니다. 첫째 재치환 정확도(훈련 세트)는 훈련 샘플 수가 늘어날수록 감소합니다. 둘째 훈련 세트 크기가 커질수록 일반화 정확도(테스트 세트)는 향상됩니다. 이런 경향은 오버피팅이 줄어들기 때문입니다. 훈련 세트가 작으면 알고리즘은 노이즈 데이터의 민감하게 되고 이전에 본 적 없는 데이터에 잘 일반화되지 못합니다 이런 현상은 홀드아웃 방법에서의 비관적 편향도 설명해줍니다. 알고리즘은 테스트에 덜어 놓은 데이터를 포함해 훈련 데이터가 많을수록 좋습니다. 그러므로 모델을 평가한 후 실제 애플리케이션에 적용하기 전에 전체 데이터셋을 가지고 학습 알고리즘을 다시 실행시킵니다.

이제 상대적으로 큰 비율의 테스트 세트의 비관적 편향에 대해 따져 보겠습니다. 그래서 테스트 세트의 크기를 감소시키는 것이 좋을지 어쩔지 생각해 보겠습니다. 테스트 세트의 크기를 줄이면 다른 문제가 대두 됩니다. 모델 성능 추정에 상당한 분산이 발생합니다. 훈련 세트에 있는 샘플과 테스트 세트에 있는 샘플의 의존적이기 때문입니다. 데이터를 리샘플링 할때마다 샘플 분포 통계를 변경하고 있다는 것을 기억해야 합니다. 성능 추정은 물론 대부분의 분류와 회귀의 지도 학습 모델은 데이터셋이 샘플링된 모집단을 대표한다고 가정하고 있습니다. 1장에서 배웠듯이 계층 샘플링은 데이트셋을 나눌 때 클러스터의 비율을 유지하도록 해줍니다. 하지만 특성에 내재된 샘플 통계 값의 변화는 여전히 문제가 됩니다. 특히 우리가 작은 데이터셋으로 작업할 때 더 그렇습니다. 아래 그림에서 2차원 가우시안 데이터를 반복적으로 서브샘플링subsampling하여2 이를 나타냈습니다.

resampling_gauss

반복 홀드아웃 밸리데이션

안정적으로 훈련 세트와 테스트로 나누어 좀 더 견고한 성능 추정을 하는 한 가지 방법은 랜덤 시드를 달리하여 k 번 홀드아웃 메소드를 반복하고 이 k 반복의 성능 평균을 계산하는 것입니다.

ACC_{avg}=\dfrac{1}{k}\overset{k}{\underset{j=1}{\sum}}ACC_j

여기서 Acc_j는 크기가 mj 번째 테스트 세트의 성능 추정 입니다.

ACC_j=1-\dfrac{1}{m}\overset{k}{\underset{i=1}{\sum}}L(\hat{y}_i, y_i)

이런 반복적인 홀드아웃 과정을 몬테카를로 크로스 밸리데이션Monte Carlo Cross Validation이라고도 부르며 랜덤 테스트 세트에 모델이 얼마나 성능을 내는지 더 나은 추정을 만듭니다. 또한 학습 알고리즘이 만든 모델이 훈련 세트 분할에 따라 어떻게 변경되는지, 모델의 안정성stability에 대한 아이디어를 제공합니다. 다음 그림은 Iris 데이터셋을 사용한 3-최근접 이웃 분류기를 학습하는데 반복 홀드아웃 밸리데이션이 훈련-테스트 분할에 따라 어떻게 동작하는지를 보여 줍니다.

model-eval-iris

왼쪽 그래프를 만들기 위해 훈련 세트와 테스트 세트가 각각 75개 샘플이 되도록 훈련/테스트의 계층 분할을 50번 수행했습니다. 각 반복마다 k-최근접 이웃 모델을 훈련 세트로 학습시키고 테스트 세트로 평가했습니다. 50/50 비율 분할로 50번 반복한 평균 정확도는 95%입니다. 왼쪽 그래프를 그린 이 과정을 동일하게 사용하여 90/10 비율 분할로 반복해 적용했습니다. 이 테스트 세트는 15개 샘플로만 구성됩니다. 이 때 50번 분할에 대한 평균 정확도가 96%입니다. 위에 있는 그래프를 다시 보죠. 이는 이전에 논의했던 두 가지를 잘 보여주고 있습니다. 첫 번째는 추정값의 변동이 테스트 세트 크기가 감소함에 따라 증가합니다. 두 번째 훈련 세트의 크기가 감소했을 때 비관적 편향이 조금 증가했습니다. 그래서 50/50 분할에서 훈련 데이터로 부터 더 많은 데이터를 떼어냈으므로 50번 반복에 대한 평균 성능이 90/10 분할보다 조금 낮아졌습니다.3

다음 섹션에서 모델 성능을 평가하는 다른 방법을 살펴 보겠습니다. 성능 추정의 불확실성을 추론하기 위해 널리 사용되는 부트스트랩 방식의 여러 측면에 대해 이야기할 것입니다.

부트스트랩 방법과 경험적 신뢰구간

이전 몬테카를로 밸리데이션의 예에서 한 번의 훈련/테스트 분할에 의한 평가보다 반복적인 홀드아웃 밸리데이션이 랜덤 테스트 세트에서 더 안정적인 모델 성능을 예측한다는 것을 보았습니다. 거기에 더해서 반복적인 홀드아웃 모델은 안정성에 관한 아이디어를 줍니다. 이 섹션에서 모델을 평가하는 또 다른 방법을 살펴보고 부트스트랩 방법을 사용하여 불확실성은 계산하겠습니다.

확실성 또는 불확실성을 판단하기 위해 성능 추정에 대한 신뢰구간을 계산하고자 합니다. 샘플이 알 수 없는 분포에서 추출되었을 경우 어떻게 이를 알 수 있을까요? 아마 모집단의 평균에 대한 점추정으로 샘플의 평균을 사용 할 수 있을 것이지만 분포를 모르는데 어떻게 이 평균의 분산과 신뢰구간을 계산할 수 있을까요? 여러번 독립적인 샘플 수집할 수도 있겠지만 실제 애플리케이션에서는 비용이 많이 듭니다. 부트스트랩 이면에 있는 아이디어는 경험적 분포empirical distribution에서4 샘플링하여 새로운 샘플을 생성하는 것입니다. 여담으로 부스트랩이라는 단어는 “to pull oneself up by one’s bootstraps”에서 유래되었습니다.

약 1900년대 “to pull (oneself) up by (one’s) bootstrap”은 불가능한 작업을 상징하는 것으로 사용되었습니다(Steels의 “Popular Physics”(1988) 교과서의 1장 마지막에 “실용적 질문들” 중 “30번. 왜 사람은 자기 신발 끈을 잡아당겨 스스로를 들어 올릴 수가 없는가?”이 있습니다). 1916 년에 의미가 확장되어 “힘들게 혼자의 노력으로 헤쳐나가다” 라는 뜻이 포함되었습니다. “컴퓨터의 운영시스템을 로딩하는 고정된 명령”(1953년)이라는 의미는 처음 로딩되는 프로그램이 자기 자신과 나머지를 구동시킨다는 개념으로 부터 왔습니다. (출처: 온라인 어원 사전)

부트스트랩 방식은 샘플링 분포를 추정하기 위한 샘플링 기법입니다. 이 글에서는 특별히 성능 추정, 즉 예측 정확도와 에러의 불확실성을 추정하는데 관심이 있습니다. 부트스트랩 방식은 1979년 브래들리 에프론Bradley Efron에 의해 소개되었습니다. 15년 후 즘에 브래들리 에프론과 로보트 팁쉬라니Robert Tibshirani는 “Introduction to the Bootstrap”(Efron and Tibshirani, 1994)라는 부트스트랩만을 다룬 책을 내기도 했습니다. 부트스트랩에 대해 더 자세히 알고 싶다면 이 책을 읽어 보길 권합니다. 간단하게 말하면 부트스트랩 방식의 아이디어는 원본 데이터셋에서 중복을 허용하여 샘플링을 반복함으로써 모집단으로부터 새로운 데이터를 생성하는 방법입니다. 반대로 반복적인 홀드아웃 방법은 중복을 허용하지 않는 샘플링입니다. 단계적으로 나누어 보면 부트스트랩 방식은 다음과 같이 작동됩니다.

  1. n 크기 데이터셋이 주어집니다.
  2. 부트스트랩을 회 반복합니다.
    1. 이 데이터셋에서 하나의 샘플을 뽑고 번째 부트스트랩에 할당합니다. 이 과정을 부트스트랩 샘플 크기가 원본 데이터셋 크기인 이 될 때까지 반복합니다. 매번 같은 원본 데이터셋에서 샘플을 뽑습니다. 어떤 샘플은 부트스트랩 샘플에 한 번 이상 포함되었거나 전혀 없을 수 있습니다.
  3. b 개의 부트스트랩 샘플 각각에 모델을 학습시키고 재치환 정확도를 계산합니다.5
  4. b 번의 정확도 추정을 평균내어 모델의 정확도를 구합니다.

ACC_{boot} = \dfrac{1}{b}\overset{b}{\underset{j=1}{\sum}}\;\dfrac{1}{n}\overset{n}{\underset{i=1}{\sum}}(1-L(\hat{y}_i, y_i))

이전에 언급했 듯이 모델이 데이터셋에 있는 노이즈에 과도하게 민감할 수 있기 때문에 재치환 평가는 보통 매우 낙관적인 편향을 만듭니다. 원래 부트스트랩 방식은 주어진 분포를 알 수 없고 추가적인 샘플을 구할 수 없을 때 추정량의 통계적 속성을 결정하기 위해서 사용됩니다. 그래서 이 방법을 분류나 회귀 가설 같은 예측 모델의 평가에 사용하려면 LOOB(Leave-One-Out Bootstrap)같은 약간 다른 방식의 부트스트래핑을 사용합니다. 여기서는 훈련 데이터로 모델을 평가하는 대신 따로 떼어 놓은 샘플을 테스트 세트로 사용합니다. 떼어 놓은 샘플은 아래 그림처럼 모델을 학습할 때 사용하지 않은 고유한 샘플 세트입니다.

bootrap_concept

위에 있는 그림은 10개의 예제 데이터셋(X_1, X_2, … X_{10})으로부터 만든 세개의 랜덤 부트스트랩 샘플과 테스트를 위한 떼어 놓은 샘플을 보여 줍니다. 실제로 브래들리 에프론과 로보트 팁쉬라니는 신뢰할만한 추정을 만들기 위해 50에서 200개의 부트스트랩 샘플 뽑으라고 권장합니다(Efron and Tibshirani, 1993).

한 걸음 뒤로 물러서서, 알려지지 않은 평균 \mu 와 분산 \sigma^2 인 정규 분포 N(\mu, \sigma^2) 에서 추출한 샘플을 가지고 있다고 가정해 보겠습니다. 통계학 기초를 배운지 조금 오래됐을지 모르지만, 기억하는 게 하나 있다면 샘플의 평균 \bar{x} 가 평균 \mu 의 점추정이라는 것입니다.

\bar{x} = \dfrac{1}{n}\overset{n}{\underset{i=1}{\sum}}x_i

분산 \sigma^2 은 다음과 같이 추정 합니다.

VAR = \dfrac{1}{n-1}\overset{n}{\underset{i=1}{\sum}}(x_i-\bar{x})^2

그러므로 표준편차 SD = \sqrt{VAR}로 계산하고 표준오차standard error는 다음과 같이 계산합니다.

SE = \dfrac{SD}{\sqrt{n}}

표준오차를 사용해서 평균의 95% 신뢰구간을 계산할 수 있습니다.

\bar{x} \pm z \times \dfrac{\sigma}{\sqrt{n}}

그러므로

\bar{x} \pm t \times SE

95% 신뢰구간에서 z = 1.96 입니다. 샘플로부터 SD를 추정했기 때문에 샘플 사이즈, 또는 자유도degree of freedom를 반영하기 위해 t 테이블을 참조해서 실제 값을 찾습니다. 예를들어 n=100인 샘플일 경우 t_{95}=1.984 입니다.

비슷하게 부트스트랩 추정에 대한 95% 신뢰구간을 아래와 같이 계산할 수 있습니다.

ACC_{boot}=\dfrac{1}{b}\overset{b}{\underset{i=1}{\sum}}ACC_i

그리고 이를 사용하여 표준오차는 다음과 같이 계산합니다.

SE_{boot} = \sqrt{\dfrac{1}{b-1}\overset{b}{\underset{i=1}{\sum}}(ACC_i-ACC_{boot})^2}

여기에서 ACC_ii 번째 부트스트랩 반복에서 계산한 통계치(ACC의 추정)입니다. ACC_1, ACC_2, ..., ACC_b 값의 (위에서 계산한) 표준 편차는 ACC의 표준오차의 추정(Efron and Tibshirani, 1994, pp. 12-13)입니다.

결국 평균 추정의 신뢰구간을 다음과 같이 계산할 수 있습니다.

ACC_{boot} \pm t \times SE_{boot}

위에서 사용한 방법은 직관적이지만 샘플이 정규분포를 따르지 않을 경우는 어떨까요? 더 안정적이고 직관적인 계산 방법은 브래들리 에프론이 제안한 백분위수percentile 방법입니다. 여기서 우리는 다음과 같이 상한과 하한의 신뢰구간을 선택합니다.

  • ACC_{lower} = ACC_{boot} 분포에서 \alpha_1 백분위수
  • ACC_{upper} = ACC_{boot} 분포에서 \alpha_2 백분위수

\alpha_1 = \alpha 이고 \alpha_2=1-\alpha\alpha100 \times (1-2 \times \alpha) 신뢰구간을 계산하기 위한 신뢰의 정도입니다. 예를들어 95% 신뢰구간을 계산하려면 \alpha = 0.025 를 선택하여 b 부트스트랩 샘플 분포의 상한, 하한 신뢰 경계로서 2.5, 97.5 백분위수를 얻습니다.

실제적으로 데이터가 거의 정규분포를 따른다면 표준 신뢰구간과 퍼센타일 방식은 아래 그림처럼 나타낼 수 있습니다.

bootstrap-histo

왼쪽 그림에서 Iris 데이터셋에 3-최근접 이웃 모델을 평가하기 위해 LOOB(Leave-One-Out Bootstrap) 부트스트랩 기법을 사용했고, 오른쪽 그래프는 앞서 본 것과 같은 소프트맥스 알고리즘을 사용해 같은 평가 방법을 MNIST에 적용한 결과입니다.

1983년에 브래들리 에프런은 위에서 언급한 부트스트랩 크로스 밸리데이션 방식의 비관적 편향을 위한 개선 방법으로 .632 추정을 만들었습니다(Efron 1983). 전통적인 부트스트랩 방식의 비관적 편향은 부트스트랩 샘플이 원본 데이터셋에 있는 고유한 샘플 중 약 63.2% 만 담고 있다는 사실로 설명됩니다. 예를 들어 n 크기 데이터셋으로부터 추출한 샘플이 부트스트랩 샘플에 포함되지 않은 확율은 다음과 같이 계산 합니다.6

P(not chosen)=\left (1-\dfrac{1}{n} \right )^n

n \to \infty이면 \dfrac{1}{e} \approx 0.368에 가까워 집니다.7

반대로 어떤 샘플이 선택될 확율은 다음과 같습니다.

P(chosen)=1-\left (1-\dfrac{1}{n}\right )^n \approx 0.632

어느정도 큰 데이터 셋이라면 부트스트랩 훈련 세트로 0.632 \times n 개의 고유한 샘플이 선택됩니다. 반대로 각 반복에서 0.368 \times n 개의 샘플이 테스트 용으로 남겨집니다.

bootstrap_prob

중복된 샘플링으로 인한 편향을 설명하기 위해 브래들리 에프런은 위에서 언급한 .632 추정을 다음과 같은 공식으로 제한했습니다.

ACC_{boot}=\dfrac{1}{b}\overset{b}{\underset{i=1}{\sum}}(0.632 \cdot ACC_{h,i} + 0.368 \cdot ACC_{r,i})

ACC_{r,j}는 재치환 정확도이고 ACC_{h,i}는 테스트 샘플에 대한 정확도입니다.

.632 부트스트랩이 이 추정치에 대한 비관적 편향을 설명하고 있지만 오버피팅 경향이 있는 모델에서 낙관적 편향이 일어날 수 있으므로, 브래들리 에프런과 로보트 팁쉬라니는 .632 + 부트스트랩 방식(Efron and Tibshirani, 1997)을 제한했습니다. 고정된 가중치 w=0.632 대신 다음과 같습니다.

ACC_{boot}=\dfrac{1}{b}\overset{b}{\underset{i=1}{\sum}}(w ACC_{h,i} + (1-w) ACC_{r,i})

가중치 w는 다음과 같이 계산합니다.

w = \dfrac{0.632}{1-0.368 \times R}

R은 상대적인 오버피팅 비율입니다.

R = \dfrac{(-1) \times (ACC_{h,i}-ACC_{r,i})}{r-(1-ACC_{h,i})}

(위 ACC_{boot} 공식에 w 값이 들어 있으므로 ACC_{h,i}ACC_{r,i}는 각각 i 번째 부트스트랩의 재치환 정확도와 테스트 정확도의 추정입니다.)

더 나아가 R을 계산하기 위해 무작위성의 비율no information rate \gamma 를 지정해야 합니다. 예를들어 샘플 x_{i'} 와 타겟 클래스 y_i 사이의 모든 가능한 조합을 포함한 데이터셋으로 모델을 학습시켜 \gamma 를 계산할 수 있습니다. 여기서는 관측 데이터와 클래스 레이블이 독립적인 것이라 생각합니다:

\gamma=\dfrac{1}{n^2}\overset{n}{\underset{i=1}{\sum}}\overset{n}{\underset{i'=1}{\sum}}L(y_i,f(x_{i'}))

다른 식으로는 \gamma 를 다음처럼 추정할 수 있 습니다:

\gamma=\overset{K}{\underset{k=1}{\sum}}p_k(1-q_k)

p_kk 클래스의 샘플이 데이터셋에서 관측될 확율이고 q_k는 분류기가 데이터셋에서 예측한 k 클래스 샘플의 비율입니다.

다음에

이 글에서 머신러닝 모델을 평가하는데 편향과 분산에 대해 조금 더 자세히 논의를 진행했습니다. 모델의 안정성에 대해 깊은 통찰을 주는 반복적인 홀드아웃 방법에 대해 이야기 했습니다. 그리고 통계학에서 빌려온 기법인 부트스트랩 방식을 살펴 보았습니다. 성능 추정의 불확실성을 추정하기 위해 부트스트랩 방식의 여러가지 특성을 살펴 보았습니다. 1장과 2장에서 모델 평가의 기본을 다루고 나서 3장과 4장에서 하이퍼파라미터 튜닝과 모델 선택에 관한 더 흥미로운 것들을 다루어 보겠습니다.

참고문헌

  • Efron, Bradley. 1979. “Bootstrap Methods: Another Look at the Jackknife.” The Annals of Statistics 7 (1). Institute of Mathematical Statistics: 1–26. doi:10.1214/aos/1176344552.
  • Efron, Bradley. 1981. “Nonparametric Standard Errors and Confidence Intervals.” Canadian Journal of Statistics 9 (2). Wiley‐Blackwell: 139–58. doi:10.2307/3314608.
  • Efron, Bradley. 1983. “Estimating the Error Rate of a Prediction Rule: Improvement on Cross-Validation.” Journal of the American Statistical Association 78 (382): 316. doi:10.2307/2288636.
  • Efron, Bradley, and Robert Tibshirani. 1994. An Introduction to the Bootstrap. Chapman & Hall.
  • Efron, Bradley, and Robert Tibshirani. 1997. “Improvements on Cross-Validation: The .632+ Bootstrap Method.” Journal of the American Statistical Association 92 (438): 548. doi:10.2307/2965703.

(역주)

  1. 소프트맥스 분류기softmax classifier는 다항 로지스틱 회귀multinomial logistic regression을 부르는 다른 말입니다. 즉 타깃 클래스가 두개 이상인 분류 문제를 말합니다.
  2. 서브샘플링subsampling리샘플링resampling의 한 종류로 중복을 허용하지 않는 샘플링 기법입니다.
  3. 즉 훈련 세트의 크기가 90/10 보다 줄어들어 일반화가 잘 안되므로 테스트 세트의 성능이 줄어듭니다.
  4. 경험적 분포empirical distribution은 리샘플링을 통해 얻은 분포를 말합니다.
  5. 훈련에 사용한 데이터를 이용해 성능을 측정한다는 의미입니다.
  6. n 개의 데이터셋에서 하나가 선택될 확률은 \dfrac{1}{n} 이므로 선택되지 않을 확률은 1-\dfrac{1}{n} 이 됩니다. 부트스트랩 샘플링은 원본 데이터셋의 크기와 같은 n 개를 뽑으므로 n 번의 샘플링에도 포함되지 않을 확률은 \left(1-\dfrac{1}{n}\right)^n 입니다.
  7. \underset{n \to \infty}{\lim} \left(1+\dfrac{x}{n}\right)^n=e^x 이므로 \underset{n \to \infty}{\lim} \left(1+\dfrac{-1}{n}\right)^n=e^{-1} \approx 0.368 이 됩니다.

머신 러닝의 모델 평가와 모델 선택, 알고리즘 선택 – 2장. 부트스트래핑과 불확실성”에 대한 1개의 생각

  1. 핑백: 머신 러닝의 모델 평가와 모델 선택, 알고리즘 선택 – 2장. 부트스트래핑과 불확실성 – Goooodday's Blog

답글 남기기

아래 항목을 채우거나 오른쪽 아이콘 중 하나를 클릭하여 로그 인 하세요:

WordPress.com 로고

WordPress.com의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Twitter 사진

Twitter의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Facebook 사진

Facebook의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

Google+ photo

Google+의 계정을 사용하여 댓글을 남깁니다. 로그아웃 / 변경 )

%s에 연결하는 중