랜덤 포레스트?
분류, 회귀 분석 등에 사용되는 앙상블 학습 방법의 일종.
※앙상블 : 여러개의 결정 트리를 결합해, 하나의 결정 트리보다 더 좋은 성능을 내는 머신러닝 기법.
랜덤 포레스트의 포레스트는 숲(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)