๋ฐ๋์ README์ ์ฝ๋๋ฅผ ๊ฐ์ด ๋ด์ฃผ์ธ์
<๊ตฌ์ฑ ์ค๋ช
>
final_result_ipynb => ์ต์ข
๊ตฌํ์ฝ๋ ๋ฐ ์๊ฐํ์ฝ๋
dataset => raw dataset
wd => RNR ๋ฐฐ๋ถ ์์
ํด๋
temp_result => ์์
์ค ์์ ์ ์ฅ๋ ๋ฐ์ดํฐํ๋ ์๋ค
final_result_answer => ์ ์ถ๋ ๋ผ๋ฒจ๋ง ๋ฐ์ดํฐ์
- ๋ถ์ ์ฃผ์
- ๋ถ์ ๋ฐฐ๊ฒฝ
- ๋ฐ์ดํฐ ๋ฐ ์ ์ฒด ํ์ดํ๋ผ์ธ ์ค๋ช
- ๋ฐ์ดํฐ ๊ฒฐ์ธก์น ํ์ธ
- ๋ฐ์ดํฐ index ๋ณ๊ฒฝ
- ๋ฐ์ดํฐ describe ๋ฐ visualization
- ์๊ด๊ด๊ณ ๋ถ์
- ๊ฒฐ์ธก์น ์๊ฐํ
- ์ ํ ๋ณด๊ฐ๋ฒ
- ์๊ฐ๊ธฐ์ค ๋ณด๊ฐ๋ฒ
- Train / Test split
- ๋ค๋ณ์ ๋์น
- KNN ๋ณด๊ฐ๋ฒ
- ์๋ฒ๋ณ Fail ๋น์จ ๊ตฌํ๊ธฐ / ๊ฐ ์๋ฒ๋ณ ๋ฐ์ดํฐ split
- Autocorrelation visualizaition
- Stationarity ์๊ฐํ
- ADF Test
- ์๋ฒ๋ณ ์๊ด๊ณ์
Unsupervised Learning
- K_Means
- Isolation Forest
Neural Network
- LSTM-AE
์ค์๊ฐ OTT ์๋น์ค ์ด์ฉ์ ์ ์ถ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ด์ ๋ฐ์ ์์ ์ ํ์ง
์คํธ๋ฆฌ๋ฐ ๋ฐ OTT ์๋น์ค๊ฐ ๋งค์ฐ ๋ง์์ง๊ณ ์๋ ์์ฆ์, ๋๊น์์ด ์์ ์ ์ผ๋ก ์๋น์ค๋ฅผ ์ ๊ณตํ๋ ๊ฒ์ด ๊ธฐ์ ์๊ฒ๋ ์๋น์ ๊ฒฝํ์๋ ๋งค์ฐ ์ค์ํ๋ค.
์ค์๊ฐ ์ ๊ณต๋๋ ์คํธ๋ฆฌ๋ฐํ ์๋น์ค๋ค์ stability๋ฅผ ์ ํ์ํค๋ ์์ธ์ ๋๊ฐ ์ ๊ณตํ๋ ์๋ฒ ๋ฐ ๋คํธ์ํฌ ๊ณผ๋ถํ์ ๋ฌ๋ ค์๋ค. ํนํ๋ ํน์ ์๊ฐ์ ์ ์ ๊ฐ ๊ธ๊ฒฉํ๊ฒ ๋ชฐ๋ฆฌ๊ฒ๋๋ฉด ํธ๋ํฝ ๋ํ ๊ธ๊ฒฉํ๊ฒ ์ฆ๊ฐํด ์๋น์ค ์ ๊ณต์ ์ฐจ์ง์ด ์๊ธด๋ค. ์ฝ๋ก๋ 19 ์ฅ๊ธฐํ์ ๋ฐ๋ผ ๋คํธ์ํฌ ํธ๋ํฝ์ด ํฌ๊ฒ ์ฆ๊ฐํ์ผ๋ฉฐ, ํนํ๋ ์คํธ๋ฆฌ๋ฐ ์๋น์ค ๊ธฐ์ ๋ค์ ํฌ๊ฒ ์ํฅ์ ๋ฐ๊ณ ์๋ค. ๋ํ๋ฏผ๊ตญ์ ๋คํธ์ํฌ ์ธํ๋ผ๊ฐ ์ ๊ตฌ์ถ๋์ด์์ด ์์ง๊น์ง ๋ฌธ์ ๊ฐ ์์์ผ๋, ๋ทํ๋ฆญ์ค ๋ฑ์ ํด์ธ ๊ธฐ์ ๋ค์ ๊ธฐ๋ณธ ์คํธ๋ฆฌ๋ฐ ํ์ง์ ๋ฎ์ถ๊ณ ๋ค์ด๋ก๋ ์๋๋ฅผ ๋ฆ์ถ๋ ๋ฑ ์ฌ์ฉ์ ๊ฒฝํ ๋ง์กฑ์ ๋จ์ด๋จ๋ ค์๋ผ๋ ๋คํธ์ํฌ ๊ณผ๋ถํ ๋ฐฉ์ง์ ์ด๋ ฅ์ ๊ธฐ์ธ์ด๋ ์ค์ด๋ค.
๋ฐ๋ผ์ ์ค์๊ฐ OTT ์๋น์ค ์ด์ฉ์ ์ ์ถ์ด๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์ด์ ๋ฐ์ ์์ ์ ํ์ง ๋ฐ ๋ผ๋ฒจ๋งํ ๊ฒ์ด๋ค. ํด๋น ๋ถ์์ ๊ฒฐ๊ณผ๋ ํจํด ๋ฑ์ ์ฐ๊ตฌํ์ฌ ๊ธ๊ฒฉํ๊ฒ request๊ฐ ์ฆ๊ฐํ๋ ๊ฒฝ์ฐ ํด๋น ์๊ฐ์๋ง ์คํธ๋ฆฌ๋ฐ ํ์ง์ ๋ฎ์ถ๊ฑฐ๋ ๋ค์ด๋ก๋ ์๋๋ฅผ ๋ฆ์ถ๋ ๋ฑ์ ๋ฐฉ์์ผ๋ก ํ์ฉํ ์ ์์ ๊ฒ์ด๋ค.
๋ฐ์ดํฐ ์ค๋ช
๋ฐ์ดํฐ ์ถ์ฒ: AIFactory ๋คํธ์ํฌ ์ง๋ฅํ๋ฅผ ์ํ ์ธ๊ณต์ง๋ฅ ํด์ปคํค
๋ฏธ๋์ด ์๋ฒ 13์ข ์ผ๋ก๋ถํฐ ์์ง๋ 5๋ถ ์ฃผ๊ธฐ์ ํธ๋์ญ์ ๋ฐ์ดํฐ 24๊ฐ์์น๊ฐ ์ ๊ณต
ํ์ผ๋ช ์ค๋ช :
INFO: ์ํ ๊ฐ์ /ํด์ง, ์ฝ๊ด ๋์, ๊ตฌ๋งค, ํฌ์ธํธ ์กฐํ๋ฅผ ์ํ ์๋ฒ
LOGIN: ๋ก๊ทธ์ธ, ๋ณธ์ธ ์ธ์ฆ, PIN ๊ด๋ฆฌ๋ฅผ ์ํ ์๋ฒ
MENU: ์ด๊ธฐ ๋ฉ๋ด, ์ฑ๋ ์นดํ ๊ณ ๋ฆฌ ๋ฉ๋ด ์ ๊ณต์ ์ํ ์๋ฒ
STREAM: VOD ์คํธ๋ฆฌ๋ฐ์ ์ํ ์๋ฒ
๋ฐ์ดํฐ ์ปฌ๋ผ ์ค๋ช *์๋ฒ ์ ํ ๋ณ ์ ๊ณต๋๋ ์ปฌ๋ผ์ ์ผ๋ถ ์ฐจ์ด๊ฐ ์์์ ์๋ด๋๋ฆฝ๋๋ค (์์ธํ ์ฌํญ์ ๋ฒ ์ด์ค๋ผ์ธ ์ฝ๋ ์ฐธ์กฐ)
Timestamp: [YYYYMMDD_HHmm(a)-HHmm(b)] ํ์์ ๊ฐ์ง๋ฉฐ
์์ง ๋ฒ์๋ YYYY๋ MM์ DD์ผ HH์ mm๋ถ(a)๋ถํฐ HH์ mm๋ถ(b)
Server: ์์ง ์๋ฒ ๋ถ๋ฅ(ํ์ผ๋ช ์ค๋ช ์ฐธ๊ณ )
Request: ์์ง ๋ฒ์ ๋ด ๋ฐ์ํ ์๋น์ค ์์ฒญ ์
Success: ์์ง ๋ฒ์ ๋ด ๋ฐ์ํ ์๋น์ค ์์ฒญ ์ฑ๊ณต ์
Fail: ์์ง ๋ฒ์ ๋ด ๋ฐ์ํ ์๋น์ค ์์ฒญ ์คํจ ์
Session: ์์ง ์์ ์ ๋ฏธ๋์ด ์คํธ๋ฆฌ๋ฐ ์ธ์ ์
์๋ฒ ์ค ํ๋๋ผ๋ ์ด์์ด๋ผ๋ฉด ์ต์ข ์ด์์ด๋ผ ๊ฐ์ฃผ
ํ์ดํ๋ผ์ธ
-
EDA & Preprocessing
-
modeling (kmeans, isolation forest, LSTM-AE)
-
model run
-
result visualization
-
result score (check answer score by F2 score evaluation in AIFACTORY)
-
adjust hyperparameter and re-score
(unsupervised๋ ๋ฐ๋ณต๋ฌธ์ผ๋ก๋ ์๊ฐ์ด ๋๋ฌด ์ค๋๊ฑธ๋ฆฌ๊ณ ide ๋ฉ๋ชจ๋ฆฌ๊ฐ ์ด๊ณผ๋์ด lstm-ae ๊ฒฐ๊ณผ๋ฅผ ์ฐจ์ฉํด์ outlier_fraction์ ์ ์ ํ์ต๋๋ค.)
- ๋ฐ์ดํฐ ๊ฒฐ์ธก์น ํ์ธ => timestamp index๋ ์ฐ์๋์ด ๋ฌธ์ ์์ง๋ง ์ปฌ๋ผ๋ง๋ค ๊ฒฐ์ธก์น๊ฐ ์กด์ฌ
- ๋ฐ์ดํฐ describe ๋ฐ visualization => ์ฐ์์ ์ธ ๋ฐ์ดํฐ๋ฅผ ๊ด์ฐฐํ ๊ฒฐ๊ณผ Request์ Fail์ด ํฌ๊ฒ ์์นํ๋ ์ง์ ๋ค์ ํ์ธ ๊ฐ๋ฅ
- ์๊ด๊ด๊ณ ๋ถ์ => fail ๋ฐ์ดํฐ์ ์๊ด๊ณ์๋ ์๋์ ์ผ๋ก ๋ฎ์์ ํ์ธํ ์ ์์.
- ๊ฒฐ์ธก์น ์๊ฐํ
Info์ Loggin ์ ๊ณต ๋ฐ์ดํฐ์ ๊ฒฐ์ธก์น๊ฐ ๋ง์์ ํ์ธ๊ฐ๋ฅ
์ค๋ฅธ์ชฝ์ ์คํํฌ๋ผ์ธ์ ๋ฐ์ดํฐ ์์ ์ฑ์ ์ผ๋ฐ์ ์ธ ๋ชจ์์ ์์ฝํ๊ณ ๋ฐ์ดํฐ์ธํธ์์ ์ต๋ ๋ฐ ์ต์ nullity๊ฐ ์๋ ํ์ ๋ํ๋
๋ด๋๋ก๊ทธ๋จ์ ์ฌ์ฉํ๋ฉด ๋ณ์ ์์ฑ์ ์๊ด ๊ด๊ณ๋ฅผ ๋ณด๋ค ์๋ฒฝํ๊ฒ ํ์ ํ ์ ์์ผ๋ฏ๋ก ์๊ด ๊ด๊ณ ํํธ๋งต์์ ๋ณผ ์ ์๋ ์๋ณ ์ถ์ธ๋ณด๋ค ๋ ๊น์ ์ถ์ธ๋ฅผ ํ์ธํ ์ ์์. ๋ด๋๋ก๊ทธ๋จ์ ๊ณ์ธต์ ํด๋ฌ์คํฐ๋ง ์๊ณ ๋ฆฌ์ฆ ( ์ ์ ๊ณต scipy )์ ์ฌ์ฉํ์ฌ nullity ์๊ด ๊ด๊ณ(์ด์ง ๊ฑฐ๋ฆฌ๋ก ์ธก์ )๋ฅผ ํตํด ๋ณ์๋ฅผ ์๋ก ๋น๋. ํธ๋ฆฌ์ ๊ฐ ๋จ๊ณ์์ ๋๋จธ์ง ํด๋ฌ์คํฐ์ ๊ฑฐ๋ฆฌ๋ฅผ ์ต์ํํ๋ ์กฐํฉ์ ๋ฐ๋ผ ๋ณ์๊ฐ ๋ถํ ๋จ. ๋จ์กฐ๋ก์ด ๋ณ์ ์งํฉ์ด ๋ง์์๋ก ์ ์ฒด ๊ฑฐ๋ฆฌ๊ฐ 0์ ๋ ๊ฐ๊น๊ณ ํ๊ท ๊ฑฐ๋ฆฌ(y์ถ)๊ฐ 0์ ๋ ๊ฐ๊น์. ์ด ๊ทธ๋ํ๋ฅผ ํด์ํ๋ ค๋ฉด ํํฅ์ ๊ด์ ์์ ์ฝ์ด์ผ ํจ. 0์ ๊ฑฐ๋ฆฌ์์ ํจ๊ป ์ฐ๊ฒฐ๋ ํด๋ฌ์คํฐ ์์ ์๋ก์ ์กด์ฌ๋ฅผ ์์ ํ ์์ธก. ํ ๋ณ์๋ ๋ค๋ฅธ ๋ณ์๊ฐ ์ฑ์์ง ๋ ํญ์ ๋น์ด ์๊ฑฐ๋ ํญ์ ๋ ๋ค ์ฑ์์ง๊ฑฐ๋ ๋ ๋ค ๋น์ด ์์ ์ ์์. ์ด ํน์ ์์์ ๋ด๋๋ก๊ทธ๋จ์ ํ์ํ๋ฏ๋ก ๋ชจ๋ ๋ ์ฝ๋์ ์กด์ฌํ๋ ๋ณ์๋ฅผ ํจ๊ป ๋ถ์.
- ์ ํ ๋ณด๊ฐ๋ฒ
๊ฒฐ์ธก์น๊ฐ 0์ผ๋ก ์ฒ๋ฆฌ๋จ.
- ์๊ฐ๊ธฐ์ค ๋ณด๊ฐ๋ฒ โ nan๊ฐ์ด ์ฐ์๋๋ค๋ฉด ๋ณด๊ฐ๋์ง ์์. โ ์๊ฐ์ ๋ฐ๋ผ ๋น๋กํ์ฌ ๊ฐ์ด ์ ๋ ฅ๋จ.
์๊ฐ๊ธฐ์ค ๋ณด๊ฐ๋ฒ ๊ฒฐ๊ณผ
- Train / Test split โ 2017๋ ์ Train, 2018๋ ์ Test๋ก ์ฌ์ฉ
- ๋ค๋ณ์ ๋์น
IterativeImputer ํด๋์ค๋ ๋๋ฝ ๋ ๊ฐ์ด์๋ ๊ฐ ๊ธฐ๋ฅ์ ๋ค๋ฅธ ๊ธฐ๋ฅ์ ํจ์๋ก ๋ชจ๋ธ๋งํ๊ณ ํด๋น ์ถ์ ์น๋ฅผ ๋์น์ ์ฌ์ฉ. ๋ฐ๋ณต๋ ๋ผ์ด๋ ๋ก๋น ๋ฐฉ์์ผ๋ก ์ํ. ๊ฐ ๋จ๊ณ์์ ํน์ฑ ์ด์ ์ถ๋ ฅ y ๋ก ์ง์ ๋๊ณ ๋ค๋ฅธ ํน์ฑ ์ด์ ์ ๋ ฅ X ๋ก ์ฒ๋ฆฌ . ํ๊ท ๋ณ์๋ ์๋ ค์ง y์ ๋ํด (X, y) ์ ์ ํฉ. ๊ทธ๋ฐ ๋ค์ ํ๊ท ๋ณ์๋ฅผ ์ฌ์ฉํ์ฌ y์ ๊ฒฐ์ธก๊ฐ์ ์์ธก. ์ด๋ ๊ฐ ๊ธฐ๋ฅ์ ๋ํด ๋ฐ๋ณต์ ์ธ ๋ฐฉ์์ผ๋ก ์ํ๋ ๋ค์ max_iter ๋์น๋ผ์ด๋์ ๋ํด ๋ฐ๋ณต๋๊ณ ์ต์ข ๋์น๋ผ์ด๋์ ๊ฒฐ๊ณผ๊ฐ return.
์์๊ฐ์ด return๋จ.
- KNN ๋ณด๊ฐ๋ฒ
Request = Success+Fail ๊ฐ์ด ์ฌ๋ฐ๋ฅด๊ฒ ๋์ด. K-NN(k nearest neighbours) ์ด๋ classification์ ์ฌ์ฉ๋๋ ๊ฐ๋จํ ์๊ณ ๋ฆฌ์ฆ. 'feature similarity'๋ฅผ ์ด์ฉํด ๊ฐ์ฅ ๋ฎ์(๊ทผ์ ํ) ๋ฐ์ดํฐ๋ฅผ K๊ฐ๋ฅผ ์ฐพ๋ ๋ฐฉ์.
2017๋ (Train)
2018๋ (Test)
- ์๋ฒ๋ณ Fail ๋น์จ ๊ตฌํ๊ธฐ
โ column๋ช ์ request๊ฐ ์์ผ๋ฉด, request ๋ค์ํ์ธ success๋ฅผ request์๋ ์ด๋ก ๋๋ ์ฑ๊ณต ๋น์จ ํ์ ๋๋ ์ฃผ๊ณ , request๊ฐ 0์ธ ๊ฒฝ์ฐ์๋ nan์ด ๋ฐ์ํ๋ฏ๋ก fillna(0)
- Autocorrelation visualization โ ์๊ณ์ด์๋ฃ๋ฅผ ๋ค๋ฃจ๋ฏ๋ก ์ฐ์๋๋ ์ค์ฐจํญ๋ค์ ์๊ด๊ฐ๋ฅ์ฑ ์๊ฐํ
ex)
- Stationarity ์๊ฐํ โ ํ๊ท ๊ณผ ๋ถ์ฐ ์ด์ฉ
ex)
final_pipeline ipynb ํ์ธ ํ์ ex) visualization ์์
- ADF Test
stationary ํต๊ณ์ ๊ฒ์ ์ผ๋ก stationary์ ๊ฒฝ์ฐ๋ ์๊ฐ์ด ๋ณํด๋ ์ผ์ ํ ๋ถํฌ๋ฅผ ๋ฐ๋ฅด๋ ๊ฒฝ์ฐ๋ฅผ ๋งํ๊ณ , non-stationary์ ๊ฒฝ์ฐ๋ ์๊ฐ์ด ๋ณํด๋ ์ผ์ ํ ๋ถํฌ๋ฅผ ๋ฐ๋ฅด์ง ์๋ ๊ฒฝ์ฐ๋ฅผ ๋งํจ. ๋ณ์๋ณ ADF Test ์งํ
๊ฒฐ๊ณผ์ ์ผ๋ก ADF Test ์ ํต๊ณผ
- ์๋ฒ๋ณ ์๊ด๊ณ์
success์ request๋ ์๊ด๊ด๊ณ๊ฐ ๋์์ request, fail, ratio 3๊ฐ์ง feature๋ฅผ ์ถ์ถ
ex)
final_pipeline ipynb ํ์ธ ํ์ ex)correlation ์์
simple concept
clustering๋ฅผ ์ํํ๊ณ cluster์ ํ ๋นํ์ง ์๋ ๊ฐ์ฒด๋ค์ ์ด์์น๋ก ์ทจ๊ธํ๋ค. Anomaly Score by K-Means Clustering-based Anomaly Detection(KMC) โ ์ ๋์ ๊ฑฐ๋ฆฌ : A anomaly score (a1) = B anomaly score (b1) โก ์๋์ ๊ฑฐ๋ฆฌ : A anomaly score (a1/a2) < B anomaly score (b1/b2)
outliers_fraction โ hyper_parmeter. annomaly ์์ row์ ๊ฐฏ์๊ฐ ๋ชจ๋ column์ ๋์ผํ๊ฒ ๋์ด, ์ต์๊ฐ์ threshold๋ก ์ง์
์ ๋ต๋ฐ์ดํฐ score๋ฅผ ๋ณด๋ฉด์ outlier_fractions๋ฅผ ๋ณ๊ฒฝํด์ผ ํจ.
cluster์ point๊ฐ ๊ฑฐ๋ฆฌ ๊ณ์ฐ
outliers_fraction โ hyper_parmeter. annomaly ์์ row์ ๊ฐฏ์๊ฐ ๋ชจ๋ column์ ๋์ผํ๊ฒ ๋์ด, ์ต์๊ฐ์ threshold๋ก ์ง์ labeling์ 2๊ฐ๋ก๋ง ๋๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ n_clusters๋ 2๋ก ๊ณ ์ ย
simple concept
Tree๋ฅผ ์ด์ฉํ anomaly detection์ ์ํ unsupervised algorithm.
Regression Decision Tree๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์คํ๋จ.
Regression Tree๊ฐ ์ฌ๊ท ์ด์ง ๋ถํ ์ ์ด์ฉํ์ฌ ์์ญ์ ๋๋๋ ๊ฐ๋ ์ ์ด์ฉ
(์ง์ ์ ๋ถ๋ฆฌํด์ ๊ฒฉ๋ฆฌํ๋๋ฐ ํ์ํ ํํฐ์ ์ ์ = ๋ฃจํธ ๋ ธ๋~)
์ ์ ๋ฐ์ดํฐ โ ๋ง์ ์ฌ๊ท ์ด์ง๋ถํ
๋น์ ์ ๋ฐ์ดํฐ โ ์๋์ ์ผ๋ก ๋ ์ ์ ๋ถํ
์ฆ depth๊ฐ ์งง์ ์๋ก ๋น์ ์ ๋ฐ์ดํฐ์ ๊ฐ๊น๋ค๊ณ ํ๋จ
์ฅ์ : ํด๋ฌ์คํฐ๋ง anomaly detection algorithm์ ๋นํด ๊ณ์ฐ๋์ด ๋งค์ฐ ์ ๊ณ Robustํ ๋ชจ๋ธ์ ๋ง๋ค ์ ์์.
outliers_fraction โ hyper_parmeter. annomaly ์์ row์ ๊ฐฏ์๊ฐ ๋ชจ๋ column์ ๋์ผํ๊ฒ ๋์ด, ์ต์๊ฐ์ threshold๋ก ์ง์
์ ๋ต๋ฐ์ดํฐ score๋ฅผ ๋ณด๋ฉด์ outlier_fractions๋ฅผ ๋ณ๊ฒฝํด์ผ ํจ.
clustering๊ณผ ๋์ผํ๊ฒ outliers_fraction(contamination) ์ง์ ์ด ํ์
result
final_pipeline ipynb ํ์ธ ํ์ ex) kmeans result ์์
kmeans ์ด์์น ๊ฐ์
final_pipeline ipynb ํ์ธ ํ์ ex) isolation forest result ์์
If ์ด์์น ๊ฐ์
๋ ผ๋ฌธ ์ฐธ๊ณ
LSTM-based Encoder-Decoder for Multi-sensor Anomaly Detection (ICML 2016)
(Pankaj Malhotra, Anusha Ramakrishnan, Gaurangi Anand, Lovekesh Vig, Puneet Agarwal, Gautam Shroff)
LSTM?
basicํ RNN(Vanila RNN)๊ตฌ์กฐ์ the problem of Long-Term Dependencies(์ฅ๊ธฐ์์กด์ฑ ๋ฌธ์ )๋ฅผ ํด๊ฒฐํ๊ธฐ ์ํด ๋ง๋ค์ด์ง ๋ชจ๋ธ
RNN์ ๊ด๋ จ ์ ๋ณด์ ๊ทธ ์ ๋ณด๋ฅผ ์ฌ์ฉํ๋ ์ง์ ์ฌ์ด ๊ฑฐ๋ฆฌ๊ฐ ๋ฉ ๊ฒฝ์ฐ ์ญ์ ํ์ ๊ทธ๋๋์ธํธ๊ฐ ์ ์ฐจ ์ค์ด ํ์ต๋ฅ๋ ฅ์ด ํฌ๊ฒ ์ ํ๋จ.
RNN์ฒ๋ผ neural network layer ํ ์ธต ๊ตฌ์ฑ ๋์ , LSTM์ 4๊ฐ์ layer์ cell state๋ก ๊ตฌ์ฑํ์ฌ iteration์ด ์ฆ๊ฐ(state๊ฐ ์ค๋ ๊ฒฝ๊ณผํ๋๋ผ๋) ๊ทธ๋๋์ธํธ๊ฐ ๋น๊ต์ ์ ์ ํ๋จ.
h(t) โ ๋จ๊ธฐ ์ํ์ฉ ๋ฒกํฐ
c(t) โ ์ฅ๊ธฐ ์ํ์ฉ ๋ฒกํฐ
input_gate โ cell state์ ์ ์งํ ์ ๋ณด๋ฅผ ์ ํ(1)
tanh_layer โ input_gate ํต๊ณผํ ์ ๋ณด๋ฅผ ์ ๋ฐ์ดํธํ๋ layer
forget_gate โ ๋ฒ๋ฆด ์ ๋ณด ์ ํ (0)
cell state update โ input_gate์ forget_gate ์ ๋ฐ์ดํธ
output_gate โ ouput ๋ด๋ณด๋ผ ์ ๋ณด ๊ฒฐ์
RNN, LSTM ๋น๊ต
input gate, forget gate
cell state
Auto encoder?
Auto Encoder๋ ๋ชจ๋ธ์ ์ถ๋ ฅ ๊ฐ๊ณผ ์ ๋ ฅ ๊ฐ์ด ๋น์ทํด์ง๋๋ก ํ์ต์ด ์ํ
- Mapping Layer(Encoder) โ Encoder์์๋ Input ๋ฐ์ดํฐ๋ฅผ Bottleneck Layer ๋ก ๋ณด๋ด Input ์ ๋ณด๋ฅผ ์ ์ฐจ์์ผ๋ก ์์ถํ๋ ์ญํ ์ ์ํํ๋ค.
- Bottleneck Layer
- Demapping Layer(Decoder) โ Decoder ์์๋ ์์ถ๋ ํํ์ Input ์ ๋ณด๋ฅผ ์๋์ Input ๋ฐ์ดํฐ๋ก ๋ณต์ํ๋ค.
- Output Layer
Auto-Encoder์ ๋ชฉํ๋ input ๋ฐ์ดํฐ์ ๋์ผํ ๋ฐ์ดํฐ๋ฅผ ์์ธกํ๋ ๊ฒ์ด๋ฏ๋ก Output Layer๋ฅผ ํตํด ๋์ค๋ ์์ธก ๊ฐ๊ณผ ์ค์ ๊ฐ์ ์ฐจ์ด๋ฅผ Loss Function์ผ๋ก ์ ์ํ๊ณ ํ์ต์ ์ํํ๋ฉฐ, ํด๋น Loss Function์ Reconstruction Error๋ผ๊ณ ํ๋ค.
Reconstruction Error๊ฐ threshold๋ฅผ ์ด๊ณผํ๋ฉด anomalies, ์๋๋ฉด normal๋ก ๊ท์ .
Neural Network construct
LSTM layer ๋ฐฉ์์ผ๋ก auto encoder ๊ตฌ์ถ
L1 L2 โ encoder
L3 โ bottle neck
L4 L5 โ decoder
L2 3 4 5๋ฅผ L3 4 5 6๋ก ์๋ชปํ์
hyperparameter โ optimizer: adam, loss_func : MSE, activation func: relu, epoch: 20, batch size: 32
reconstruction error๋ฅผ ํตํ threshold ์ง์ โ anomalies ํ๋จ
result
minmaxscaling์ ํ ๊ฒ๊ณผ ์ํ ๊ฒ, ๋ ๊ฐ ๋์ ์งํ
epoch ์งํ์ ๋ฐ๋ผ mae ๊ฐ์
prediction - minmax_scaling
epoch ์งํ์ ๋ฐ๋ผ mae ๊ฐ์
prediction - no_scaling
final_pipeline ipynb ํ์ธ ํ์ ex) LSTM-AE result ์์
๋ชจ๋ธ๋ณ๋ก Prediction ๊ฒฐ๊ณผ๋ฅผ ์ข ํฉ โ ์๋ฒ๋ค ์ค ํ timeline์ ํ๋๋ผ๋ anomalies ๋ฑ์ฅ ์ ํด๋น timeline ์ ์ฒด๋ฅผ anomaly๋ก ํ๋จ
๋ผ๋ฒจ์ ๋ง๋ค์ด๋ด๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ๋ฐ๋ก ๊ฒฐ๊ณผ์ ๋ํ evaluation์ ๋ถ๊ฐ.
AIFactory ๊ฒฝ์ง ๋ํ score ์ฑ์ ๊ธฐ๋ฅ์ ์ด์ฉ.(๋ด๋ถ ์ ๋ต ๋ผ๋ฒจ ๋ฐ์ดํฐ์ )
F2-score๋ก ํ๊ฐ๋จ. (Precision๋ณด๋ค Recall์ advantage๋ฅผ ์ฃผ๋ ๊ฒฝ์ฐ)
lstm AE์ ๊ฒฝ์ฐ ์ผ์ ์ ์ ์ด์์ ์ฑ๋ฅ์ ์ป์ ์ ์์์. lstm_not_scaling์ด minmaxscaling์ ์ฌ์ฉํ ๊ฒ๋ณด๋ค ๊ฒฐ๊ณผ๊ฐ ์ข์์.
๋ฐ๋ผ์ LSTM-AE์์ ๊ตฌํด์ง ์ด์์น ๋น์จ์ K-means์ Isolation Forest์ ์ ์ฉ์์ผ๋ณด์๋๋ ํฐ ํญ์ ํฅ์์ด ์ด๋ฃจ์ด์ก์.
Visualization
(3D ์ด๋ฏธ์ง๊ฐ memory๋ฅผ ๊ณผํ๊ฒ ์๊ตฌ โ final_result_visualization_compare.ipynb์ ๋ฐ๋ก ์ฝ๋๋ง ๊ตฌํ)
์์์๋ถํฐ LSTM, Isolation Forest, Kmeans ๊ฒฐ๊ณผ๋ฌผ
info_data_test
login_1_data_test
login_2_data_test
login_3_data_test
login_4_data_test
login_5_data_test
menu_1_data_test
menu_2_data_test
menu_3_data_test
menu_4_data_test
Isolation Forest์ Kmeans์ ๊ฒฐ๊ณผ๋ฌผ์ ์ ์ฌํ ๋ถํฌ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
ํ์ง๋ง LSTM AutoEncoder์ ์ฌ์ฉํ๊ฒ ๋๋ฉด ์ด์์น ํ๋ณ ๋ฐฉ์์ด ๋ฌ๋ผ ๋ค๋ฅธ ๋ถํฌ๋ฅผ ๊ทธ๋ฆฌ๋ ๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค.
Discussion
3๊ฐ์ง ๋ฐฉ๋ฒ๋ก ์์ ๊ฐ์ ๊ฒฐ๊ณผ๊ฐ ๋์๋ค๋ฉด 0 or 3 , ์๋๋ผ๋ฉด 1, 2
IF vs Kmeans IF vs LSTM Kmeans vs LSTM
Kmeans - IF
IF - LSTM
Kmeans - LSTM
LSTM์ ์๊ทธ๋ํ ์์ผ๋ก ๋น์ทํ ๋ถํฌ๋ฅผ ๋ณด์์ง๋ง ๋ค๋ฅธ ๊ฒฐ๊ณผ ๊ฐ์ ๋ณด์ด๋ ๊ฒฝ์ฐ๊ฐ ๋ง์์ต๋๋ค.
ํนํ ๊ฐ์ฅ ์ ์ ์ด์์น๋ฅผ ๊ฐ์งํ๋ LSTM๊ณผ ํ ์๊ณ ๋ฆฌ์ฆ์ ๋น๊ตํ์ ๋ K-means์ ๊ฒฝ์ฐ LSTM๊ณผ ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋ณด์ฌ์ฃผ๋ ๊ฒฝ์ฐ๊ฐ K-means๋ณด๋ค ๋ง์์ต๋๋ค.
Conclusion
๋จธ์ ๋ฌ๋ ์๊ณ ๋ฆฌ์ฆ์ ์ฌ์ฉํ ๊ฒฝ์ฐ ์ด์์น ๋น์จ ์ค์ (ํ์ดํผ ํ๋ผ๋ฏธํฐ)์ ๋ฏผ๊ฐํ๋ค๋ ์ฌ์ค์ ์ ์ ์์์ต๋๋ค. ๋น๋ก ํ์ต์๊ฐ์ LSTM-AE์ ๋นํด ํจ์ฌ ์งง์ ์๊ฐ์ ๋ณด์ด์ง๋ง ์ ๋นํ ์ด์์น ๋น์จ์ ์์ง ๋ชปํ๋ค๋ฉด ๊ฐ์ ์ฐพ๋ ๊ฒ์ ์ค๋ ์๊ฐ์ด ๊ฑธ๋ฆด ์ ์์ต๋๋ค.
๋ํ Kmeans์ Isolation Forest์ ์ด์์น ๋น์จ์ด ๊ฐ๊ฒ ์ง์ ํ๋๋ผ๋ ๋ง์ ์๊ฐ ๋ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ ธ์ค๋ ๊ฒ์ ์ ์ ์์ต๋๋ค. (์ฝ ์ ๋ฐ ๊ฐ๋์ด ๋ค๋ฅด๊ฒ ๋ถ๋ฅ)
์ฌ๋ฌ ์ด์์น ํ์ง ์๊ณ ๋ฆฌ์ฆ์๋ ์ฅ๋จ์ ๋ค์ด ๋ถ๋ช ํฉ๋๋ค.
๋ค๋ณ๋ ๋ณ์, label์ ์ ๋ฌด, ์ฐ์ฐ๋ ๋ฑ ๋ค์ํ ์กฐ๊ฑด์ ๋ฐ๋ผ ์ ์ ํ ์๊ณ ๋ฆฌ์ฆ์ ์ ํํด์ผ ํฉ๋๋ค.
ํด๋น ํ๋ก์ ํธ ๋ถ์์ Neural Network์ ์ผ์ข ์ธ LSTM-AE๋ก unsupervised๋ก๋ ์ ํ๊ธฐ ํ๋ anomaly threshold๋ฅผ ํ์ต์ ๋ฐ๋ผ ์๋์ผ๋ก ์ ํ๊ณ ์ด์์น ๋ผ๋ฒจ์ด ์์ด๋ ์ด๋์ ๋ ์ด์์น๋ผ๊ณ ํ๋จ์ ํ ์ ์๋ ๊ธฐ์ค์ ์ ์ํ๋ค๋ ๊ฒ์ ์์๊ฐ ์์ผ๋ฉฐ, ์ดํ ์ถ๊ฐ์ฐ๊ตฌ๋ก๋ ๋ผ๋ฒจ๋ง ๊ฒฐ๊ณผํจํด ๋ฑ์ ์ฐ๊ตฌํ์ฌ ๊ธ๊ฒฉํ๊ฒ request์ Fail ๋น์จ์ด ์ฆ๊ฐํ๋ ๊ฒฝ์ฐ ํด๋น ์๊ฐ์๋ง ์คํธ๋ฆฌ๋ฐ ํ์ง์ ๋ฎ์ถ๊ฑฐ๋ ๋ค์ด๋ก๋ ์๋๋ฅผ ๋ฆ์ถ๋ ๋ฑ์ ๋ฐฉ์์ผ๋ก ํ์ฉํ ์ ์์ต๋๋ค.
ํ์ฌ๋ ์ ์ฒ๋ฆฌ ๋จ๊ณ์์ KNN์ ์ฌ์ฉํ์ง๋ง ์ต์ ๊ธฐ๋ฒ์ ์ฐ๊ตฌํด์ ๊ฒฐ์ธก์น๋ ๋ถ๋ํ ๋ฐ์ดํฐ row(request๊ฐ 0์ธ ๋ฑ ์ ๊ณตํ ํ์ฌ ์์ฒด์ ๋ฌธ์ )์ ์ฌ์ฉํ ๊ฒ์ด๋ฉฐ, epoch ์๋ฅผ ๋ ๋๋ ค ๊ฒฐ๊ณผ๋ฅผ ํฅ์ ์ํฌ ๊ฒ์ ๋๋ค.