Decision Tree
계층이 내려갈수록 불순도(gini계수, 엔트로피로 나타냄)가 낮아진다.
데이터를 직선으로만 나누기 때문에 무조건 overfitting이 발생한다. 따라서 일반성 확보가 필요
일반성을 확보하기 위해: Full Node만들고 가지치기(Pruning - min\_sample\_split, max\_depth) 실행
트리의 특성 중요도: 트리를 구성하는데 얼마나 중요한 속성인가를 평가하는 값.
- 0과 1 사이의 값으로 전체 특성 중요도의 합은 1
- tree.feature_importances_
차원(feature, 속성)이 크다면 데이터도 많아야한다.
단점: 데이터를 비선형(곡선)으로 나눌 수 없다. 즉, 데이터를 유동적으로 해석할 수 없다. 데이터의 일반화가 어려움.
Training DataSet에 너무 의존적이므로 Data Varience 가 매우 크다 = overfitting 된다.
>> 이를 해결하기 위해 Random Forest를 사용한다.
장점: 직관적이다. 단순하다. 학습이 빠르다. 즉, 간단한 학습
Ensemble
Feature 중 랜덤으로 일부의 Feature만 선택해서 결정트리를 만드는 것을 반복한다. 이렇게 생성된 여러 결정 트리 하나마다 내놓은
예측 값 중 가장 많이 나온 값을 최종 예측값으로 정한다.
Feature의 개수와 생성된 Decision Tree의 개수는 사람이 결정한다. ==> 이렇게 사람이 직접 정하는 값을 hyper-parameter라고 한다.
Bagging과 Boosting 알고리즘 두 가지가 존재한다.
Random Forest
Random Forest is a Ensemble : Random Forest는 Ensemble알고리즘 중 하나이다.
Bagging 알고리즘을 사용하여 만든다.
- Bagging은 복원추출을 사용하며 랜덤하게 추출
- Bagging = BootStrap Aggregation = BootStrap Sampling 셋 다 같은 알고리즘을 지칭한다.
- 매번 트리를 생성할 때 새로운 데이터가 들어오면 학습을 더 많이 진행하게 되는 효과가 있다.
- 하나의 독립변수의 영향이 너무 강할 경우 모델이 비슷하게 생성될 수 있음. ==> 문제점
- 연산량이 많아 연산 속도가 느리다. ==> 문제점
만들어지는 결정트리의 갯수가 많아야한다.
결과 예측을 엄청 잘 하지는 못한다. 하지만 overfitting 가능성이 낮다.
결과를 평균냄으로 과대적합된 양을 줄일 수 있다. 결정트리를 많이 만들어야함.
파라미터
- n_estimators : 랜덤 포레스트 안 결정 트리개수. 많을수록 좋다. 하지만, 많을수록 시간과 연산량이 늘어난다.
- max_features : 무작위로 선택할 Feature의 개수. 값이 작으면 오버피팅이 줄어든다.
차원이 높고 희소한 데이터(컬럼은 많은데 데이터가 적음)에서는 사용이 어려움