일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Oracle 논리적 저장 구조
- airflow 정리
- eda
- Spark 튜닝
- 데이터분석
- 통계분석
- Decision Tree
- git init
- 앙상블
- git stash
- git 기본명령어
- Spark jdbc parallel read
- 리눅스 환경변수
- Python
- CF
- 오라클 데이터 처리방식
- Spark Data Read
- enq: FB - contention
- Collaborative filtering
- SQL
- Oracle ASSM
- Linux
- 추천시스템
- 의사결정나무
- BFS
- 랜덤포레스트
- 네트워크
- 데이터 분석
- 알고리즘
- 배깅
- Today
- Total
[Alex] 데이터 장인의 블로그
[Machine Learning] Random Forest - 랜덤 포레스트 본문
TREE가 모이게 되면 FOREST가 된다. 이전에 공부한 Decision Tree가 '나무' 였다면, 오늘 배울 Random Forest는 숲이다. 나무가 모여 숲이 되듯이 랜덤포레스트는 여러 의사결정나무 모델의 집합체라고 할 수 있다.
앙상블 기법
앙상블은 여러 모델의 집합을 이용해서 하나의 예측을 이끌어내는 방식이다. 배깅은 앙상블 방법 중 가장 많이 사용되는 방법 중 하나이다. 배깅은 데이터를 부트스트래핑하여 여러 모델을 만드는 가장 일반적인 방법을 말한다. 주로 배깅, 부스팅을 구분을 두어 학습하기도 하는데 간단히 정리하면 다음과 같다.
Ensemble methods: Bagging & Boosting
배깅
배깅은 부트스트래핑 종합(Bootstrap aggregating)의 줄임말로 1994년 레오 브레이먼이 처음 발표하였다.
배깅의 특징은 다양한 모델을 사용하는 대신, 정확히 같은 데이터로 모델을 학습한다기 보다는 매번 재표본(복원추출)데이터를 활용하여 새로운 모델을 학습한다.
특징
1. 부트스트래핑(복원 랜덤 추출) 하여 모델들을 병렬처리 한다. #(OOB 평가)
2. 데이터가 적더라도 반복 학습, 검증하여 Overfitting을 방지하는 방법
3. 상대적으로 튜닝이 거의 필요 없다.
부스팅
부스팅 알고리즘의 가장 기본적인 아이디어는 잘못 분류된 관측 데이터에 가중치를 증가시킴으로써, 현재 성능이 제일 떨어지는 데이터에 대해 집중해서 학습하도록 하는 방식을 말한다. 이외에 최적화하는 방식에 따라서 부스팅 모델 이름 달라진다.
특징
1. 오차를 줄이는 방향으로 다음 모델을 연속적으로 생성, 학습. 파라미터를 올바르게 설정해야함.
2. 순차적 학습(가중치 부여) -> 특징
3. 배깅은 상대적으로 튜닝이 필요 없었지만 주의가 필요.
4. 마찬가지로 복원추출
앙상블은 대부분 학습 모델에서 흔히 발생하는 다음 두가지 오류를 줄이기 위해서 사용한다.
-
높은 bias로 인한 Underfitting
-
높은 Variance로 인한 Overfitting
이상적인 모델은 데이터의 규칙성을 잘 잡아내면서도 다른 데이터가 들어왔을 때, 일반화할 수 있는 모델(어느정도의 임의성과 함께.)이다. 앙상블은 이러한 조건의 성능을 향상시킬 수 있는 방법이다. 이에 더하여 랜덤포레스트는 일반적인 배깅과는 다르게 '속성 선택 테크닉'을 사용한다.
속성 선택 테크닉
의사결정트리에서는 어떤 Feature(속성)에 따라 데이터를 나눌지 정하는 과정에서 모든 Feature 를 후보군으로 두게 된다. 그리고 그 속성들 중 가장 적합한 속성 하나를 골라서 데이터 분류에 활용한다. 하지만 랜덤포레스트에서의 각각의 의사결정트리에서는 k개의 속성만 사용하여 분할 학습을 수행한다. 이것은 각각의 변수의 상관성을 줄이는데 효과적이고 분산을 줄이는데 도움을 주게 된다.
+ 일반적으로 추천하는 속성값 $\log_2 d $ '$ d $'는 전체 속성 수를 이야기한다.
+ $\sqrt{d} $ 으로 속성값을 지정하는 경우도 있음.
2020/10/04 - [ML&DL/Machine Learning] - [Machine Learning] Random Forest - 랜덤 포레스트 코드 구현 (feat. python)
출처
Decision Tree vs. Random Forest – Which Algorithm Should you Use?
서적. 파이썬 데이터 사이언스 핸드북
'ML&DL > Machine Learning' 카테고리의 다른 글
[Machine Learning] Random Forest - 랜덤 포레스트 코드 구현 (feat. python) (0) | 2020.10.04 |
---|---|
[Machine Learning] Decision Tree - 의사결정나무 (0) | 2020.09.20 |
[Machine Learning] SVM - 서포트 벡터 머신 (0) | 2020.09.11 |