키워드
- 랜덤포레스트 모델
- 순서형인코딩(Ordinal encoding)
- 범주형 변수의 인코딩 방법이 트리모델과 선형회귀 모델에 주는 영향을 이해
앙상블 분류기 (ensemble classifier)
- 주어진 학습 데이터 집합에 대해서 여러 개의 서로 다른 분류기를 만들고, 이들 분류기의판정 결과를 투표 방식(voting method)이나 가중치 투표 방식(weighted voting method)으로 결합(모델의 평균화)
- 부트스트랩(bootstrap)
- 주어진 학습 데이터 집합에서 복원추출(resampling withreplacement)하여 다수의 학습 데이터 집합을 만들어내는 기법
- 배깅(bagging, bootstrap aggregating)
- 부트스트랩을 통해 여러 개의 학습 데이터 집합을 만들고, 각 학습 데이터 집합별로 분류기를 만들어, 이들이 투표나 가중치 투표를 하여 최종 판정을 하는 기법
- 부스팅(boosting)
- k개의 분류기를 순차적으로 만들어 가는 앙상블 분류기 생성 방법분류 정확도에 따라 학습 데이터에 가중치를 변경해가면서 분류기 생성
- 랜덤 포리스트(random forest) 알고리즘
랜덤포레스트의 과적합 해소 방법 : 랜덤성
- 건강의 위험도를 예측하기 위해서는 많은 요소를 고려해야 합니다. 성별, 키, 몸무게, 지역, 운동량, 흡연유무, 음주 여부, 혈당, 근육량, 기초 대사량 등등등… 수많은 요소가 필요할 것입니다.
- 수많은 요소(Feature)를 기반으로
건강의 위험도(Label)
를 예측한다면 분명 오버피팅이 일어날 것입니다.
- 예를 들어 Feature가 30개일 때
- 30개의 Feature를 기반으로 하나의 결정 트리를 만든다면 트리의 가지가 많아질 것이고, 이는
오버피팅
의 결과를 야기할 것
- Solution : 랜덤 포레스트
- 30개의 Feature 중 랜덤으로 5개의 Feature만 선택해서 하나의 결정 트리를 만들고,
- 또 30개 중 랜덤으로 5개의 Feature를 선택해서 또 다른 결정 트리를 만들고…
- 이렇게 계속 반복하면 여러 개의 결정 트리를 만들 수 있음.
- 결정 트리 하나마다 개별 예측 값을 내놓을 것.
- 여러 결정 트리들이 내린 예측 값들 중 가장 많이 나온 값을 최종 예측값으로 정합니다. → 다수결의 원칙에 따름.
- 랜덤포레스트의 장점
- 각
**독립 변수의 중요도**
를 계산할 수 있다는 점이다.
- 포레스트 안에 사용된 모든 노드에 대해 어떤 독립 변수를 사용하였고 그 노드에서 얻은
information gain
을 구할 수 있으므로 각각의 독립변수들이 얻어낸 infomation gain의 평균을 비교하면 어떤 독립변수가 중요한지를 비교 할 수 있게 된다.
랜덤포레스트의 랜덤성이 과적합 해소 예시
- 결정트리는 한사람이 모의고사 30문제를 푸는 과정이라고 가정합니다.
- 랜덤포레스트는 다수의 500명이 모의고사 30문제를 랜덤하게 5개씩 가져와서 풀고 그 답을 비교하여 가장 많이 나온 답을 선택해서 최종 답을 만드는 것입니다.
⇒ 이 과정을 통해 한사람이 푼 답의 의존도가 낮아지고 일반화된 답을 선택하게 되면서 과적합을 해소시킬 수 있습니다.
Ordinal encoding
- 순서형 변수에 순서를 부여하면서 인코딩하는 방법
- 명목형
- 순서형
선형 회귀에서 Ordinal Encoding을 사용할 수 없는 이유
- 선형회귀 모델에서 단위의 영향을 받기 때문에 ordinal encoding을 사용하면 변수의 수에 따라 수치가 달라져 영향을 줍니다.
- 트리기반 모델에서는 학습시에 각 특성에 단위의 영향을 받지않고, 수치의 대소관계에 따라서 최종값을 찾아갑니다.
트리기반 모델에서 OneHotEncoding했을 때 문제점
- 차원의 증가하여 과적합 문제를 야기합니다.
- 중요도가 높고 범주가 많은 특성이 여러가지로 분해되어 중요하지 않는 수치형 변수가 상위 노드를 차지하여 성능저하를 일으킵니다.
Ordinal Encoding 할때 맵핑 하이파라미터 유무에 따른 값의 차이
- 없음 → 데이터를 값을 기준으로 계속해서 분할하기 때문에 같은 성능이 나온다.