해당 포스트는 패스트 캠퍼스에 초격차 패키지 : 50개 프로젝트로 완벽하게 끝내는 머신러닝 SIGNATURE를 공부한 뒤 각색하여 복습을 위해 작성하였습니다.
프로젝트 진행과정
- 수업내용에서 배운 6 steps을 토대로 진행과정을 작성
(원래 7 steps 이지만 여기서 마지막 부분인 Model Operation 부분 생략)
![](https://velog.velcdn.com/images/owenchoi96/post/fb60b269-10f4-4262-9100-3caf07effca6/image.png)
01. Problem Definition (문제정의)
- 의류를 생산할 때 대략 8주 정도의 lead time이 있는데, 이 lead time을 고려하여 생산량을 조절하여 재고비용을 줄이고자 함
- 해당 미니 프로젝트에서는 반팔옷의 생산량을 예측하는 것에 중점을 둠
![](https://velog.velcdn.com/images/owenchoi96/post/584b338e-fcca-4c36-bc2d-9eb8d6cc1a5f/image.png)
02. Expected Effects (기대효과)
- 정량적으로 어떤 효과를 기대할 수 있을지 표현하고 싶었지만 더 자세한 데이터가 주어지지 않아 정성적으로만 기대효과 표현
![](https://velog.velcdn.com/images/owenchoi96/post/4f123bf4-5b03-4e71-bf48-a7fad29c893f/image.png)
03. Solution (해결방안)
- 두가지 방식의 모델링을 통해 적정 생산량 예측
![](https://velog.velcdn.com/images/owenchoi96/post/8cec6dd1-e709-459f-9b90-23ba3e092885/image.png)
04. Priority (우선순위 결정)
- 먼저, DeepAR 모델을 통해서 시계열 분석을 진행
- 이후, 더 많은 feature들을 통해 모델링이 가능한 RandomForest를 통해 분석 진행
![](https://velog.velcdn.com/images/owenchoi96/post/0929ab2b-2a44-41ec-97bb-ae9903f9cd99/image.png)
05. Data Analysis (데이터 분석)
- Data Check : 먼저 data를 보고 (EDA 과정) 데이터 분포 및 특징을 파악
- DeepAR Modeling : 시즌별 판매량을 예측할 수 있도록 데이터 변형 및 outlier 확인, 이후 모델을 통하여 판매량 예측
- RandomForest Modeling : 단변량 데이터를 window slice를 통해 여러개의 다변량 데이터로 변형, 이후 모델을 통하여 판매량 예측
![](https://velog.velcdn.com/images/owenchoi96/post/5e148cd2-422e-42e4-b32a-86f0179c5488/image.png)
05-1. Data Check
- Data Info Check : data의 shape, type, null values 확인
- Data Readiness Check : 시즌별 (16SS, 17SS, etc)로 groupby를 하여 시즌별 판매량을 target label로 선정
- Data sampling : 데이터가 적거나 혹은 많을 때 데이터를 수를 조정하는 단계지만, 해당 미니 프로젝트의 데이터의 수는 약 1460개로 (날짜기준) 적당하여 해당 과정은 스킵
![](https://velog.velcdn.com/images/owenchoi96/post/56dce99b-59cd-49c8-884a-a88255bfcb72/image.png)
- 데이터 명세서
![](https://velog.velcdn.com/images/owenchoi96/post/e1bb3a3c-3b8e-47a7-bbbd-33431674728f/image.png)
05-2. DeepAR Modeling
- 시계열 분석을 위해 사용할 데이터 형태 (단변량 데이터)
![](https://velog.velcdn.com/images/owenchoi96/post/a02d3d38-2117-4283-a86a-351e1262b6d4/image.png)
- 예측하고자 하는 부분 → 갑자기 판매량이 뚝 떨어지는 부분
- 이 부분을 예측해야 생산량을 조절하여 재고비용 축소 가능
![](https://velog.velcdn.com/images/owenchoi96/post/45417fd7-38aa-49b8-80e7-2b060bd755bb/image.png)
- 그런데 outlier가 있는 경우 → 이 미니 프로젝트에서는 '큰손'들이 물건을 대량으로 구매 후 몇개만 구매하고 다시 대량으로 환불하는 경우 → 전처리 필요
- 해당 부분 처리 후 데이터 모양이 안정화 되는 것 확인
![](https://velog.velcdn.com/images/owenchoi96/post/a33e610e-fab1-4d07-9c88-f4d024ecb7ce/image.png)
- DeepAR 모델
→ LSTM 기반의 확률론적 시계열 예측 딥러닝 모델
→ 기존 통계에 기반한 모델들과 달리 수백, 수천만개의 방대한 다중 시계열 데이터 기반 예측 가능
![](https://velog.velcdn.com/images/owenchoi96/post/a41ab91b-6488-4573-8989-0a1de82933fe/image.png)
- 사용 패키지, 진행 과정, 코드
![](https://velog.velcdn.com/images/owenchoi96/post/38e4f5fe-b258-4efc-b2f8-99af2ea09aa5/image.png)
05-3. RandomForest Modeling
- RandomForest 모델 소개
![](https://velog.velcdn.com/images/owenchoi96/post/070a832e-49b4-4978-a3d9-20d1f642cb4c/image.png)
- 모델링 이전 데이터 변환
→ 단변량의 데이터로는 RandomForest 모델을 통해 좋은 성능을 얻기 어렵기 때문에, 다변량 데이터로 변환
→ 기울기, 표준편차, 평균, 왜도, 첨도, 최소값, 최대값 등의 통계 기반의 feature 추출
![](https://velog.velcdn.com/images/owenchoi96/post/e1edbcc6-3f42-4bbd-907b-22a4d1de2eff/image.png)
- 사용 패키지, 진행 과정, 코드
![](https://velog.velcdn.com/images/owenchoi96/post/946dcd66-3249-4828-98c6-ff65b11d6ba2/image.png)
- RandomForest 모델 기준으로, hyper-parameter를 조절했을 때, loss가 점점 줄어드는 것을 확인 가능
- 또한, 직접 그래프로 나타냈을 때 주황색 (예측값)이 점점 파란색 선 (label 값)에 가까워지는 것을 확인
![](https://velog.velcdn.com/images/owenchoi96/post/451bcf6e-106d-49ef-981a-96524ab6dfd4/image.png)
06. Lesson Learned
- 시계열 분석에서 가장 중요한 부분
- 데이터 확인이 무엇보다 중요한 분석이 시계열 분석
- 날짜형 데이터 타입을 다룰 때, 날짜 형식이 다를 수 있으므로 확인 필요 (UTC, KST) → 현업에서 이러한 기본적인 것이 중요
- 날짜 사이에 결측치가 있는지 확인필요 → 결측치 있으면 다 틀어질 수 있음
- 모델링을 할 때, 데이터의 특성을 가장 잘 반영할 수 있는 hyper-parameter 세팅 필요
- 단변량 데이터만으로 시계열 특성이 충분히 반영되지 않을 때
- 단변량 데이터를 window size를 기준으로 다변량 feature 생성
- 요일별로 특성을 나타내는 경우 효과가 좋은 경우가 있음
- Feature를 추가할 때는 어떠한 이유 혹은 목적으로 추가하게 되었는지 설명할 수 있어야 함
- GMT, UTC, KST 정리
- GMT (Greenwich Mean Time)
- 영국의 그리니치 천문대를 기준으로 태양의 위치를 측정하여 만든 표준시
- UTC (Coordinated Universal Time)
- 세계 표준시 (GMT는 주로 영국 등 일부 국가에서만 이용하는 시간대)
- KST (Korean Standard Time)
*참고자료
여기까지 읽어주신 분이 계시다면 부족하지만 감사드립니다:)