안녕하세요! Brightics 서포터즈 3기
입니다.
오늘은 DACON 물류 유통량 프로젝트의
모델링 과정에 대해 소개해보도록 하겠습니다!

아직 개인미션 1탄과 2탄, 3탄을 안 보셨다면
이번 포스팅의 모델링 과정을 이해하시기 조금 어려우실테니
아래의 링크를 참고해주세요^0^
아직 개인미션 1탄과 2탄, 3탄을 안 보셨다면
이번 포스팅의 모델링 과정을 이해하시기 조금 어려우실테니
아래의 링크를 참고해주세요^0^
전체 Flow

오늘 소개해드릴 과정의 전체 Flow는 다음과 같습니다!
지난 포스팅의 전체 Flow에 비해 뭔가 많아진 것 같아보이시다면...
정답입니다...!!
모델을 선택하는 과정도, predict 오류도 계속 발생해서
제가 Brightics 서포터즈를 하며 진행했던 미션 중에 가장 어렵지 않았나...싶습니다.
시간이 조금 걸렸지만 그래도...! 해결했어요^__^ 하핫
문제파악

모델링에 들어가기 앞서 살짝 복습을 진행해보겠습니다.!!
제가 사용하는 data는 총 3개로
노락색 박스는
train_df.csv
index : 인덱스
송하인_격자공간고유번호
수하인 격자공간고유번호
택배_카테고리
운송장_건수
초록색 박스는
test_df.csv
index : 인덱스
송하인_격자공간고유번호
수하인 격자공간고유번호
택배_카테고리
파란색 박스는
sample_submission.csv
index : 인덱스
운송장_건수
이렇게였습니다!
그런데 여러분....
train과 test 데이터셋의 차이가 보이시나요??
...
바로 운송장_건수가 없다는 것...!!!
test에 이번 분석의 목적인 운송장_건수가 없다면
train을 통해 만든 모델로 predict를 evaluate할 수가 없다는게 당연하죠ㅠ.ㅠ
저는 그것도 모르고
냅다 regression predict에 넣고
evaluate를 하려니 운송장_건수가 없고 prediction만 덜렁 남아있더라고요...ㅋㅋㅋ
살짝 멘붕~
이 문제를 어떻게 해결했냐!
는 밑에서 확인하실 수 있습니다ㅎㅎ
문제해결
이 문제를 해결하기 위해서는
제공된 sample submission의 index와 test의 index를 bind한 후에
regression predict에 out_table로 넣어주어야 했어요
자 그럼 이제부터 차근차근 설명해드리겠습니다!!

1) Bind Row Column

Brightics studio의 해당 함수를 사용해서
index가 공통되는 열이기 때문에
index를 기준으로 bind를 진행해주었습니다!
first_table에 test의 select column
second_table에 sample_submission의 load가
table로 들어간 모습을 확인하실 수 있으신가요??
오른쪽의 결과 table을 보시면
index_first, index_second 등의 열이름을 확인하실 수 있습니다!
해당함수는 어느 하나의 열을 삭제하지 않고 모든 열을 나타내주네요~
이후 저는 column을 선택해 bind해주었습니다.
2) Select column
자 그렇다면 모델링에 필요한 열만 선택하는 단계가 필요해요!

저는 모델에 필요한
송하인_격자공간고유번호
수하인_격자공간고유번호
물품_카테고리_index
운송장_건수
이렇게 4개의 열을 선택해주었어요
또한 train의 column name과 맞추기 위해서
추가된 _first, second 등의 단어도 삭제해주었습니다~!!
모델링

이번 분석에서 사용한 회귀모델은
XGB Regression
Random forest Regression
총 2개의 회귀모델을 사용해주었습니다.
하나씩 설명드리겠습니다
1) XGB Regression
XGBoost Regession은
eXtreme Gradient Boosting의 약자로
여러 Decision Tree를 조합 후 가중치를 고려해
Boosting을 통한 앙상블 알고리즘을 사용하는 회귀모델입니다.
오버피팅에 강하고, 유연성이 좋아
다른 알고리즘과 연계해 앙상블 학습이 가능하다는 장점이 있습니다.

저는 train의 select column을 out_table로 활용해
Feature column을
송하인_격자공간고유번호 수하인_격자공간고유번호 물품_카테고리_index
Label column을
운송장_건수
으로 선택해주었습니다!
저희가 예측하고자 하는 건 운송장 건수이니까요ㅎㅎ

학습 결과를 보시면
그래프의 한글이 깨져있기는 하지만
1. 송하인_격자공간고유번호 0.51506025
2. 물품_카테고리_index 0.3554217
3. 수하인_격자공간고유번호 0.12951808
위와 같은 순위로 Feature importance를 가진 것을 확인하실 수 있습니다!
2) Random forest Regression
Random forest Regression은
Dection tree에 쓰이는 특성을 random하게 선택 후
여러 Dection tree를 이용한 모델입니다.
결측치를 다루기 좋고, 오버피팅 방지에 효과적이라는 장점이 있습니다!

역시 train의 select column을 out_table로 활용해
Feature column을
송하인_격자공간고유번호 수하인_격자공간고유번호 물품_카테고리_index
Label column을
운송장_건수
으로 선택해주었습니다!

마찬가지로 Feature importance를 확인해보면
1. 송하인_격자공간고유번호 0.41
2. 수하인_격자공간고유번호 0.38
3. 물품_카테고리_index 0.21
위와 같은 순위로 Feature importance를 가진 것을 확인하실 수 있습니다!
(한글... 왜 깨져있을까요..
표에서는 잘 나타나는데 왜 그래프 column에서 갑자기...!!)
3) Predict
예 이제 대망의 predict네요!!!

predict에서 가장 중요한 것은 input을 제대로 설정했는가 입니다
Input에는 table와 model을 넣어주어야 하는데
여러분 어떤 걸 넣어야 올바를지 감이 좀 오시나요~~??
바로
table에는 위에서 언급한 test와 sample_submission이 합쳐진 select coumn을
model은 train을 통해 만든 regression_train을 선택해주시면 됩니다!^^
정리
이것으로 오늘 포스팅의 모델링 과정은 완료했습니다!
다음 포스팅에서는 모델 평가 시간을 가져보도록 하겠습니다^~^
(약간의 tmi)
사실 지난 팀미션에서도 비슷하게 Dacon의 데이터로 분석을 진행했었는데요
그 당시에는 python script를 사용해 model의 train과 predict, sample submission의 index합치는 과정을 한 번에 진행했기 때문인지
이번에는 Brightics studio을 활용해 나누어서 분석하려다보니
순서가 헷갈려서 고생했던 것 같아요^^::
여러분은 비슷한 실수하지 마시길...!
그럼 다음 포스팅으로 찾아뵙도록 하겠습니다!!!
감사합니다ㅎㅎ

* 본 포스팅은 삼성SDS Brightics 서포터즈 3기 활동의 일환으로 작성하였습니다.
#삼성SDSBrightics#삼성SDS#Brightics#Brightics서포터즈#Brightics서포터즈3기#BrighticsStudio#브라이틱스#모델링#데이터분석#코딩없이데이터분석#브라이틱스와함께하는데이터분석#노코드AI오픈소스#노코드AI
'삼성 SDS Brightics' 카테고리의 다른 글
| [삼성 SDS Brightics] 17. DACON 물류 유통량 예측_개인미션 6탄(결과정리) (0) | 2022.11.14 |
|---|---|
| [삼성 SDS Brightics] 16. DACON 물류 유통량 예측_개인미션 5탄(모델평가) (1) | 2022.11.03 |
| [삼성 SDS Brightics] 14. DACON 물류 유통량 예측_개인미션 3탄(데이터전처리② Feat. 노코드 AI 오픈소스) (0) | 2022.10.18 |
| [삼성 SDS Brightics] 13. DACON 물류 유통량 예측_개인미션 2탄(데이터전처리①) (0) | 2022.10.08 |
| [삼성 SDS Brightics] 12. DACON 물류 유통량 예측_개인미션1탄 (0) | 2022.10.06 |


