본문 바로가기

동아리

랜덤 포레스트

랜덤 포레스트?

분류, 회귀 분석 등에 사용되는 앙상블 학습 방법의 일종.

※앙상블 : 여러개의 결정 트리를 결합해, 하나의 결정 트리보다 더 좋은 성능을 내는 머신러닝 기법.

 

랜덤 포레스트의 포레스트는 숲(Forest)이고, 결정 트리는 나무(Tree)

즉, 나무가 모여 숲을 이룬다 -> 결정 트리가 모여 랜덤 포레스트를 구성한다.

결정 트리의 단점

훈련 데이터에 오버피팅이 되는 경향이 있다

-> 여러 개의 결정 트리를 통해 랜덤 포레스트를 만들어 단점을 해결.

※오버피팅 -> 너무 세밀하게 학습 데이터 하나하나를 다 설명하려고 해, 정작 중요한 패턴을 설명할 수 없게되는 것.

모델링을 잘 하기 위해선?

1. 의사 결정 나무를 많이 만들어야 한다.

2. 각각의 트리는 타겟 예측을 잘 해야 한다.

3. 각각의 트리는 다른 트리와 구별되어야 한다.

트리를 랜덤하게 만드는 방법

1. 트리 생성 시 사용하는 데이터 포인트를 무작위로 선택 (샘플 수)

2. 분할 테스트에서 특성을 무작위로 선택.

랜덤 포레스트의 특징.

- 결정 트리들로 이루어지기 때문에 각각의 결정 트리들을 학습하는 과정이 필요.

- 무작위로 선택한 특성 후보들 중에서 최적의 특성을 찾는 방법을 사용한다.

- 단일 트리의 단점을 보완하고 장점은 가지고 있기 때문에 성능이 매우 뛰어나다

- 메모리 사용량이 굉장히 많다

-> 트리를 만드는 것 자체가 메모리를 많이 사용. 랜덤 포레스트는 여러개를 만들어 종합하기 때문에, 메모리 사용량 多

 

구현

데이터를 로드 후, 분류기를 만들어,  모델을 훈련한다.

from sklearn import datasets
from sklearn.tree import DecisionTreeClassifier

iris = datasets.load_iris()
features = iris.data
target = iris.target

decisiontree = DecisionTreeClassifier(random_state = 0)

model = decisiontree.fit(features, target)

새로운 샘플을 만든다.

observation = [[5, 4, 3, 2]]

샘플의 클래스를 예측한다.

model.predict(observation)

 

'동아리' 카테고리의 다른 글

나이브 베이즈  (0) 2020.09.24
SVM 알고리즘  (0) 2020.09.23
자바 2차시  (0) 2020.09.23
의사 결정 트리  (0) 2020.09.18
K-NN 알고리즘  (0) 2020.09.15