본문 바로가기

AI

Random Forest

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의 개수. 값이 작으면 오버피팅이 줄어든다.
  • 차원이 높고 희소한 데이터(컬럼은 많은데 데이터가 적음)에서는 사용이 어려움
  • 'AI' 카테고리의 다른 글

    Linear Regression  (0) 2021.05.28
    Random Forest & Linear Regression  (0) 2021.05.27
    의사결정 나무  (0) 2021.05.25
    Machine Learning (기계 학습)  (0) 2021.05.24
    [python 1차 프로젝트] 후기  (0) 2021.05.18