Skip to content

Latest commit

 

History

History
25 lines (13 loc) · 5.04 KB

20_Bias_and_Variance_The_two_big_sources_of_error.md

File metadata and controls

25 lines (13 loc) · 5.04 KB

20 Bias and Variance: The two big sources of error

학습용, 개발용, 테스트용 데이터셋 모두가 동일한 분포로부터 수집되어 있다고 가정해 보자. 그렇다면, 학습 데이터셋만이 성능을 향상시킬 수 있기 때문에, 이를 항상 더 많이 구하려고 노력해야만 할 것이다. 그렇지 않은가?

더 많은 데이터를 수집하는것은 해롭지 않지만, 불행히도 기대한 만큼의 많은 도움을 항상 주는 것 또한 아닐 수 있다. 더 많은 데이터를 얻는것은 그만큼 시간이 많이 걸리는 일 일 수도 있다. 그렇다면, 언제 더 많은 데이터를 수집해야하는지, 언제 그러지 말아야 하는지를 어떻게 결정할 수 있을까?

머신러닝에서 발생하는 에러는 주로 두가지 원인에 의해서 발생한다. 편향분산 이다. 이 둘을 이해하는 것은 더 많은 데이터를 추가 하는 것과, 그 외의 성능 향상을 위한 전략을 수립는 것에 시간을 사용하는 것이 좋은 일인지 결정하는데 도움을 줄 것이다.

5% 정도의 에러율의 성능을 보이는 고양이 분류 알고리즘을 만들고 싶다고 가정해보자. 현재의 성능은 학습 데이터셋에 대해서 15%의 에러율을 보이고 있고, 개발 데이터셋에 대한 에러율은 16% 정도이다. 이 상황에서는 더 많은 학습용 데이터셋을 추가하는것이 별로 도움이 안 될 것이다. 다른 곳에서 성능 향상방법을 모색 해 봐야만 한다. 더 많은 데이터를 추가하는 것은 알고리즘이 그 학습 데이터에 대해서 잘 동작하는 것을 더 힘들게 만들 뿐이다 (왜 그런지는 나중의 챕터에서 설명).

학습 데이터셋 에 대해서 현재의 에러율이 15% (또는 85%의 정확도)인데, 목표로 하는 에러율은 5% (95%의 정확도) 라면, 목표달성을 위한 처음으로 시도해야 할 문제는 학습 데이터에 대한 알고리즘의 성능을 어떻게 향상시킬 것인가 이다. 일반적으로 개발/테스트 데이터셋에 대한 알고리즘의 성능은 학습 데이터셋에 대한것 보다 좋지 않다. 그렇기 때문에, 알고리즘이 이미 학습한 데이터에 대해서 85%의 정확도를 얻었다면, (아직 학습 데이터로 사용되지 않은) 미지의 데이터에 대해서 알고리즘이 95%의 정확도를 얻는다는 것은 어림 없는 이야기이다.

윗 문단에서 언급된 알고리즘이 개발 데이터셋 에 대하여 16%의 에러율 (84%의 정확도)을 보여준다고 가정해 보자. 16%라는 에러율을 아래처럼 두가지 부분으로 쪼개어 볼 수 있다:

  • 첫째로, 알고리즘의 학습 데이터셋 에 대한 에러율로, 사용된 예제에서 이는 15%이다. 이것은 비 공식적으로, 알고리즘의 편향 이라고 생각할 수 있다.

  • 둘째로, 알고리즘의 개발 데이터셋 에 대한 결과가 학습용 데이터셋 과 비교하여 얼마나 더 나쁜 결과를 보여주는가로, 사용된 예제에서, 1%만큼의 더 나쁜 성능을 보여주었다. 이것은 비 공식적으로 알고리즘의 분산 이라고 생각할 수 있다.

통계학 분야에서는 편향분산 에 대하여 더 공식적인 정의를 내리고 있다 (그다지 우리가 걱정할 내용은 아니다). 간단하게 말하면, 편향 은 매우 큰 학습용 데이터셋을 가지고 있을때, 개발 데이터셋에 대한 알고리즘의 에러율이다. 분산 은 학습용 데이터셋에 비교해서 얼마나 테스트 데이터셋에 대한 성능이 나쁜가 이다. 에러를 측정하기 위한 지표가 MSE 라면, 이 두가지를 표현하는 공식을 적을 수 있으며 전체 에러율 = 편향 + 분산 이라는 것을 증명할 수 있다. 하지만, 우리의 목적은 ML 문제에 대하여 어떻게 앞으로 나아갈 것인가를 결정하기 위한 것으로, 편향분산 에 대한 좀 더 비 공식적인 정의 만으로도 충분 할 것이다.

학습 알고리즘에 몇가지 변화를 줘서 편향 을 개선하면, 이는 학습 데이터셋에 대한 성능 향상 이라는 결과를 가져오게 된다. 분산 의 경우는 학습 데이터셋과 개발/테스트 데이터셋 사이에서 더 좋은 일반화라는 결과를 보여주게 된다. 더 뛰어난 변화를 주기 위한 방법을 선택하기 위해서, 에러에 대한 이 두가지 요소를 이해하는 것은 아주 유용하다고 할 수 있겠다.

시스템의 몇 주요한 설계적 변화를 주어 편향분산 모두를 동시에 줄이는 몇가지 방법도 있다. 하지만, 이 방법들은 확인하고 구현하기가 훨씬 더 어려운 경향이 있다.

편향분산 에 대한 좋은 직관력을 키우게 되면, 알고리즘에 어떤 효과적인 변화를 선택해야 하는지에 대한 도움을 얻게 될 것이다.