Rucrazia's Blog
Random Forest (랜덤 포레스트) 간단히 알아보기 본문
Random Forest는 종속변수가 존재하는 지도학습 알고리즘이다.
랜덤 포레스트 알고리즘은 추천, 변수 선택, 이미지 분류 등에 자주 쓰이며 분류 문제와 회귀 문제 둘 다 적용할 수 있는 알고리즘이다.
랜덤포레스트는 decision tree(의사결정나무) 들로 구성되어 있다. 각 의사결정나무에 들어가는 sample들은 무작위로 들어가 있다. 여러 개의 의사결정나무 들을 이용해서 결과치를 뽑아내어 여기서 가장 좋은 결과를 내보내는 tree를 투표한다.
의사결정나무와 랜덤포레스트의 차이점은 과접합 문제가 있느냐 없느냐 이다. 의사결정나무는 이미 학습된 데이터에 대해서는 분류를 잘하지만 새로운 데이터가 들어오면 분류를 잘 하질 못한다. 즉, 새로운 데이터에 대해서는 의사결정나무가 효용성이 적다. 랜덤포레스트는 전체 데이터에서 무작위로 샘플링(선택)해서 의사결정나무를 다수 만들어내기 때문에 새로운 데이터 입력이 들어와도 분류를 비교적 잘하는 알고리즘이다.
Parameter (Python의 sklearn 라이브러리 기준)
- N-estimator : 랜덤포레스트 안에 만들어지는 의사결정나무 갯수. 트리가 많아지면 속도가 느려지고 너무 트리가 크면 오히려 정확도가 낮아진다. 그러나 일반적으론 트리가 많아질수록 분류를 잘하게 되므로 적절한 trade-off 필요하다.
- Max-depth : 랜덤포레스트 안에 있는 각 의사결정나무의 깊이를 설정. 트리가 깊어질수록 더 잘게 분류를 시키므로 일반적으론 정확도가 높아진다.
- Min-samples-split : 내부 노드에 데이터를 얼마 만큼씩 최소한 넣을 것인가 설정. 10%~100%로 설정. 100%로 갈수록 underffiting이 일어나서 정확도가 낮아진다.
- Min-samples-leaf : 리프 노드에 데이터를 얼마 만큼씩 최소한 넣을 것인가 설정. 10%~100%로 설정. 100%로 갈수록 underffiting이 일어나서 정확도가 낮아진다.
- Max-feature : 가장 잘 분류할 feature의 갯수를 설정.
Ref.
https://www.datacamp.com/community/tutorials/random-forests-classifier-python
http://swalloow.tistory.com/92
https://medium.com/all-things-ai/in-depth-parameter-tuning-for-random-forest-d67bb7e920d
'기술 - Data Science > Data Science' 카테고리의 다른 글
Skewness(왜도)와 Kurtosis(첨도) (0) | 2019.01.17 |
---|---|
빅데이터에서의 정규성 검정 (0) | 2019.01.16 |
[Python] 데이터 수집 - 웹 크롤러 만들기 (0) | 2018.11.10 |
(R 전처리) 테이블의 컬럼들로 다른 테이블의의 컬럼을 수정 및 확인하는 방법 (0) | 2018.10.25 |
주말과 공휴일 날짜를 가져오는 R 코드 (0) | 2018.10.11 |