안녕하십니까 다제입니다.
오늘은 앙상블에 대해서 이야기를 나누어 볼까합니다.
해당 포스팅은 고려대학교 강필성 교수님의 수업자료를 참고하고
제가 이해한 내용을 바탕으로 포스팅을 진행하였음을 사전 안내드립니다.
언제나 그랬듯 코딩의 발전은 나누고 공유하고 응용하고 토론하는 과정속에서
빠른 속도로 성장했다고 생각합니다.
이미지 출처 : github.com/pilsung-kang/Business-Analytics-ITS504-
** 목차 **
-. 앙상블의 출연배경
-. 시각화를 통한 분산-편향 이해하기
-. 좋은 앙상블의 조건 & 종류
-. 수학식을 통한 앙상블 이해하기
1. 앙상블의 출연배경
-. 저희는 그동안 선형회귀, 분류, 트리모델 등 다양한 모델을 학습하였습니다.
-. 하지만, 언제나 에러와 분산-편향 트레이트오프에서 벗어나지 못하였습니다.
-. 지금껏 저희가 배운 내용은 편향을 포기하고 분산에 집중하여 일반화가 더욱 잘되도록 노력하였습니다.
-. 그러나, 이제는 그 문제 또한 해결해보고자 합니다.
-. 우리가 알고 있는 앙상블은 단순한 트리보다 조합된 트리가 훨씬 더 성능이 좋다라는 직관적인 이해를 하고 있습니다.
-. 저는 궁금했습니다. 왜 여러개를 쓰면 더 좋은걸까? 컴퓨터 내부에는 무슨 일이 일어나고 있는걸까?
-. 결론부터 말씀을 드리면, 앙상블을 사용하면 분산-편향 관점에서 보면
* 분산이 높고, 편향이 낮은 경우, Boosting 등의 모델을 이용하여 문제를 해결하고
* 분산이 낮고, 편향이 높은경우, Bagging 등의 모델을 이용하여 문제를 해결한다는 사실을 배우게 되었습니다.
* 즉, 그 동안 해결하지 못하였던 분산-편향 트레이트오프를 해결할 수 있는 방법을 배우는 것입니다.
2. 시각화를 통한 분산-편향 이해하기
1) 1column
-. 데이터 분포와 무관하게 내가 그리고 싶은 곳에 가설함수를 linear로 설정함
-. 당연히 데이터 분포와 무관하게 그렸기 때문에 분산과 편향이 매우 높음
2) 2column
-. 1column에서 너무 무관하게 그런거 같아, 이제는 조금 아래로 내려서 가설함수를 linear로 설정함
-. 1column에 비해 편향은 줄었으나, 그래도 분산은 여전히 높다.
3) 3column
-. 이제 3차 다항식으로 가설함수를 설정함
-. 분산과 편향이 모두 줄었으나, 이런 경우 일반화가 안될 가능성이 높음
4) 4column
-. 일반화를 위해 3차 다항식을 1차 다항식으로 변경하면
-. 위 그림처럼 편향은 늘어나지만, 분산은 줄어드는 모습을 그래프로 관찰 가능함
3. 좋은 앙상블의 조건 & 종류
그럼 트리모델을 이용하여 앙상블을 만들면 무조건 좋은 앙상블이 될까요?
정답은 : 아닙니다.
좋은 앙상블이 되기 위해선
1) 일정 수준 이상의 다양성이 있어야합니다.
2) 개별적인 모델도 쓸만한 성능을 내야합니다.
이러한 조건이 갖춰진 상태에서
1) 분산을 감소시키고 싶으면 Bagging, Random Forests
2) 편향을 감소시키고 싶으면 AdaBoost
3) 둘다 감소시키고 싶으면 믹스하여 사용하면 됩니다.
이 외에도 많은 종류의 앙상블이 있으며, 차차 좋은 앙상블이 되기 위한
충족조건을 어떻게 확인할 수 있는지도 함께 포스팅 하겠습니다.
4. 수학식을 통한 앙상블 이해하기
훌륭한 수학자분들께서 단일모델보다 앙상블 모델이
수학적으로 더 좋다는 증명을 해놓으셨습니다.
저희는 간단한 이 수식을 따라가 보자 합니다.
1) 우리는 가설함수를 아래와 같이 정의할 수 있습니다.
2) 저희는 에러에 대해서 아래와 같이 식을 변형 할 수 있지요?
-. f(x)를 오른쪽에서 왼쪽으로 넘깁니다.
-. MSE를 구하기 위해서 제곱을 해주는 것을 생각하시면 됩니다.
3) 그렇다면 일반적인 에러의 평균은 2)을 1/M 해주면 되겠네요
4) 그렇다면 앙상블에서 에러의 평균은 어떻게 되는지만 비교해서 값이 작다면 성능이 좋다고 생각할 수 있겠네요
-. 이 수식이 잘 이해가 안되실 수 있습니다.
-. 저도 골똘히 고민하였습니다.
-. 이 수식은 각각의 앙상블의 개별모양의 출력의 평균입니다.
-. 이 출력값과 실제값과 비교를 해서 에러를 구해야하기 때문에 f(x)와 빼주는 것입니다.
-. 그렇다면 1/M을 앞으로 빼주기 위해 f(x)에 1/M * M을 곱해줍니다. -> 1/M * M * f(x)
-. 1/M이 앞으로 나오게 되고 나머지들이 묶이게 되는거죠
-. 진짜~ 이해가 안되시는 분들은 m=1, m=2, m=3일때 라고 가정하고 수식을 풀어보시면 이해가 되십니다.
이렇게 구해진 에러들의 평균을 보면
앙상블 모델에 1/M이 더 곱해져있는 모습을 보실 수 있습니다.
즉, 1/M 배 만큼 작다는 것을 의미합니다.
에러가 작다는 것은 성능이 좋다는 반증이 되므로 증명이 완료되었습니다.
(단, 위 수식은 개별적인 모형이 모두 독립임을 가정하여야합니다.)
앞으로 배울 앙상블 모델이 더욱 기대가 됩니다.
오늘도 글을 읽어주셔서 너무 감사드립니다.
'Code > 머신러닝(ML)' 카테고리의 다른 글
[Ensseble] RandomForest 이해하기 (0) | 2021.02.20 |
---|---|
[Ensseble] Bagging 이해하기 (0) | 2021.02.19 |
로지스틱 회귀(feat. Logistic regression) (0) | 2021.02.13 |
[DataScience] Ridge & Rasso regression (feat. L1, L2 Regularization) (4) | 2021.02.13 |
[EDA] 무작정 따라하는 EDA3 (0) | 2021.02.07 |