Random forest
트리기반 모델의 기본이 되는 decision tree, random forest의 기본적인 동작 알고리즘은 복잡하거나 어렵지 않고, simple 그 자체라고 할 수 있다. 하지만 트리기반 모델(random forest 한 가지만 알고있지만,,)들이 케글의 탑 티어를 대부분 석권하고 있다는 사실은 의미심장하다고 해야하나.
간단하게 짚고 넘어가자면
- Gini impurity 지니 불순도
- 특정 feature가 지니 불순도를 얼마나 감소시키는가!?
- 1에서 전체 데이터 개수 중 각 레이블이 차지하는 개수의 비율을 제곱해서 뺌
- Entropy기반의 Information Gain
- 특정 featuer의 질문으로 분할된 node의 불순도가 얼마나 감소하는가!?
- 이전 node의 불순도 - 분할된 node들의 불순도의 합
공식은 생략하고, decision tree는 위 두가지 기준중 한가지로 데이터 셋을 분류해 나가는 과정이다. 끝까지 가면 모든 leaf노드가 target의 한가지 범주로만 구성되도록 tree를 구성할 수 있기 때문에, 필연적으로 traing set에 overfitting이 발생할 수 밖에 없다.
단일 트리의 overfitting을 해결하기 위해서 앙상블모델인 랜덤포레스트가 개발되었다고 할 수 있다. 앙상블모델은 쉽게 말하자면 여러 모델들의 결과를 종합해서 결론을 도출하는 모델링 방법이라고 일단 해두자. 랜덤포레스트는 estimator라고 불리는 작은 트리들을 100개 이상 만들고, 100개 트리의 결과를 종합해서 분류하는 민주적인 모델이라고 할 수 있다.
Bootstrapping sampling
estimator tree를 만들고 결과를 종합하는 과정을 bagging이라고 한다.
Bootstrapping the data plus using the aggregate to make a decision is called Bagging.
드디어 오늘 정리하고 싶었던 Bootstrapping이다. Bootstrapping sampling 과정 자체는 매우 단순하다. 1) original data set에서 sample size 만큼 random하게 복원추출한다. 2) 복원추출한 bootstrap dataset의 mean, median... 등등 통계치를 계산한다. 3) 계산한 수치를 기록한다. 1)~3)을 수없이 반복한다. bootstrapping sampling을 수천번 반복하고 기록된 수치(예, 평균)의 분포는 정규분포와 같은 확률 분포를 이루게된다. 예를 들어 original data set의 평균이 10이면, bootstrapping sampling 분포는 평균이 10인 정규분포. 이제 bootstrapping sampling 분포에서 original data의 mean이 관찰된 확률 p값을 구할 수도 있고, 평균 10의 신뢰구간도 추정할 수 있게 된다.
bootstrapping이 좋은점은 2번 과정에서 median같이 일반적인 방법으로 검증하기 힘든 값으로 가설 검정을 할 수 있으며, 가설 검정을 위해 이론적인 확률 분포를 가정해야 하는 과정없이, sampling을 반복해서 분포를 만들어 낼 수 있다는 점이다. bootstrapping은 simple 한 방법에 편리한 범용성을 갖고 있기 때문에, 머신러닝의 다양한 모델들에서 Bootstrapping sampling을 여러 측면에 적용하고 있다고한다. 아마 앞으로 공부하면서 자주 만날 것 같기 때문에 개념만 정리해 둔다.
오늘 한 일
해야 할 일
categorical data correlation
categorical encoders의 방법들
imputer