카테고리 없음

DT, RF, GB

23임규민 2024. 4. 1. 04:34

4.2.1 랜덤포레스트 사용하기

DecisionTree 알고리즘 뿐만 아니라 랜덤 포레스트로 다양한 알고리즘을 사용하고, 이를 통해  모델의 성능을 올려보자.

 

먼저 DecisionTree로 모델을 만들어보자.

 

from sklearn.tree import DecisionTreeClassifier

model = DecisionTreeClassifier(random_state=42)
model

 

(학습을 진행하는 내용은 같기에 생략한다.)

 

해당 DecisionTree만 사용할 때의 다르게 예측한 갯수와 정확도는

(y_predict!=y_test).sum()
28
 

 

from sklearn.metrics import accuracy_score

accuracy_score(y_test, y_predict)
0.8181818181818182

 

 

다음과 같은 값이 나온다.

 

 

또한 피처들의 중요도를 시각화했는데, Pregnancies_high와 low_glu_insulin은 중요도가 0이며, 인슐린 외에는 중요도가 매우 낮음을 알 수 있다.

 

랜덤 포레스트를 사용해서 진행을 해보겠다.

from sklearn.ensemble import RandomForestClassifier

model=RandomForestClassifier(n_estimators=100, random_state=42)
model

 

렌덤 포레스트를 사용한 모델을 학습하면

 

20
 
0.8701298701298701
 

다르게 예측한 갯수가 줄어들고, 이로 인해 정확도가 상승함을 볼 수 있다.

 

 

DecisionTree와는 달리, 포도당(Glucose)의 수치가 소폭 상승했으며, Pregnancies와 low_glu_insulin의 중요도가 상승했음을 알 수 있다. 이를 통해,  DecisionTree 알고리즘보다 랜덤 포레스트를 통한 다양한 알고리즘 학습이 정확도가 더 높음을 알 수 있으며, 이 과정에서 간과되었던 피처들의 중요도를 알 수 있다.

4.2.2 그라디언트 부스팅 알고리즘 사용하기

앞서 DT와 RF를 학습한 것과 같이, 그라디언트 부스팅 알고리즘도 학습해보자.

from sklearn.ensemble import GradientBoostingClassifier

model=GradientBoostingClassifier(random_state=42)
model

 

그라디언트 부스팅 알고리즘을 사용했을 때의 계산되지 다르게 예측한 갯수는

24

 

이고, 정확도는 

0.8441558441558441

 

임을 알 수 있다. 

 

이를 통해 그라디언트보다 랜덤 포레스트를 사용했을 때의 성능이 더 좋음을 알 수 있다.

 

시각화 그래프에서도 RF와 달리 기존 DT처럼 간과된 피처들을 확인할 수 있다.