DT, RF, GB
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처럼 간과된 피처들을 확인할 수 있다.