상세 컨텐츠

본문 제목

[머신러닝 커닝 페이퍼] 틀리면서 배우는 랜덤포레스트

프로그래밍/Data&ML

by 척척석사 민준 2022. 12. 3. 13:50

본문

728x90

결정트리모델은 쉽게 과적합이 되는 문제가 있었다.

근데 이런 질문을 해볼 수 있다. 과적합이 꼭 나쁠까? 적어도 학습데이터세트안에서는 완벽하게 예측하는데?

학습모델이 어느정도는 데이터세트의 특성을 파악하고 있는게 아닐까?

랜덤 포레스트 모델은 결정트리모델의 이러한 과적합을 방치하고 오답을 더 많이 만들어낸다.

그 다음 수 많은 과대적합 모델들을 통계적으로 평균을 내서 과적합을 줄이는 알고리즘이다.

핸덤포레스트 알고리즘은 트리모델의 높은 예측성능은 유지하면서 과적합을 줄이는 것이 수학적으로 증명되었다.

(출처 : 파이썬 라이브러리를 활용한 머신러닝 p122)

 

랜덤 포레스트 모델이 효과적이려면 틀려야한다.

각각의 과대적합된 트리모델이 할당된 학습데이터에 대해서는 과적합이 되어있어야 한다.

또한 각각의 트리는 서로 독립이어야 한다. 같은 문제로 틀리면 과적합을 시키는 의미가 없어진다.

트리를 랜덤하게 독립적으로 만드는 방법은 두가지이다.

1. 데이터 포인트를 무작위로 준다 : 문제를 섞어준다

2. 특성을 무작위로 선택한다 : 서로 다른 과목을 준다

 

데이터를 무작위로 주는 건 쉽다. 쉽다는 건 남들이 이미 짜놓은 코드를 의심없이 사용하면 된다는 것이다.

하지만 특성을 섞는건 주의를 요한다. 서로 특성이 너무 겹치면 비슷한 특성으로 분류를 할 것이기 때문에 특성을 나누는 효과가 미미해지며(특성은 겹쳐도 데이터 셋은 랜덤하게 섞인다) 서로 아예 겹치지 않게 학습을 하면 분류기의 깊이가 너무 깊어지게 된다. (오답끼리의 평균을 내기가 애매해진다)

몇 개의 특성을 고를지 정하는 매개변수는 max_features 이다.

max_features가 1이 되면 특성값 하나로만 분류를 하게 되기에 분류의 의미가 옅어지게 되고

max_featutres가 특성 columns의 갯수와 같아지면 모든 트리들이 비슷한 특성으로 분류를 진행하게 되어 트리들이 서로 비슷하게 되버린다.

기본값은 분류를 위한 랜덤포레스트의 경우 max_features = sqrt(n_features)이다.

 

728x90

관련글 더보기