-
[삼성 SDS Brightics] 개인 의료비 예측(3)카테고리 없음 2022. 8. 30. 23:42
안녕하세요.ㅎㅎ Brightics 서포터즈 3기 정민경입니다.
팀미션 마지막이에요!
사실 저번주에 멘토분들의 피드백을 받고
분석과정을 좀 더 변형해서 진행하였는데요,
확실히 함께하니까
내용이 더 풍부해지고, 알지 못했던 부분도 배우게 되더라고요.
그중, Random Forest, Adaboost 를 소개할 예정입니다 :)
1) 프로세스
저희가 로그변환을 시도했지만,
model에 따라 전처리 방법이 달라 이를 고려해야한다는 피드백을 받고
로그변환을 시도했을 때와 그렇지 않았을 떄로 나누어 진행했어요.
Linear Regression에서는 로그변환이 의미가 있기에 그대로 두었지만,
그 외에는 오히려 과정을 무겁게 만들 수 있다는 점에
가장 앞에서 '로그변환X' 인 것을 볼 수 있답니다.
위에는 하이퍼파라미터 및 교차검증 조정 전,
아래는 python script를 활용해 하이퍼파라미터와 교차검증 과정을 거쳤어요!
그렇게 오늘은 4가지 방법을 비교하면서
RandomForest와 Adaboost에 대해 알아봐요!
***
RandomForest : 대중의 지혜와 같이 의사결정나무를 여러개 만들어 종합하는 것
▶학습이 병렬적으로 일어난다.
Adaboost : 오류데이터에 가중치를 부과하며 모형을 변환 및 개선해나가는 것
▶학습이 순차적으로 일어난다.
- Q. 데이터에 따라 정확도가 높은 모형은 달라진다.과연 의료비 예측에는?-
***
2) 랜덤포레스트 : RandomForest
'Random Forest Regression Train' 함수로
아래에 X변수를 넣어주고 이로써 예측하고 싶은 Y변수를 지정해주세요!
그러면 위와 같이 Y변수를 예측하는데 준 X변수의 영향도가 시각화됩니다.
Random Forest에서는 의료비 예측에
흡연 / 비만도 / 나이
위 세가지의 중요도를 확인할 수 있었어요.
그 다음! 'Random Forest Regression predict' 함수로
훈련한 모델로 실제 의료비를 예측해봅니다.
예측값이 옆에 뜬 것을 볼 수 있어요!
그리고 그 옆에, 모든 과정에 공통으로 'Evaluate Regression'을 볼 수 있을 텐데요.
모델의 성능을 평가할 수 있는 지표를 표로 보여줍니다.
이는 마지막에 4가지를 모두 모아 비교하기 위해 생략해두겠습니다 :)
위의 과정을 python script로 나타내며
동시에 하이퍼파라미터와 교차검증을 조정해보았어요.
그렇지만 구체적인 python 코드는 다음에 더 구체적으로 살펴보기로 하고,
결과창에 뜨는 최적의 하이퍼파라미터 값이 보이시나요?
이를 통해 만들어진 모델로 예측하고
table을 생성하는 과정이 코드 안에 있어서
위의 과정을 거치고, 마찬가지로 해당 모델을 Evaluate해보았습니다.
3) 에이다부스트 : Adaboost
모델이 바뀌었을 뿐이지 과정은 거의 똑같습니다!
'Adaboost Regression Train' 함수로
아래에 X변수를 넣어주고 이로써 예측하고 싶은 Y변수를 지정해주세요!
그러면 Y변수를 예측하는데 준 X변수의 영향도가 나오죠!
Adaboost와 똑같이
흡연 / 비만도 / 나이
위 세가지의 중요도를 확인할 수 있어요.
(※ 위의 3가지 변수가 의료비에 주는 영향이 클 것이다!
EDA를 하며 제가 추론했던 내용이라 뿌듯하네요 :▷ )
그리고 동일하게 Adaboost를 python sciprt를 활용해
하이퍼파라미터 및 교차검증하는 과정을 거쳤습니다!
4) model 성능(정확도) 비교
Brightics에서 보여준 결과는 위와 같은데요, 이중에서
r2-square / MAE / MAPE
위 세가지 평가지표를 사용할거에요!
r2-squareMAEMAPERandomForest_Train0.8432795.4740.06→ GridsearchCV0.892472.4331.67Adaboost_Train0.8443795.2859.35→ GridsearchCV0.882685.7034.21짜라란. 이렇게 정리가 되었습니당
얼핏 보기에 전체를 대상으로 한 의료비 예측 모형에는
Adaboost보다 RandomForest가 더 어울려 보이네요!
제가 2개의 모델을 돌려보았지만,
다른 팀원이 또 다른 2가지 모델(XGboost, DecesionTree)을 시도해
그 전의 Linear까지 합쳐서
총 5가지 모델을 비교해볼 예정이에요.
나아가 예측모형을 남/여로 나누어서 찾아보기도 했는데요,
(즉, 남자 의료비 예측 모델 & 여자 의료비 예측 모델)
이렇게 따로 두었을 때 예측모형은 어떻게 변할지 궁금하지 않나요?
해당 결론 그리고 나머지 부분은 다른 팀원이 맡아주어
이후 링크를 첨부합니다. :)
Review
거의 팀프로젝트가 마무리 되어가는데요,
비록, 다른 요인 - 흡연, 나이, 지역-은
표본수가 너무 적어지기도 하고
비율이 맞지 않다는 문제에 시도하지 않았지만
추후 그룹을 나누어 더 정확한 예측을 찾아간다는 게
이번 프로젝트에서 새로웠던 접근법이자 소중한 피드백이었어요.
또한, 자연어처리만 주로 다뤄오다가 팀원들과 함께하며
아무래도 수치예측모형을 저는 처음 다룬 것과 다름 없었는데,
그래서 새로 접하고 알게되는 내용이 많아서
너무 고마웠어요...!!
그떄 Brightics에서 각 과정이 무엇인지 간단히 설명을 넣을 수 있고
흐름을 한눈에 알아볼 수 있으니까
서로 무엇을 진행했는지 이해하기 한결 수월하더라고요.
그렇게 통계 용어와 지식을 더 넓혀갔어요.
아마 이것저것 서툴렀을 저와 함꼐 해준 팀원에게
여전한 고마움의 인사를 전하며, 이번 포스팅을 마칩니다.ㅎㅎ
※본 포스팅은 삼성SDS Brightics 서포터즈 3기 활동의 일환으로 작성하였습니다