랜덤포레스트란?
랜덤포레스트는 훈련을 통해 편성된 다수의 나무로부터 분류 결과를 수집하고 결론을 끌어내는 일종의 투표다.
물론 일부 나무는 과적합할 수 있지만 다수 나무를 기준으로 예측하기 때문에 영향력이 감소하고 일반화 성능도 양호하다. 이러한 뛰어난 성능을 달성하기 위해 다수의 학습 알고리즘을 사용하는 것을 앙상블 학습이라고 한다.
당신은 랜덤한 숲에서 각각의 나무를 만드는 방법을 알아야 합니다. 저는 결론부터 시작하겠습니다. 배깅이라고 불리는 과정은 나무를 만든다.
배깅
학습 데이터 셋에 총 1000줄이 있다고 합니다. 그런 다음 무작위로 100 행을 선택하여 결정목을 만드는 봉투 포장입니다. 물론 이렇게 나무를 만들면 모든 것이 변하지만 일부 학습자료를 바탕으로 만들었다는 점이 중요하다.
그리고 우리는 현 시점에서 중복을 허용해야 한다는 것을 기억하자.
첫 번째 나무는 1000 열의 봉투에서 무작위로 뽑아내고 100 열은 봉투 안으로 되돌려집니다. 그리고 저는 1000줄 중에서 무작위로 100개를 골라 두 번째 나무를 만들고 그것을 봉투에 넣습니다. 약간 이런 느낌이에요
배깅피쳐
각각의 나무는 여기에서 나무를 짓는 데 사용되는 특성을 제한해서 여러 종류를 부여해야 해요.
본래 트리를 구축할 때 모든 속성을 보고 정보량이 가장 많은 속성을 선택했고 이를 바탕으로 데이터를 분할했다. 하지만 지금은 각 분할로 전체 속성의 일부만을 고려한 트리를 만드는 전략이다.
예를 들면, 총 25개의 속성이 있어, 그 중 5개만을 선택해 검사하고, 취득한 정보량이 가장 많은 것을 기준으로 데이터를 분할한다. 다음 단계에서는 랜덤으로 5개를 다시 선택을 하고, 그것을 보도록 하겠습니다. 이와 같은
그러면 얼마나 많은 속성을 골라야 돼요? 위 예에서 보시다시피 25개의 속성을 속성 개수의 제곱근인 5개로 선택하는 것이 가장 좋습니다.
이제 우리는 다른 나무를 만들 수 있기 때문에 그것들을 모아서 숲을 만들 수 있습니다.
scikit-learn 사용법
랜덤 포레스트는 Python 라이브러리 scikit-learn을 사용하여 간단하게 구현할 수 있습니다.
random Forest Classifier는 sklearn.ensample 모듈에서 로딩할 수 있습니다. 단, 포레스트를 작성할 때는 n_estimators 파라미터로 트리 개수를 지정해야 합니다.
Random Forest Classifier는 Decision Tree Classifier와 거의 동일합니다. 당연히 .fit(), .predict(), .score()와 같은 방법을 사용할 수 있죠.
요약
랜덤 포레스트는 앙상블 머신러닝 모델입니다. 다수의 의사결정 트리가 구축되고 트리의 분류가 집계되어 최종적으로 분류된다.
그것은 난잡하게 난잡하게 난잡함을 피하기 위한 것이다. 여러 나무에서 분류를 집계함으로써 과적합 나무의 영향을 줄일 수 있다.
모든 의사결정 트리는 학습 데이터 셋에서 하위 데이터 셋을 무작위로 추출하여 생성된다. 용장성을 얻을 수 있기 때문에, 1개의 데이터를 여러 번 선택할 수 있습니다. 이 과정을 막다른 골목으로 일컫는다.
트리 작성 시 모든 속성 중 일부를 랜덤하게 선택하여 취득한 정보량이 가장 많은 데이터를 기준으로 분할한다. 데이터 셋에 n개의 속성이 있는 경우 루트 n개의 평방 개수만큼 랜덤으로 선택하는 것이 일반적입니다.
'IT개발' 카테고리의 다른 글
MSA 아키텍처란? (0) | 2021.08.10 |
---|---|
크롤링이란? (0) | 2021.08.10 |
빅데이트 프로세싱이란? (0) | 2021.08.07 |
TensorFlow란? (0) | 2021.08.06 |
강인공지능이란? (0) | 2021.08.06 |