본문 바로가기

CodeStates

[머신러닝 - 트리모델]

 


결정트리:

분류, 회귀 방법이 둘 다 가능한 학습 모델이다. Y/N + 숫자형 Data등의 특성들을 기준으로 샘플을 분류한다.

특성들의 수치를 가지고 Impurity(불순도)를 최소화 하는, 정답 클래스를 찾아간다.

 

Impurity: Gini Impurity(지니 불순도), Entropy(엔트로피) 등이 있다.

여러 범주가 섞여 있는 정도. A,B라는 2개의 클래스가 있을 때

A:B = 45:55 -> 불순도 높음

A:B = 20:80 -> 상대적으로 불순도 낮음

 

 속도: Gini Impurity > Entropy  고른 분포: Gini Impurity < Entropy

- Entropy: Impurity를 수치적으로 나타낸 척도

- Entropy 높은경우 Impurity 높음 (0~1) > 1인경우 Impurity최대(Data가 5:5 비율로 섞여있다.)

- 결정트리는 정보획득을 최대화하는 방식으로 학습

※ 정보획득(Information gain): 이전 Entropy - 이후 Entropy 값

 Feature의 어느 분기점에서 정보 획득이 최대화되는지 판단을 한 후 진행

 

질문이나 말단의 정답을 노드(node) 라 하며 노드를 연결하는 선을 엣지(edge) 라고 한다.

각 노드는 뿌리노드(root), 중간노드(internal), 말단노드(external,leaf,terminal)로 나뉜다.

 

 

트리모델의 과적합:

트리모델에서의 복잡도는 곧 과적합을 의미한다. 과적합을 막기 위해 최대의 terminal Node의 갯수를 count하고, 1개의 Node당 분한 가능 횟수를 제한한다. 

 

  • min_samples_split
  • min_samples_leaf
  • max_depth

결정트리에서 확인 가능한 특성중요도(feature importance):

 

특성과 타겟의 관계를 확인하기 위해서.....

선형모델 -> 회귀 계수, 결정트리 -> 특성 중요도

결정트리의 특성 중요도는 회귀 계수와 달리 항상 양수 값을 가진다. 이 값은 특성이 얼마나 먼저, 그리고 자주 분기에 사용되는지를 나타낸다.

 

 

 


앙상블 기법, 랜덤 포레스트 :

앙상블 기법 :

한 종류의 데이터로 여러 모델을 만들어서 모델들의 예측 결과를 다수결 혹은 평균을 내서 예측하는 방법을 말한다.

->이때 사용하는 여러 모델들은 부트스트래핑이라는 샘플링 과정으로 얻은 부트스트래핑 세트를 이용해 학습을 한다.

->원본 데이터에서 샘플링을 할 때 복원 추출을 한다는 뜻이다.

->복원 추출이란 샘플을 뽑아서 값을 기록하고 다시 돌려놓는 것을 말한다.

->Bagging: Data를 Boostrap 적용 후 서로 다른 Feature 무작위 선정 후 decision tree 분류기를 생성 및 학습하는 것.

 

 

이때 추출 되지 않는 분홍색 샘플이 Out-Of-Bag => oob 샘플이라고 하고, 검증하는데 사용한다.

 

 

 

랜덤 포레스트 : 결정 트리에 앙상블 기법을 적용하는 방법이다.

->이때 결정 트리들은 독립적으로 생성된다.

 

 

랜덤포레스트에서 확인 가능한 특성중요도(feature importance):

랜덤포레스트에서는 학습 후에 특성들의 중요도 정보(Gini importance)를 기본으로 제공하는데 이는 노드들의 지니불순도(Gini impurity)를 가지고 계산한다. ->노드가 중요할 수록 불순도가 크게 감소.

 

노드는 한 특성의 값을 기준으로 분리가 되기 때문에 불순도를 크게 감소하는데 많이 사용된 특성이 중요도가 올라간다.

 

 

트리구조에서의 인코딩

트리구조에서 OneHotEncoding을 사용하면 High Cardinality가 발생 할 수 있다. -> 다양한 종류로 분할 되어 원핫인코딩을 안받는 수치형 특성들이 트리의 상위 노드를 차지할 확률이 높아지고 이는 전체적인 성능 저하가 일어날 수 있다.

->Ordinary Encoding 사용 (범주들을 순서가 있는 숫자형으로 바꾸면 원래 그 범주에 없던 순서정보가 생기니 주의.)

 

 

 

 

 

 

 


 

Evaluation Metrics for Classification :

 

 

Confusion Matrix:

모델에서 구한 분류의 예측값과 데이터의 실제값의 발생 빈도를 나열한 행렬.

- TP: 예측이 Positive 경우, 실제 Positive 인 경우

- FP: 예측이 Positive 경우, 실제 Negative 인 경우

- TN: 예측이 Negative 경우, 실제 Negative 인 경우

- FN: 예측이 Negative 경우, 실제 Positive 인 경우

출처 : https://m.blog.naver.com/pmw9440/221760675118

 

 

정밀도precision , 재현율 recall:

출처 : https://m.blog.naver.com/pmw9440/221760675118

 

 

ROC 커브, AUC 점수 :

FP-Rate(위상성율): 예측을 얼마나 잘하는지에 대한 비율 FP / FP + TN

TP-Rate(재현율): 실제 데이터 중 얼마나 잘 예측하는지에 대한 비율

- AUC: ROC-curve + x축이 이루고 있는 면적의 합 (범위: 0.5 ~ 1) 1에 가까울수록 효율적인 모델

- 최적의 임계값: FPR - TPR의 최소부근 = 재현율↑위상성율

 

 


Model Selection :

 

 

교차검증 CrossValidation :

train set과 test set으로 평가를 하고, 반복적으로 모델을 튜닝하다보면 test set에만 과적합되는 상황이 발생. 이를 해결하고자 하는 것이 바로 교차 검증(cross validation)이다. test set을 하나로 고정하지 않게 한다.

출처 : https://m.blog.naver.com/ckdgus1433/221599517834

장점 :

모든 데이터 셋을 평가에 활용 가능 .

-> 평가에 사용되는 데이터 편중을 막는다..

과적합 방지.

-> 평가 결과에 따라 좀 더 일반화된 모델 생성.

모든 데이터 셋을 훈련에 활용.

- 정확도를 향상.

- 데이터 부족으로 인한 underfitting을 방지.

단점 :

Iteration 횟수가 많기 때문에 모델 훈련/평가 시간이 오래 걸린다.

 

hold out cross validation : 훈련/검증/테스트 세트로 나누어 학습을 진행하는 것. (데이터의 수가 충분할때 진행)

K-fold cross validation : data를 k만큼 나눈 후 한번 씩 test 데이터로 지정하여 model을 학습을 진행하는 것. k값이 증가하면 소요 시간이 증가한다. MSE의 평균값이 낮은것이 좋은 모델로 평가된다.

Leave one out cross validation : n개의 model을 만들고 각 모델을 만들 때 한개의 샘플만 제외하면서 그 제외한 샘플로 test set을 지정하여 성능을 측정해 n개의 성능에 대해 평균을 내는 방법.

 

 

 

 

 

하이퍼 파라미터 최적화 :

- GridsearchCV: 파라미터 값, 범위을 지정, 지정한 파라미터의 모든 조합을 통한 검증을 진행.

- RandomizedsearchCV: 파라미터 값,범위를 설정 후 무작위 값 중 모든 조합 검증.

사용해본 방법 :  Randomized -> Grid 통해 진행 (범위를 통한 값을 선정 후 선택된 주변 값을 적용하는 방식을 사용)

 

 

'CodeStates' 카테고리의 다른 글

[note] 파이프라인  (0) 2021.04.14
[머신러닝 - 선형모델]#4  (0) 2021.04.08
[머신러닝 - 선형모델]#3  (0) 2021.04.08
[머신러닝 - 선형모델]#2  (0) 2021.04.08
[머신러닝 - 선형모델]#1  (0) 2021.04.07