앙상블러닝
앙상블이라는 단어는 머신러닝을 접하면서도 종종 들어본 경우가 많았을 것이다.
과연 앙상블 러닝은 어떤 기법일까?
기존의 문제점 (과적합)
앞에서 머신러닝을 통해서 예측을 하는 경우에,
과적합(Overfitting)이라는 문제가 항상 존재하고 있다는 것을 언급했었다.
과적합에 대한 원인은, 모델이 데이터를 기반으로 학습을 수행하는 과정에서 너무 세부적인 부분까지 학습데이터에 초점을 맞춘 나머지, 처음 보는 테스트 데이터는 제대로 예측을 못한다는 것이었다.
그렇다고, 너무 큰 단위로 학습을 하고 세부적인 부분을 무시해버린다면, 전체적인 ML 알고리즘 모델의 성능이
떨어지는 문제도 동시에 존재했다.
과적합에 대한 해결책 => 앙상블 러닝
따라서, 사람들은 이 문제를 해결하려고 시도하던 도중,
여러개의 학습 모델을 세부적인 부분까지 들어가지 않고 큰 단위로 학습하여 모델을 합하게 되면 두 문제점을 어느정도 동시에 해결할 수 있다는 것을 발견했다. 이 기법이 "앙상블 러닝"이다.
실제로, 빅데이터 예측에서 현재 가장 많이 사용되고 있는 기법이다.
그리고, 앙상블 러닝의 기본 알고리즘 즉, 위에서 말한 여러개의 학습 모델은 통상적으로 결정트리로 사용하는 경우가 많다. (앞으로 이런 기본 알고리즘을 기반 학습기 혹은 약한 학습기라고 부른다.)
(앙상블 러닝의 종류 및 더 세부적인 내용들에 대해서는 이후 포스팅에서 작성할 계획이다. )
결정 트리
앙상블러닝에서 기반 학습기로 사용되는 결정 트리는 직관적으로 이해하기 쉬운 ML알고리즘이다.
데이터를 스무고개를 통해서 해당 레이블로 분류를 한다고 생각하면 이해하기 편하다.
위의 이미지를 기준으로 결정트리에 대해서 설명을 하자면,
'할 일이 있는가?', '날씨는?', '친구가 바쁜가?'가 들어있는 노드는 규칙노드라고 하고,
해당 노드에 있는 데이터들을 분류하는 기준을 정한다.
'집에 있는다.', '해수욕', '달리기', '집에 있는다.', '영화 관람'은 각 레이블에 대응이 된다고 볼 수 있으며,
해당 노드들을 리프노드라고 부른다.
이 결정 트리 이미지에 대해서 추가적으로 설명할 것들은 밑에 해당 개념들을 설명하면서 설명할 것이다.
결정 트리의 원리와 균일도
데이터를 분할할 수 있는 여러기준들 중 데이터를 분류하였을 때, 균일도가 가장 높은 두개의 노드로 분리를 하는 것이
가장 잘 분할한 것이라고 볼 수 있다.
여기에서 균일도란, 분할된 그룹 안에 여러 종류의 레이블을 가진 데이터들이 섞여있지 않고, 한 종류의 레이블 데이터가 많을 수록 균일도가 크다고 한다.
만약 균일도가 낮게 분할을 하게 된다면 해당 노드를 다시 분할해야 한다. 노드를 분할하는 것은 다시 기준을 잡아야 한다는 의미와 동일하므로, 추가적인 정보가 더 필요하다는 것을 알 수 있다. 이렇게 된다면 해당 모델은 다른 모델들보다 추가적인 시간과 비용이 들 것이다.
이런 균일도를 측정하는 기준으로는 엔트로피 정보 이득과 지니계수가 있다.
- 엔트로피 정보 이득 :
엔트로피는 주어진 데이터 집합의 "혼잡도"를 의미한다. 따라서 여러 종류의 데이터가 섞여있으면, 혼잡하므로, 엔트로피는 높다고 볼 수 있고, 동일한 종류의 데이터만 있다면, 엔트로피는 낮다고 볼 수 있다.
이를 통해서 엔트로피 정보 이득은 혼잡도가 낮을 수록 정보에 대한 이득을 볼 수 있기 때문에,
해당 값은 (1 - 엔트로피 지수)이다.
- 지니 계수 :
경제학에서 불평등 지수를 나타낼 떄 사용하는 계수로 0이 가장 평등하고 1로 갈수록 불평등하다.
사이킷런 패키지에서 해당 계수들을 직접 계산하지 않고 코드를 통해 사용할 수 있기 때문에 수치가 어떤 것을 의미하는지 아는 것으로 충분하다.
위의 이미지를 이용하여 균일도에 대해서 설명을 하자면,
가장 첫번째로 분류하는 노드인 "할 일이 있는가?"로 분류된 '집에 있는다'와 '날씨는?'을 보면,
'집에 있는다'노드에는 레이블 값이 '집에 있는다' 한 종류밖에 없어 균일도가 매우 높음을 알 수 있다.
하지만, 반대편 노드 '날씨는?'에는 '해수욕','달리기', '집에 있는다', '영화관람'의 여러가지 레이블 값이 포함되어 있다. 따라서 '날씨는?'에 있는 데이터는 균일도가 낮다.
또한, 이렇게 여러가지 레이블 값들을 분류하기 위해서는 새로운 기준으로 삼을 수 있는 정보가 추가적으로 필요하다. 이런 의미에서 균일도가 낮다면, 추가적인 정보가 필요하고, 균일도가 높을수록 적은 양의 정보로 분류를 수행할 수 있어, '정보 이득'이라는 용어가 나오는 것이다.
결정 트리 모델의 특징 :
장점 :
- 이해하기 쉽고 직관적이다.
ML알고리즘을 찾아보면 우리가 이해하기 어려운 수식, 통계학적, 과학적 지식을 가지고 만들어진 모델들이 아주 많다.
이런 모델 자체에 대한 이해는 상당히 어렵다. 하지만, 결정트리는 어떤 기준으로 해당 노드를 나누었는지를 안다면 아주 쉽게 이해할 수 있다.
위의 이미지를 보면, 대부분의 사람이 해당 결정트리가 어떤 기준을 잡고, 어떤 과정을 거쳐서 분류가 진행이 되었는지를 명확하게 알 수 있다.
이런 쉬운 구조로 인해서 파이썬에서는 Graphviz라는 결정트리를 시각화해주는 패키지도 존재한다.
- 전처리 작업
모델은 해당 데이터들의 다수의 피처들을 종합하여 수치적으로 결정하는 것이 아니라, 하나의 피처의 기준을 잡고
분류하는 경우 중 가장 균일도가 높게 나온 것을 기준으로 선택하여 나누는 것이기 때문에,
무조건적은 아니지만, 대부분의 경우에 피처 스케일링과 정규화 등의 전처리 작업이 필요없다.
단점 :
- 과적합 :
과적합은 모든 ML 알고리즘 모델의 문제점이긴 하나, 특히 결정트리에서 단점으로 꼽힌다.
그 이유는 여러 하이퍼 파라미터들을 통해서 과적합 제어를 해주지 않는다면, 모델은 모든 데이터가 맞는 레이블 값을 갖는 결과가 나올때까지 노드를 분할할 것이며, 너무 세부적인 부분들까지 분할하여 새로운 테스트 데이터에서는 과적합이 일어나 성능이 떨어지는 경우가 많다.
따라서 앞으로 배울 결정 트리의 하이퍼 파라미터는 대부분이 결정 트리 모델의 과적합을 제어하기 위해서
설정을 하는 파라미터이다.
'기계학습 > Machine Learning' 카테고리의 다른 글
[파이썬 머신러닝 완벽가이드] : 사이킷 런 앙상블 러닝 ( Voting / Bagging ) (0) | 2020.08.19 |
---|---|
[파이썬 머신러닝 완벽가이드] : 사이킷 런 결정트리 하이퍼 파라미터, 시각화Graphviz (0) | 2020.08.12 |
[파이썬 머신러닝 완벽가이드] : 사이킷 런 평가지표 (F1 Score, ROC&AUC) (0) | 2020.08.07 |
[파이썬 머신러닝 완벽가이드] : 사이킷 런 평가지표 (정밀도, 재현율) (0) | 2020.08.06 |
[파이썬 머신러닝 완벽가이드] : 사이킷 런 평가지표 (정확도 , 오차행렬) (0) | 2020.08.06 |
최근댓글