[〚머신러닝〛] - [머신러닝] 의사결정나무(Decision tree) -1 : 장단점, 활용분야, 구조, 분석절차, 과적합
< 앙상블(Ensemble) >
의사결정나무(Decision tree)는 분석과정과 결과를 직관적으로 이해할 수 있기 때문에 설명력이 필요한 경우에 많이 쓰인다. 하지만 과적합 문제가 발생하여 정확도가 떨어질 위험이 크다. 때문에 의사결정나무의 이러한 단점을 보완하기 위해 '앙상블(Ensemble)'기법을 사용한다. 앙상블 기법에는 투표(Majority Voting), 배깅(Bagging), 부스팅(Boosting)이 있다.
📌 투표(Majority Voting)
투표(voting) 방법은 동일한 훈련 세트(train set)로 여러가지 분류기를 만든다. 그 후 모델링에 참여하지 않은 새로운 데이터가 들어왔을 때 그 데이터에 대한 각 모델들의 예측값을 출력하여 예측된 횟수가 더 많은 분류 결과로 최종 모델을 만드는 기법이다. 예를 들어, 위의 그림을 보면 하나의 훈련 세트로 로지스틱 회귀, SVM, 의사결정나무, KNN 모델을 만들었다. 그 후 새로운 데이터들 각 모델에 넣어 출력된 예측값을 보면 로지스틱회귀, 의사결정나무, KNN은 '1'로 데이터를 분류(예측)했고, SVM은 '0'으로 예측했다. 따라서 해당 데이터를 '1'로 예측한 횟수가 더 많기 때문에 이러한 경우 '1'로 예측하도록 최종 모델을 만드는 것이 투표(voting) 기법이다.
📌 배깅(Bagging) & 랜덤 포레스트(Random Forest)
배깅(Bagging)은 하나의 데이터 세트(data set)를 가지고 여러 개의 훈련 세트(train set)를 만든다. 이 훈련 세트를 만들 때 부트스트랩을 사용하여 샘플을 추출하기 때문에 복원 추출을 허용한다. 즉, 하나의 데이터 세트에서 몇 개의 데이터들을 추출하여 1번 훈련 세트를 만들고 이때 사용된 데이터들을 다시 본래의 데이터 세트에 넣고 다시 몇 개의 데이터를 뽑아 2번 훈련 세트를 만드는 것이다. 그렇게 여러 개의 훈련 세트들을 만들고 각 훈련 세트로 모델을 만들게 된다. 이때 모델은 위의 투표 기법과 마찬가지로 여러 가지 분류 모델들을 만들 수 있는데, 이때 의사결정나무에만 초점을 맞춰 모델을 만든 것을 '랜덤 포레스트'라고 한다. 즉 랜덤 포레스트는 배깅의 하위 개념이라고 생각하면 된다. 위의 그림처럼 여러 개의 의사결정나무 모델을 만든 뒤, 각 모델들에서 최적의 브런치들만 뽑아서 하나의 새로운 나무를 만드는 원리가 랜덤 포레스트이다.
📌 부스팅(Boosting)
부스팅(Boosting) 기법은 전체 훈련 세트에서 랜덤 하게 샘플을 추출하고 잘못 분류된 데이터에 가중치를 적용하는 방법이다. 즉 추출된 데이터로 하나의 트리를 만들고, 이때의 오차를 계산하여 그 오차가 적어지도록 가중치(중요도를 더 주어 개선한다라고 생각하면 된다.)를 주어 다음 모델을 만들 때 그것을 반영하는 방법이다. 이렇게 이전에 만들었던 트리(tree)의 오차를 개선하여 다음 모델을 만들기 때문에 투표, 배깅 방법보다는 성능이 비교적 좋다는 특징이 있다.