한 A(algorithm)이 주어졌을 때 expected test error를 구할 수 있다.
그 expected test error을 decomposition
expected test error(given A)
= Variance + Bias + Noise, 기본적으로 셋다 낮은게 좋겠지만...
A:algorithm
D:training set
Variance는
Given A,
(Over D 예측값 평균)과
(Specific D 예측값) 사이의 분산을 가리킨다.(over D)
High variance
->D1에 대한 A의 예측값이 D2에 대한 A의 예측값과 큰 차이가 잦음
->학습데이터를 달리하면 A의 예측이 크게 달라짐
Bias는
Given A,
(Over D 예측값 평균)과
(x의 label 평균) 사이의 분산을 가리킨다.(over x)
High bias
->D를 어케 잡든 A의 예측값은 x의 label과 큰 차이가 잦음
->즉 학습데이터 탓은 아니고 A 자체 내재된 문제
->이를, A가 특정 modeling(e.g. linear classifier)에 biased됐다고 표현함
Noise는 D, A와는 상관없이
x의 feature representation(인간이 지닌 감각으로 나타내봤자, feature를 모두 사용하였는지, 측정에서의 오류는 없는 지 등 오류가 있기마련)과 x의 data distrbituion 사이의 오류
x의 feature representation을 최선으로 했는 상황에선 줄일 수가 없음
->즉 D나 A를 달리한다해서 줄어들 지 않을 error
->irreducible error
요약:
-Given A(an algorithm), expected test error는 Variance + Bias + Noise로 나뉜다.
-Variance는 학습데이터가 달라짐에 따라 학습한 algorithm이 달라지는 정도를 나타낸다. 즉, 크면 학습데이터 탓
-Bias는 A의 역량에 달렸다. 즉, 크면 알고리즘 탓
-Noise는 irreducible error, 즉, 크면 알고리즘도 학습데이터 탓도 아님
-따라서, 알고리즘이 주어지면 학습 데이터를 어케 하냐에 따라, Bias/Variance tradeoff가 존재
해결법:
High variance을 낮추기!
-A의 complexity를 낮추기
-학습데이터 늘리기
-bagging(bootstrap aggregating, replacement하면서 sampling) 학습 데이터를 다양하게 조합
High bias을 낮추기!
-A의 complexity를 높이기(즉 더 복잡한 모델 사용)
-A의 features를 늘리기
-boosting, 이전 모델의 오류를 고려하여 계속 모델 변화
참고자료:
www.cs.cornell.edu/courses/cs4780/2018fa/lectures/lecturenote12.html
Lecture 12: Bias Variance Tradeoff
Lecture 12: Bias-Variance Tradeoff Video II As usual, we are given a dataset $D = \{(\mathbf{x}_1, y_1), \dots, (\mathbf{x}_n,y_n)\}$, drawn i.i.d. from some distribution $P(X,Y)$. Throughout this lecture we assume a regression setting, i.e. $y \in \mathbb
www.cs.cornell.edu
www.slideshare.net/freepsw/boosting-bagging-vs-boosting/
boosting 기법 이해 (bagging vs boosting)
xgboost를 이해하기 위해서 찾아보다가 내가 궁금한 내용을 따로 정리하였으나, 역시 구체적인 수식은 아직 모르겠다. 요즘 Kaggle에서 유명한 Xgboost가 뭘까? Ensemble중 하나인 Boosting기법? Ensemble 유
www.slideshare.net
'ML' 카테고리의 다른 글
[Tensorflow][Keras]Memory leak from Multiple call fit (0) | 2020.11.20 |
---|---|
(미완)[MachineLearning] SVM(Support Vector Machine)이란 (0) | 2020.11.14 |
[MachineLearning] Optimizer에 대해서 (0) | 2020.11.05 |
[MachineLearning] Batch Normalization (0) | 2020.11.05 |
[Numpy]ndarray가 (built-in)list보다 빠른 이유 (0) | 2020.11.02 |