[삼성 SDS Brightics] #4_개인 의료비 예측 프로젝트💊_(의사결정은 나무로 해야 제맛이죠~)
하염!
Brighics 서포터즈 3기 수망입니다!
오늘은 저저번주 포스팅부터 시작했던
개인 의료비 예측 프로젝트에서 모델링을 해보는 날이에요!!!!
지금 이 포스팅을 읽고 계시는 분덜,
혹시 제 팀원들 블로그는 다 읽고 오셨나요?!🤔
읽고 오셨다면은
제왚피의 하트를 받아죠..?
ㅋㅋㅋㅋㅋㅋ
저는 앞서 블로그 헤드와 같이,
Decision Tree🌳와 🌲🌳XGBoost🌵🌴 모델을 다루고,
여러분들께 소개해드리기로 했어요.
먼저 이 두 모델에 대해 간략히 설명부터 하고 시작해볼게요!
https://scikit-learn.org/stable/index.html
scikit-learn: machine learning in Python — scikit-learn 1.1.2 documentation
Model selection Comparing, validating and choosing parameters and models. Applications: Improved accuracy via parameter tuning Algorithms: grid search, cross validation, metrics, and more...
scikit-learn.org
(위 사이트를 참고해 작성했습니다.)
1. Decision Tree
'의사결정나무'는 분류와 회귀에 사용되는 비모수적인 지도학습 모델입니다.
데이터에서 추론되는 결정 규칙을 학습해서 종속변수의 값을 예측하는 모델인데요!
말 그대로 나무처럼 가지로 뻗어나가는 듯이 생긴 트리구조이면서,
트리가 깊을수록 결정 규칙이 복잡해지고 모델이 적합해진다는 것이 특징입니다!
- 장점 : 이해와 해석이 쉽고 수치형∙범주형 데이터를 모두 처리할 수 있습니다.
- 단점 : 과대적합이 자주 발생합니다.(해결방안 : 가지치기(pruning))
2. XGBoost Regression
'XGBoost'는 그레디언트 부스트 결정 트리(Gradient Boosted Decision Trees) 알고리즘의 오픈 소스 구현으로, 분류와 회귀의 모델을 제공합니다.
일반적으로 단일 트리는 실제까지 적용시키에는 약하기 때문에 여러 트리의 예측을 결합하는 앙상블을 통해 강화시키곤 하는데, XGBoost가 이러한 모델 중 하나입니다!!
높은 성능을 나타내기 때문에 자주 사용되고, 파라미터 조절을 통해 최적의 모델을 만들기에 좋은 모델이라고 할 수 있습니다.
그럼 이제 본격적으로 모델링을 시작해보도록 할게요!

오늘 진행할 플로우 입니다 ㅎㅎㅎㅎㅎㅎㅎㅎㅎㅎ
꼴랑 이걸로 끝이냐구요?
ㅋㅋㅋㅋㅋㅋㅋㅋㅋ
네..ㅋ
이게 바로 브스의 매력임........
저걸로 끝이에요 징차...
이제 진짜 찐으로 시작해볼게용
0. Split Data
Split Data 블록으로
각각의 데이터 프레임을 7:3 비율로 나누면서
동시에 seed를 123으로 고정해서
Train, Test 데이터셋을 준비하고
모델링 준비를 마칠게요!
👍🏻👍🏻👍🏻👍🏻👍🏻
1. Decision Tree
ⅰ) Train - 전체 열을 대상으로 Decision Tree를 학습한다.

[ Feature Columns : 전체, Label Columns : charge] 로 입력한 뒤 학습된 모델을 살펴볼게요!
먼저 학습 결과를 보면 의사결정나무가 어떻게 생성됐는지 트리구조가 출력되어있구요

변수 중요도 살펴봐야겠죠?
전체적으로 흡연여부의 중요도가 0.61로 가장 높고
그 다음으로는 bmi는 0.21, 나이 0.13으로 중요도가 높은걸 볼 수 있어요ㅎㅎ
부양 자녀수와 성별, 거주 지역은 0.02에서 0.00 사이로 중요도가 낮은 편에 속하는 것도 확인이 되네요
ⅱ) GridSearch #GridSearch

Python Script 블록을 이용하여 최적의 파라미터를 찾아내볼게요!
이걸 왜 하냐구요?!
저어기 i번에서 Criterion, Splitter 등등 파라미터들 선택하는 부분 있죠??
그 부분을 뭘로 선택하느냐에 따라 모델 성능이 또 천차만별로 달라지거든요 ㅎㅎ
물론 베이직으로 설정된 모델로 학습시켰을 때
성능이 더 좋게 나올 수도 있어요!
하지만 best 파라미터를 찾아 학습시킨 모델의 성능이 더 좋을수도 있으니,
이렇게 그리드서치를 통해 best 파라미터를 찾아볼게요!

짜잔
이렇게 결과가 나왔습니다!
쏘 이지~~
ⅲ) Evaluate
이번엔 파라미터 튜닝 전 모델, 파라미터 튜닝 후 모델의 성능을 출력해보고,
'상관성'의 관점에서는 어떤 모델이 더 성능이 좋은지, '거리'의 관점에서는 어떤 모델이 더 성능이 좋은지 살펴볼게요.
-하이퍼 파라미터 튜닝 전

-하이퍼 파라미터 튜닝 후

상관성의 관점에서 살펴볼 수 있는 r2_score는 높을수록,
거리의 관점에서 살펴보는 mean_absolute_error(MAE)와
mean_absolute_percentage_error(MAPE)는 작을수록 좋은 모델인데요!
r2_score는 파라미터 조정 후 모델의 성능이 더 좋은걸 볼 수 있구요,
MAE와 MAPE도 조정 후 모델의 성능이 더 좋은걸 볼 수 있어요!
그럼 결론적으로는 튜닝 후 모델이 성능이 더 좋아진걸 알 수 있죠!👏🏻👏🏻
2. XGBoost
ⅰ) Train - 전체 열을 대상으로 XGBoost를 학습한다.

[ Feature Columns : 전체, Label Columns : charge, Objective : Linear regression with squared loss]
이렇게 입력한 뒤 학습된 모델을 살펴볼게요!
변수 중요도를 봐야겠죠??
앞에서 만들었던 의사결정나무와는 차이를 보이는 듯 해요.
BMI의 중요도가 0.39로 가장 높고, 다음으로는 나이, 부양자녀수, 흡연여부 순으로 중요도가 높아요.
성별, 거주 지역은 0.04에서 0.00 사이로 중요도가 낮은 편에 속하는걸 볼 수 있죠!
ⅱ) GridSearch

그리드서치를 통해 best 파라미터를 찾아볼게요!

XGBoost도 쉽게 찾을 수 있었고, 이제 마지막 차례로 가볼게요!
ⅲ) Evaluate
-하이퍼 파라미터 튜닝 전

-하이퍼 파라미터 튜닝 후

r2_score는 파라미터 조정 전 모델의 성능이 더 좋은걸 볼 수 있구요,
MAE와 MAPE도 조정 전 모델의 성능이 더 좋은걸 볼 수 있어요!
그럼 결론적으로는 튜닝 전 모델이 성능이 더 좋다는걸 알 수 있죠!ㅎㅎㅎ
(번외)
아 맞따
이번에도 빠질 수 없지
미선씨 등장하고 가실게요 ^^~ㅎ
올리는건 내가 할게. 읽는건 누가 할래?

https://noonddudung2.tistory.com/9
삼성 SDS Brightics_팀 분석 프로젝트(3)] 07. 개인 의료비🏥 예측 프로젝트✨ (Decision Tree & XGBoost Regres
안녕하세요~ 이번 주가 벌써 팀 프로젝트 3주 차네요! 지난 포스팅을 보지 못하셨다면...! 📍팀 분석 프로젝트(1)-전처리 & EDA https://blog.naver.com/noonddudung2/222849341179 📍팀 분석 프..
noonddudung2.tistory.com
https://honeyofdata.tistory.com/87
[삼성 SDS Brightics]# 03-3. 팀프로젝트(3) 의료비(보험비) 예측
안녕하세요! 브라이틱스 서포터즈 3기 서영석입니다! 이번에는 팀 프로젝트의 세번째 진행에 대한 포스팅을 가져왔습니다! 이번 포스팅의 경우, 모델의 구성과 평가지표 위주로 하여 최적의 모
honeyofdata.tistory.com
https://subinze.tistory.com/122
[삼성 SDS Brightics 서포터즈] #08_팀 프로젝트_개인 의료비 예측(3)
안녕하세요! 이번 포스팅은 팀 프로젝트 3번째 포스팅으로 팀프로젝트 분석 마지막 포스팅입니다! 이전 포스팅이 궁금하시다면 하단 링크를 클릭해주세요! [삼성 SDS Brightics 서포터즈] #06_팀 프
subinze.tistory.com
https://inhye-like.tistory.com/9
[삼성 SDS Brightics] 개인 의료비 예측(3)
안녕하세요.ㅎㅎ Brightics 서포터즈 3기 정민경입니다. 팀미션 마지막이에요! 사실 저번주에 멘토분들의 피드백을 받고 분석과정을 좀 더 변형해서 진행하였는데요, 확실히 함께하니까 내용이 더
inhye-like.tistory.com
본 포스팅은 삼성SDS Brightics 서포터즈 3기 활동의 일환으로 작성하였습니다.