머신런닝을 이용한 분류기를 만들때 가장 많이 나오는 유명한 개념중에 하나이다.
분류기를 만들어서 테스트 하는 과정을 거치며 많은 에러들이 나오게 된다.
이런 에러들을 MSE로 분석해보면
Learning Error = bias + variance
위와 같은 식으로 간단하게 정리된다.
Bias는 학습된 분류기와 실제 값 사이의 제곱에러이다. 정확도하고 약간 비슷한 개념이다. 이 bias는 linear한 분류기보다 nonlinear한 분류기가 낮은 값으로 나온다. 왜냐면 linear분류기는 하나의 클래스 바운더리를 가지기 때문이다. 물론 이것은 데이터가 linear하게 분류되지 않을 경우에 영향을 미치지만 nonlinear분류기가 linear분류기의 기능을 포함하고 있기 때문에 대부분의 경우에서 nonlinear 분류기가 낮은 bias를 보여준다.
Variance는 학습된 분류기들이 각기 다른 학습셋(문제 공간은 같은)에 성능의 변화정도가 급하게 변하느냐 아니면 안정적으로 변하느냐를 나타내는 척도다.
이 수치는 nonlinear한 분류기가 linear 분류기보다 더 높은 값을 가지게 된다. 높은 variance를 가는지 분류기의 경우 overfitting의 문제가 생길 가능성이 많고 데이터의 에러에 분류기의 에러률이 좌지우지되기 때문에 학습데이터에 더 많은 주의를 기울여야 한다.
여기서 우리가 어떤 분류기를 선택해야 되는지 정리가 필요한데,
첫번째로는 우리가 문제공간(뭘 하고자 하는지)에 대한 충분한 고민과 이해가 있어야 한다는 것이다. 이것을 기반으로 bias가 낮은 분류기에 집중을 할것인지, 아니면 variance가 낮은 분류기에 집중을 할것인지 판단하는 근거가 된다.
두번째로는 우리가 분류기를 이용해서 만들 무언가가 어떤 성격을 가진 프로덕트인지 인식해야 한다는 것이다. 예를 들어 물품 추천을 하는 recommendation 엔진을 만든다고 한다면 특정 몇몇의 유저 입력 데이터에 따라 각기 제 각각의 성능의 분류기를 만들어내어 성능의 편차가 심해져 버리는 것보다 많은 유저에게 적당한 성능을 보장하는게 더 나을지도 모른다. 이럴때는 variance가 낮은 분류기를 사용하기를 권장하는 것이다.
재밋는 사실은 대부분 가장 잘 알려진 분류 알고리즘이나 분류기를 이용한 프로덕트에 linear 분류기가 주로 쓰인다는 사실이다.
연구결과 고차원으로 올라갈 수록 선형적인 성질에도 불구하고 linear 분류기가 꽤 괜찮은 성능을 보여준다고 한다.
생각으로는 이런 알고리즘도 어떤 성격의 프로덕트를 유도하느냐에 따라서 다르게 선택될 수 있으니 연구와 함께 프로덕트에 대한 고민도 병행되어야 함은 필수일듯 하다.
특히나 이런 둘중 하나를 선택해야 하는 tradeoff 성격을 가지는 경우에는 더욱 그러하다.
Bias-Variance Tradeoff by from __future__ import dream is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.