Anomaly Detection - yarak001/machine_learning_common GitHub Wiki
- anomaly detection
-
์ด์์น ํ์ง
- Novelty vs. Anomaly vs. Outlier
- Novelty: data์ ๋ณธ์ง์ ์ธ ํน์ฑ์ ๊ฐ์ง๋ง ์ ํ์ด ๋ค๋ฅธ ๊ด์ธก์น, ๊ธ์ ์ ์๋ฏธ, ๋ถ์์ detection์ ๋์ e.g. ์ผ๋ฐ ํธ๋์ด๊ฐ ์ ์ data๋ผ๊ณ ํ ๋ ๋ฐฑํธ
- Anomaly: ๋๋ถ๋ถ์ data์ ํน์ฑ์ด ๋ค๋ฅธ ๊ด์ธก์น, ๋ถ์ ์ ์๋ฏธ, ๋ถ์์ detection์ ๋์ e.g. ์ผ๋ฐ ํธ๋์ด๊ฐ ์ ์ data๋ผ๊ณ ํ ๋ ๋ผ์ด๊ฑฐ
- Outlier: ๋๋ถ๋ถ์ data์ ๋ณธ์ง์ ์ธ ํน์ฑ์ด ๋ค๋ฅธ ๊ด์ธก์น, ๋ถ์ ์ ์๋ฏธ, ๋ถ์์ detectionํ ์ ๊ฑฐํด์ผํ ๋์ e.g. ์ผ๋ฐ ํธ๋์ด๊ฐ ์ ์ data๋ผ๊ณ ํ ๋ ์ฌ์ => ๋ถ์์ ๋ถ์ ์ ์ธ ์ํฅ์ ๋ฏธ์นจ
- ๋ถ์ ์ ์๋ฏธ : Novelty < Anomaly < Outlier
- ์ด์์นํ์ง = Novelty = Anomaly = Outlier
- ์ด์์น ํ์ง algorithm
- ํ์ฉ data๋ ์ผ๋ฐ์ ์ผ๋ก ๋ค์์ ์ ์ data์ ์์์ ์ด์์น data๋ก ๊ตฌ์ฑ => (์ฌํ) ๋ถ๊ท ํ
- ์ง๋ํ์ต ๊ธฐ๋ฐ ๋ถ๋ฅ model์ ์ฌ์ฉํ๋ค๋ฉด class ๋ถ๊ท ํ์ผ๋ก ์ด์์น data๋ฅผ ์ฌ๋ฐ๋ฅด๊ฒ ๊ตฌ๋ถํ๊ธฐ ์ด๋ ค์(๋๋ถ๋ถ ์ ์์ผ๋ก ์์ธกํ๋ ์ค๋ฅ๋ฅผ ๋ฒํจ)
- ๋ค์์ ์ ์ data์ ์์์ ์ด์์น data๋ฅผ ๊ตฌ๋ถํ๊ธฐ ์ํด ์ ์ data๋ง์ผ๋ก ํ์ตํ์ฌ ์ด์์น data๋ฅผ ํ์งํ ์ ์๋ algorithm์ด ์ ์๋จ
- one-class classification
- ์ธ์ ์ฌ์ฉ?
- ์ ์ data๋ง ์๊ณ ์ด์์น data๊ฐ ์๋ ๊ฒฝ์ฐ(์ด์์น data๊ฐ ์์ด ํ๊ฐ ์ด๋ ค์)
- -> ์ด์์น data๊ฐ ์๋๋ผ๋ ์ผ๋จ model์ ์์ฑํ์
- ์ ์ data๋ ์ถฉ๋ถํ ์์ผ๋ ์ด์์น data๊ฐ ๊ทน์์์ธ ๊ฒฝ์ฐ
- issue
- ์ ์์น data๋ฅผ ์ ์ํ๊ธฐ ์ด๋ ค์ด ๊ฒฝ์ฐ
- ์ด์์น๋ ํ์งํ๋ ์ด๋ค ์ข
๋ฅ์ ์ด์์น ์ธ์ง๋ ๋ชจ๋ฆ(์ด์์น ์ข
๋ฅ๊ฐ ๋ง์)
- -> ๋ณ๋์ ์ฌํ๋ถ์(post-hoc analysis) ํ์
- ์ด์์น ํ์ง ์ฌ๋ก
- Novelty vs. Anomaly vs. Outlier
-
๋ฐ๋๊ธฐ๋ฐ
- ์ ์ data๋ก๋ถํฐ ์ถ์ ๋ ๋ฐ๋๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ฐ ๊ฐ์ฒด์ ์ ์/์ด์ ์ฌ๋ถ๋ฅผ ํ๋จํ๋ ๋ฐฉ๋ฒ๋ก
- ๋ฐ๋ ์๊ฒ ๋ญ์ณ ์๋ ๊ด์ธก์น -> ์ ์ ๊ด์ธก์น๋ก ์์ธก
- ๋๋ถ๋ถ ๊ด์ธก์น์์ ๋ฉ๋ฆฌ ๋จ์ด์ง ๊ด์ธก์น -> ๋ถ๋ ๊ด์ธก์น๋ก ์์ธก
- ๋ค์ํ ๋ฐฉ๋ฒ๋ก
- Gaussiaan Density Estimation -> ์ ๊ท๋ถํฌ
- ๊ฐ ๊ฐ์ฒด๊ฐ ์์ฑ๋ ํ๋ฅ ์ ํ๋์ ์ ๊ท๋ถํฌ๋ก ๊ฐ์ ํ๋ ๋ฐฉ๋ฒ๋ก
- ์ ์ data๋ค์ ํตํ์ฌ ์ ๊ท๋ถํฌ๋ฅผ ์ถ์ ํจ
- Mixture of Gaussian Density Estimation -> ์ ๊ท๋ถํฌ์ ํ์ฅ
- ๊ฐ ๊ฐ์ฒด๊ฐ ์์ฑ๋ ํ๋ฅ ์ ์ฌ๋ฌ ์ ๊ท๋ถํฌ์ ์ ํ ๊ฒฐํฉ์ผ๋ก ๊ฐ์ ํ๋ ๋ฐฉ๋ฒ๋ก
- ์ ์ data๋ฅผ ํตํ์ฌ ์ ์ฒด data์ ๋ถํฌ๋ฅผ ์ถ์ ํจ
- Local Outlier Factor
- ๊ฐ์๊ต์์ ๊ฐ์ธ์ ์ธ ์๊ฐ์ผ๋ก niceํ ๋ฐฉ๋ฒ
- ๊ฐ ๊ด์ธก์น์ ์ด์์น scoreํ ๋นํ๋ ๋ฐฉ๋ฒ์ ๋ํ ์ค๋ช , threshold๋ฅผ ๋ถ์ฌ ๋ฐฉ๋ฒ์ ๋ํ ์ค๋ช ์ ์์
- ํ ๊ฐ์ฒด์ ์ฃผ๋ณ data ๋ฐ๋๋ฅผ ๊ณ ๋ คํ ์ด์์น ํ์ง algorithm
- ์ ์ ๊ฐ์ฒด๋ ์ฃผ๋ก ์ฃผ๋ณ data๊ฐ ๋ง์ด ์กด์ฌํ๋ฉฐ, ๋ถ๋ ๊ฐ์ฒด๋ ์ฃผ๋ก ๋จ๋ ์ผ๋ก ์กด์ฌํจ์ ๊ฐ์
- ๊ณผ์
- K-distance of object p
- ์๊ธฐ ์์ (p)๋ฅผ ์ ์ธํ๊ณ k๋ฒ์งธ๋ก ๊ฐ๊น์ด ์ด์๊ณผ์ ๊ฑฐ๋ฆฌ
- K-distance neighborhood of object p (Nk(p))
- k๋ฒ์งธ๋ก ๊ฐ๊น์ด ์ด์๊ณผ์ ๊ฑฐ๋ฆฌ๋ฅผ ์์ผ๋ก ํํํ ๋, ์ ์์ ํฌํจ๋๋ ๋ชจ๋ ๊ฐ์ฒด๋ค์ ์
- Reachability Distance (Reachability distancek(p,o))
- o๋ฅผ ๊ธฐ์ค์ผ๋ก k๋ฒ์ฌ ๊ฐ๊ฐ์ด ์ด์๊ณผ์ ๊ฑฐ๋ฆฌ(k-distance of o)์ o์ p์ฌ์ด ๊ฑฐ๋ฆฌ ๊ฐ์ ์ต๋ ๊ฐ
- Reachability-distancek(p,o) = max{K-distance of o, d(p,o)}
- Local reachability density of object p: (lrdk(p))
- ์ฌ๋ฌ reachability distance๋ฅผ ํ๋์ ์งํ๋ก ๊ณ์ฐํ ๊ฐ
- ์๊ธฐ ์์ (p) ์ฃผ๋ณ์ ๋ฐ๋๊ฐ ๋์ ๊ฒฝ์ฐ -> ์์ ๋ถ๋ชจ๊ฐ ์๊ฒ ๋์ด lrdk(p)๊ฐ์ด ์ปค์ง๊ฒ ๋จ -> ์ ์
- ์๊ธฐ ์์ (p) ์ฃผ๋ณ์ ๋ฐ๋๊ฐ ๋ฎ์ ๊ฒฝ์ฐ -> ์์ ๋ถ๋ชจ๊ฐ ํฌ๊ฒ ๋์ด lrdk(p)๊ฐ์ด ์์์ง๊ฒ ๋จ -> ๋ถ๋
- Local Outlier Factor of object p (lrdk(p))
- ์๊ธฐ ์์ (p)์ ์ต์ข Local Outlier Factor ๊ฐ์ ๊ณ์ฐ
- Issue
- K๋ฅผ ์ด๋ค ๊ฐ์ผ๋ก ์ ํ ๊น?
- Gaussiaan Density Estimation -> ์ ๊ท๋ถํฌ
- LOF๊ฐ ์ด๋ค ๊ฐ ๋ณด๋ค ์ปค์ผ์ง anomaly๋ก ์ ์ํ ๊น?(thresholding)
- ํ dataset์ 2.1์ LOF๊ฐ์ ๊ฐ์ง๋ ๊ด์ธก์น์ ๋ ๋ค๋ฅธ dataset์์ 2.1์ LOF๊ฐ์ ๊ฐ์ง๋ ๊ด์ธก์น๋ ๋ชจ๋ ๋์ผํ๊ฒ anomaly์ธ๊ฐ?(ํน์ ๋ชจ๋ ๋์ผํ๊ฒ ์ ์์ธ๊ฐ?)
- ๊ณ์ฐ๋ณต์ก๋
- ๊ณ ์ฐจ์
-
Model ๊ธฐ๋ฐ
- Isolation Forest
- One-Class Support Vector Machine
- Support Vector Data Description
-
์ฌ๊ตฌ์ถ ์ค์ฐจ ๊ธฐ๋ฐ
- ์ฌ๊ตฌ์ถ ์ค์ฐจ์ ๊ฐ๋
- Principal Component Analysis
- Autoencoder
-
์์ฑ์ ์ ๋ ์ ๊ฒฝ๋ง(GAN) ๊ธฐ๋ฐ
- ์์ฑ์ ์ ๋ ์ ๊ฒฝ๋ง์ ๊ฐ๋
- AnoGAN
- GANomaly
-
- reference
- ํต์ฌ ๋จธ์ ๋ฌ๋
- Unsupervised outlier detection in text corpus using Deep Learning
- Anomaly detection in Tweets: Clustering & Proximity based approach
- Robust Subspace Recovery Layer for Unsupervised Anomaly Detection
- SVDD (Support Vector Data Description)
- Complete Guide to Anomaly Detection with AutoEncoders using Tensorflow
- One-Class Classification Algorithms for Imbalanced Datasets
- Autoencoder based Anomaly Detection
- Autoencoder