- ๋์ ๊ด์ญ์ ์๊ตฌ ๋ํ๊ณต์๊ธธ 21์ ์์นํ ์ฐ์ถ๋ฆฌ ์ถ์ฐ
- 2020๋ 2์ ์ดํ๋ก ์ธ๊ณ์ ์ผ๋ก ํ์ฐ๋ ์ฝ๋ก๋ ์ ์ข ๋ฐ์ด๋ฌ์ค๋ก ์ธํด ๋งค์ถ์ ํ๊ฒฉ์ ํฐ ์ํฅ์ ์ ๊ฒ ๋ ์ํ
- ๋จธ์ ๋ฌ๋์ ํ์ฉํ์ฌ ์ผ์ผ ๋งค์ถ์ ์ค์๊ฐ์ผ๋ก ์์ธกํด ์ ์ก ์ฌ๊ณ ๊ด๋ฆฌ๋ฅผ ์ต์ ํํ๊ณ ์ต์ข ์ ์ผ๋ก ์ด์ ๋น์ฉ ์ต์ํ ๋ชฉ์
-
์ฐ์ถ๋ฆฌ ์ถ์ฐ ์ผ ๋งค์ถ ๋ฐ์ดํฐ
- ์์ ์คํ์ผ 2009-01-01 ~ ํ์ฌ ๊น์ง์ ์ผ ๋งค์ถ ๋ฐ์ดํฐ
- Excel ํ์ฉํด ์๊ธฐ๋ก ์ง์ ์์ง
-
์ง์(์ข ๊ด, ASOS) ์ผ์๋ฃ ์กฐํ ์๋น์ค
- ๊ณต๊ณต ๋ฐ์ดํฐ Open API
- ํ๊ท ๊ธฐ์จ
- ์ต์ ๊ธฐ์จ
- ์ต๊ณ ๊ธฐ์จ
- 1์๊ฐ ์ต๋ค๊ฐ์๋
- ์ผ ๊ฐ์๋
- ํ๊ท ํ์
- ์ต๋ํ์
- ํ๊ท ์๋์ต๋
- ์ต์์๋์ต๋
- 1์๊ฐ ์ต๋ค์ผ์ฌ๋
- ์ผ์ฌ๋
-
์ถ์ฐ๋ฌผ๋ฑ๊ธํ์ ์๋น์ค
- ๊ณต๊ณต ๋ฐ์ดํฐ Open API
- ํ์ฐ์ ์ก์ฐ ๋๋งค ๊ฐ๊ฒฉ
- 2009-01-01~2011-03-02 ๊น์ง๋ ์ ๊ตญ ๋๋งค ๊ฐ๊ฒฉ
- 2011-03-03~ํ์ฌ ๊น์ง๋ ์ค๋ถ๊ถ ๋๋งค ๊ฐ๊ฒฉ(๋์ ์ด ์ค๋ถ๊ถ์ ์ํจ)
- ๋ผ์ง ํ๋ฐ ๋๋งค ๊ฐ๊ฒฉ
- ๋ผ์ง ๋ฐํผ ๋๋งค ๊ฐ๊ฒฉ๋ ์์์ผ๋ ํ์ฌ ๋ผ์ง๊ณ ๊ธฐ์ ์ฝ 97%๊ฐ ๋ผ์ง ํ๋ฐ์ ์ฌ์ฉํ๊ธฐ ๋๋ฌธ์ ๋ฐํผ ๋ฐ์ดํฐ๋ ์ ์ธ
- ๋ผ์ง ํ๋ฐ๊ณผ ๋ผ์ง ๋ฐํผ์ ์ฐจ์ด์
-
๊ฒฐ์ธก์น
- ์ง์(์ข
๊ด, ASOS) ์ผ์๋ฃ ๋ฐ์ดํฐ
- ํด๋น ๋ฐ์ดํฐ ๋ณ์๋ค์ ์๋ก ์๊ด์ฑ์ด ๋๊ธฐ ๋๋ฌธ์ Pearson Correlation์ ๊ธฐ๋ฐ์ผ๋ก ํ์ฌ KNN(K-Nearest-Neighbors) Imputer ์ฌ์ฉ
- ์ง์(์ข
๊ด, ASOS) ์ผ์๋ฃ ๋ฐ์ดํฐ
-
์ด์์น
- ํ์ฐ์ ์ก์ฐ ๋๋งค ๊ฐ๊ฒฉ
- ํ์ฐ ๊ฐ๊ฒฉ์ ์ก์ฐ ๊ฐ๊ฒฉ์ ์ฝ 1.8๋ฐฐ๋ก ์ฑ ์ . ์ด๋ฅผ ์ด์ฉํด ๋ก์ง ๊ตฌํ
- ํ์ฐ ๊ฐ๊ฒฉ์ด ์๋ชป ์ฑ ์ ๋ ๋ ์ง์ผ ๊ฒฝ์ฐ โก๏ธ ํด๋น ๋ ์ง์ ์ก์ฐ๊ฐ๊ฒฉ์ ์ด์ฉํด ์ด์์น ๋์ฒด
- ์ก์ฐ ๊ฐ๊ฒฉ์ด ์๋ชป ์ฑ ์ ๋ ๋ ์ง์ผ ๊ฒฝ์ฐ โก๏ธ ํด๋น ๋ ์ง์ ํ์ฐ๊ฐ๊ฒฉ์ ์ด์ฉํด ์ด์์น ๋์ฒด
- ํ์ฐ์ ์ก์ฐ ๋๋งค ๊ฐ๊ฒฉ
-
๋ช ์ , ๊ณตํด์ผ ํ์๋ณ์ ์์ฑ
-
์ค, ์ถ์ ๋ช ์
- ์ฐ์ถ๋ฆฌ ์ถ์ฐ์ ํญ์ ๋ช ์ ๋น์ผ ์ง์ ๋ ๊น์ง ์์ ๊ฒ์
- EDA ๊ฒฐ๊ณผ, ๋ช ์ ์ด๋ฒคํธ๋ก ์ธํด ๋ช ์ ๋น์ผ ์ง์ ๋ ๋ก๋ถํฐ ๊ณผ๊ฑฐ 6์ผ๊ฐ ๋งค์ถ์ด ํ์์ ๋ค๋ฅด๊ฒ ๋งค์ฐ ๋์ ๊ฒ์ผ๋ก ๊ด์ฐฐ
- holidays ์คํ์์ค๋ฅผ ์ด์ฉํด ๋ํ๋ฏผ๊ตญ์ ๋ช
์ ๋ฐ์ดํฐ๋ฅผ ๋ฏธ๋ฆฌ ๋ก๋ํ๊ณ ํด๋น ๋ ์ง๋ก๋ถํฐ ๋ฏธ๋ 6์ผ ์ด๋ด์ ๋ช
์ ๋น์ผ ์ง์ ๋ ์ด ์กด์ฌํ๋ฉด ๊ฐ์ค์น๋ฅผ 1๋ถํฐ 6๊น์ง ์ฐจ๋ฑ์ ์ผ๋ก ๋ถ์ฌ
- ์์ ๊ฐ์ ๋ก์ง์ ์ฌ์ฉํด ์ค์๊ฐ ๋ ์ง์ ๋ช ์ ์ฐํด ๊ฐ์ค์น๋ฅผ ๋ถ์ฌํ ์ ์์
-
์ผ๋ฐ ๊ณตํด์ผ
- ์ด๋ฆฐ์ด๋ , ์๊ฐํ์ ์ผ ๋ฑ๊ณผ ๊ฐ์ด ์ผ๋ฐ ๊ณตํด์ผ์๋ ํ์์ ๋ค๋ฅด๊ฒ ๋์ ๋งค์ถ์ด ์ง๊ณ
- ๋ช ์ ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ๋์ผํ ๋ก์ง ๊ตฌํ
Train
: 2009-01-01 ~ 2020-05-03Validation
: 2020-05-04 ~ 2021-05-04(1์ผ์ฉ ๊ต์ฐจ๊ฒ์ฆ ์ํ)MAPE
: ์์ธก๊ฐ์ด ์ค์ ๊ฐ๊ณผ์ ์ฐจ์ด๊ฐ ์ผ๋ง๋ ์ฐจ์ด๋๋์ง์ ๋ํ ๋น์จ
Model | Train MAPE | Test MAPE |
---|---|---|
Prophet | 51.80% | 41.75% |
ARIMA | 63.25% | 67.43% |
Linear Regression | 43.51% | 52.20% |
Polynomial Linear Regression(2 degree) | 41.02% | 49.41% |
PLS Regression | 44.68% | 62.21% |
Random Forest | 11.10% | 34.32% |
XGBoost | 28.41% | 33.51% |
LightGBM | 22.19% | 34.22% |
LightGBM(PCA๋ก ์ฐจ์์ถ์ ) | 25.50% | 37.70% |
Hybrid Voting(Random Forest+XGBoost+LightGBM) | 20.20% | 33.35% |
LSTM(with Convolution) | 37.31% | 42.95% |
๐ก ์ต์ข
๋ชจ๋ธ : Random Forest Regressor
๐ก Optimal Hyper-parameter : n_estimators=100
, min_samples_split=2
๐ก ์์ผ๋ก ์ผ์ผ ๋ฐ์ดํฐ๋ฅผ ๊ณ์ ์์ง ํ ํ์ตํ ๊ฒ์ด๋ฏ๋ก Train MAE๊ฐ ๊ฐ์ฅ ๋ฎ์ Random Forest ์ ์
๐งท ์ต์ข
๋ชจ๋ธ ์์ธก ๊ทธ๋ํ(2009-01-01 ~ 2021-05-04)
- ์์ธกํ๊ธฐ ์ ์ ์ผ ์ฐ์ถ๋ฆฌ ์ถ์ฐ ๋งค์ถ๊ณผ ํด๋ฌด ์ฌ๋ถ๋ฅผ
today_sale
๋ณ์์remark
์ ์ ๋ ฅ - ์์ธกํ๋ ค๋ ๋ ์ค์ 8์, ์ค์ 11์์ 2์ฐจ๋ก
main.py
์ํ - ์ ๋์ค ๊ณ์ด Mac OS ์๊ฐ ๊ธฐ๋ฐ ์ก ์ค์ผ์ค๋ฌ cron ์ด์ฉ
- ์์ธก๊ฐ์ SMS๋ก ์ ๋ฌํ๊ธฐ ์ํด ์์ ์ ์ ๋ฃ SMS ๋ฐ์ก ํ๋ซํผ twiliow ํ์ฉ
from model import WoochuriPredModel
from twilio.rest import Client
import pandas as pd
print('์์ธกํ๋ ค๋ ๋ ์ง:', pd.Timestamp.now())
# Load updated crawling dataset and modeling to predict tomorrow's sale
# Setting parameters using local MySQL id, password
user, password = 'root', 'your password'
end_time = (pd.Timestamp.now() - pd.Timedelta(days=1)).strftime("%Y-%m-%d")
# run crawling, preprocess datasets, and finally prediction at one time
PredModel = WoochuriPredModel(user=user, password=password, end_time=end_time,
today_sale='must be integer', remark='ํ์ผ')
FinalDataset = PredModel.execute()
result = PredModel.run(FinalDataset)
# Sending message
account_sid = 'AC8f9d9f4c8983ee648153f5347ee027a9'
auth_token = 'your_auth_token' # customize your_auth_token
client = Client(account_sid, auth_token)
woochuri_master = '+821094125854'
message = client.messages.create(from_='+13132543287', body=result, to=woochuri_master)
print(message.sid)
- Python 3.7.7
- BeautifulSoup 4.6.0
- MySQL 8.0.21(pymysql 1.0.2)
- Pandas
- Numpy
- Scikit-learn 0.24.1
- Tensorflow 2.x
- PowerPoint
- IDE: PyCharm, Jupyter notebook
๐ twiliow ์ฌ์ฉ๋ฒ
- ๋ค์ ๋ช
๋ น์ด๋ฅผ ํฐ๋ฏธ๋์์ ์
๋ ฅ ํ ๋ค์ด๋ก๋
pip install twilio
- twilio ๊ฐ์
ํ twilio ์น ๋ธ๋ผ์ฐ์ console๋ก ์ด๋ํด
account_sid
์auth_token
ํ์ธ ํmain.py
ํ์ผ๊ณผ ๋์ผํ ์ฝ๋๋ก ๋ฉ์ธ์ง ์ ์ก