일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
- decisiontree
- ADsP3과목
- 공빅데
- 빅데이터
- ADSP
- data
- ML
- SQL
- datascience
- Keras
- 2023공빅데
- NLP
- 2023공공빅데이터청년인재양성
- DL
- 공공빅데이터청년인재양성
- 분석변수처리
- 머신러닝
- textmining
- k-means
- DeepLearning
- Kaggle
- 데이터분석
- 2023공공빅데이터청년인재양성후기
- 오버샘플링
- 데이터전처리
- 공빅
- 공공빅데이터청년인턴
- machinelearning
- 클러스터링
- 텍스트마이닝
- Today
- Total
愛林
[Python/ML] 이상 탐지 (Anomaly Detection) 본문
이상 탐지 (Anomaly Detection)
최근에 관심이 생긴 이상탐지 (Anomaly Detection) 에 대해 알아보자.
이상 탐지의 개념
이상 탐지 (Anormaly Detection) 이란,
예상되거나 기대되는 관찰값, item, event 가 아닌 데이터 패턴 (이상징후, anomalies) 을 찾아내는 것을 말한다.
이상값은 정상이 아닌 값이라고 할 수 있는데, 이 "정상" 이라는 것의 범주는 상황이나 분야마다 다르게 쓰일 수 있다.
이상치, 이상 징후 등으로 불리며, 영어로는 Anomalies, Outliers, Exceptions 와 같이 표현될 수 있다.
이상탐지는 다양한 산업 분야에 적용되며, IT보안, 의료진단, 제조공정의 모니터링 등에 이용된다.
자세한 적용사례로는
- Cyber Intrusion Detection (보안) : 컴퓨터 시스템 상 침입 탐지
- Fraud Detection (금융) : 보험, 금융 데이터에서 불법 행위를 탐지하는 사례
Kaggle 에서 Credit Card Fraud Detection 등의 데이터로 접해볼 수도 있다. - Malware Detection : Malware(악성코드) 를 검출해내는 사례. 분류와 군집이 주로 사용되며,
이를 그대로 활용하기도 하고, Gray Scale Image 로 변환하여 이용하기도 한다. - Medical Anomaly Detection : 의료, 의학 데이터에 대한 이상치 탐지 사례.
주로 X-ray, CT, MRI 등 다양한 장비로 취득된 신호 데이터, 이미지 데이터 등을 이용한다. - 생태계 교란 감지
등이 있다.
이상탐지는 종종 분류(Classification) 문제와 혼동되는데,
물론 분류를 통해 이상탐지를 하는 방법도 있으나, 엄연한 차이가 있다.
분류는 두 범주를 구분할 수 있는 경계면을 찾는 것인 반면에, 이상 탐지는 다수의 범주를 고려하여 이상치가 아닌 데이터들의 sector 를 구분짓는 것이라고 할 수 있다.
Noise Detection과 Novelty Detection 또한 이상 탐지와는 다르다.
노이즈는 보통 분석 이전에서 불필요한 개체나 제거해야할 성분을 말하며, 이를 조정함으로써 통계적 방법에서
이상치의 영향을 줄일 수 있다.
또한 Novelty Detection 은 지금까지 발견되지 않았던 새로운 패턴을 찾아내는 것을 목표로 한다.
이상 탐지와 달리 Novelty 는 정상치에 포함되는 데이터이다. 말 그대로 참신한 데이터인 것.
이상탐지 기법은 다양한 기법이 있다.
- 지도학습기반
- 비지도학습기반
- 통계학적 기반
하나씩 알아보도록 하자.
지도 학습 기반의 이상탐지 기법 ( Supervised Learning)
지도학습이란, Supervised Learning 이라고 부르며, 훈련 데이터로부터 하나의 함수를 유추해내기 위한
머신러닝의 학습방법으로, 주어진 데이터에 대해 예측하고자 하는 값을 올바르게 추출하기 위한 목적을
가지고 있다.
지도 학습은 유추된 함수가 어떤 값을 띄는 지에 따라서 2개로 분류가 가능하다.
- 회귀분석 (Regression) : 연속적인 값
- 분류분석 (Classification) : 비연속적인. 범주형 값
지도 학습을 이용한 알고리즘은 매우 다양한데,
KNN(K-nearest Neighbor), 선형 모델(선형회귀), 랜덤 포레스트(트리기반) 등이 있다.
선형회귀분석
선형방법은 선형 회귀(Linear Regression) 로, 파라미터가 선형식으로 표현이 되는 모델을 뜻한다.
선형 회귀, 로지스틱 회귀와 같은 모델이 회귀 모델에 속한다.
선형 회귀는 입력 변수와 출력 변수 사이의 선형 관계를 가정하는 모델을 사용하는 간단한 알고리즘으로,
수치 예측 문제에 활용된다.
독립변수가 1개인 단순선형회귀와 독립변수가 여러 개인 다중선형회귀가 있다.
더 자세한 선형회귀에 대한 설명은 여기로
https://wndofla123.tistory.com/43
[Python/Data] 회귀분석 (Regression Analysis) 설명
회귀분석 (Regression Analysis) 회귀분석이란, 하나 혹은 그 이상의 원인(독립변수)이 결과(종속변수)에 미치는 영향을 추정하여 식으로 표현할 수 있는 통계 기법이다. 변수 사이의 인과관계를 분석
wndofla123.tistory.com
선형 회귀 분석의 장점으로는 지나치게 복잡한 관계를 모형화 할 수 없기 때문에 간단하고 이해가 쉬우며,
과대적합 되기가 어렵다는 점이다.
그러나 입력변수와 출력변수 관계가 선형이 아닌 비선형일 때 이 모형은 오히려 과소적합 되기가 쉽다.
로지스틱 회귀
로지스틱 회귀는 (Rogistic Regrssion) 회귀보다는 분류모델이며, 종속 변수가 로지스틱 함수에 의해
반환되어 이 변환으로 클래스에 속할 확률을 출력해준다.
Y 가 범주형 변수일 때 선형 회귀를 그대로 적용할 경우 숫자가 아무 의미를 가지고 있지 않기 때문에
유의하지가 않다. 이 때, 선형 회귀가 아닌 로지스틱 회귀를 사용하게 된다.
자세한 로지스틱 회귀에 대한 설명은
https://wndofla123.tistory.com/77
[Python/ML] 분류 알고리즘 (Classification Algorithm) : 로지스틱 회귀 (Logistic Regression) (확률적 판별 모델)
분류 알고리즘에는 확률적 생성 모델과 확률적 판별 모델이 있다. 앞서서 살펴보았던 나이브 베이즈는 확률적 생성모델이었다. 확률적 생성모델은 y의 클래스 값에 따른 x의 분포에 대한 정보를
wndofla123.tistory.com
KNN (K-Nearest Neighbor, 거리기반)
KNN 은 대표적인 거리기반 지도학습 알고리즘이다.
거리기반 말 그대로, 거리가 가까운 데이터들끼리 묶는다.
이 경우, 이상치는 거리가 다른 데이터들간의 거리보다 비정상으로 이상하게 먼 데이터가 되겠다.
KNN 은 비슷한 특성이나 속성을 가진 것들끼리 가깝게 있는 이웃의 속성에 따라 K개씩 분류하여 Labeling 하는
알고리즘이다. 거리는 유클리디안이나 맨해튼 거리를 사용한다.
KNN 은 새로운 데이터가 들어왔을 때, 이 데이터의 레이블을 지정하기 위해 가까이 있는 K개의 데이터들의
레이블을 보고 이를 반영하여 새로운 데이터에 레이블을 부여한다.
KNN 은 초기 설정값인 K값이 매우 중요한데, 이가 제대로 설정되지 않을 경우 과적합의 위험이 있다.
더 자세한 설명은 여기로.
https://wndofla123.tistory.com/63
[Python/ML] K-NN (K-Nearest Neigthbor , K-최근접이웃)
이전에도 배웠던 적이 있는 K-NN 기법에 대해서 자세히 알아보도록 하자. K-NN (K-Nearest Neightbor) 입력과 결과가 있는 데이터들이 주어진 상황에서 , 새로운 입력에 대한 결과를 추정할 때, 결과를 아
wndofla123.tistory.com
의사 결정 트리 (Decision Tree)
AI가 훈련 데이터를 통과한 후, 레이블에 의해 데이터를 분할하는 규칙을 만든다.
이 만들어진 트리를 이용해 새로운 검증을 진행한다.
최대한 균일한 데이터 세트를 구성할 수 있도록 분할 하는 것이 중요하며, 분류나 회귀 둘 다 사용된다.
시각화를 하여 어떤 기준으로 분류를 했는 지 알아보기 편하다는 것이 최고 장점이다.
변수의 정규화가 필요없고 영향력 파악 또한 쉽다.
하지만 알고리즘이 단순한만큼 예측력이 떨어지고 과적합이 발생할 수 있다.
이를 보완하기 위해 이런 트리들을 앙상블(Ensemble) 시킨 방법이 랜덤포레스트(RandomForest) 이다.
자세한 설명은 여기로,
https://wndofla123.tistory.com/64
[Python/MachineLearning] Decision Tree(의사결정나무)
Decision Tree (의사결정나무) 의사결정트리는, 데이터들이 가진 속성들로부터 분할 기준 속성을 판별하고, 분할 기준 속성에따라서 트리 형태로 모델링하는 분류 및 예측 모델이다. 불순도와 순수
wndofla123.tistory.com
랜덤 포레스트 (Random Forest)
위에서 말한 Decision Tree 를 앙상블시킨 모형.
트리를 여러 개 만든후에 그 결과를 투표하여 최종 결과를 산출한다.
여러 개의 나무들로부터 분류를 하기 때문에 과적합이 발생하기 쉬운 Decision Tree 의 한계점을 보완한다고
볼 수 있다.
그러나 트리를 많이 형성하다보니 개별 트리 분석이 어렵고 복잡해진다.
또한 차원이 크고 희소한 데이터에 대해서는 성능이 떨어지지만, 내 경험을 미루어 보았을 때 상당히
예측도가 높은 모델 중 하나라고 볼 수 있었다.
자세한 설명은 여기로,
https://wndofla123.tistory.com/69
[Python/MachineLearning] 앙상블 알고리즘 (Ensemble Algorithms) : 랜덤 포레스트 (Random Forest)
랜덤 포레스트 (Random Forest) 랜덤 포레스트란, 여러 개의 결정 트리를 임의적으로 학습하는 방식의 앙상블 방법이다. Bagging 보다 더 많은 임의성을 주어서 학습기를 생성한 후, 이를 선형 결합하
wndofla123.tistory.com
이외에도 다양한 지도학습기반 모델이 있지만,
지도학습은 분류나 회귀 등에서 강점을 보이는 모델이다.
그래서 사실상 이상치 탐지에서 실무에 적용되기는 어려운 모델이다.
훈련 데이터의 모든 개체에 Labeling 이 되어 있을 때에 쓰는 모델인데, 데이터는 정상에 비해서 이상의 비율이 적은
매우 불균형한 데이터이고, 그러므로 이상치에 대한 충분한 학습이 어렵기 때문에 정확하게 분류하기가 어렵다.
또한 정황상 이상한 것이 맞다고 해도 판별할 관측 데이터가 없는 경우 결과적으로 알아낼 수가 없다.
그러므로, 지도학습은 실무에서 적용하기 어려운 이상탐지 기법이다.
비지도 학습 기반의 이상 탐지 기법 (Unsupervised Learning)
비지도 학습이란, 정답 라벨이 없는 데이터를 비슷한 특징끼리 군집화하여 새로운 데이터에 대한
결과를 예측하는 것을 말한다. 정답이 없기 때문에, 예측하지 못했던 흥미로운 결과를 발견할 수도 있다.
다양한 비지도 학습 기법들이 있다.
비지도 학습의 대표적인 것은 차원 축소인데,
이 차원 축소에 대해 알아보기 전, 차원의 저주에 대해서 알아두어야 할 필요가 있다.
차원의 저주란, 확보하고 있는 데이터의 양을 포함하는 차원이 증가할수록,
필요 데이터의 부족으로 인하여 과적합 등의 문제가 발생해 모델의 성능이 저하되는 현상이다.
한 마디로, 변수가 증가할수록 우리는 모델을 충분하게 학습시키는 것이 어려워진다는 점.
위의 그림처럼 차원이 늘어날수록, 공간의 부피가 늘어나 빈 공간이 많이 생기고, 이로 인해 모델이 불안정해질 수 있다.
우리는 이런 차원의 저주를 차원축소를 통해 해결할 수 있다.
차원축소의 방법도 여러가지이며, 차원축소도 선형과 비선형으로 나뉜다.
선형 차원축소는, 한 차원의 데이터를 어떠한 평면상에 축소시키는 것과 같다.
위의 그림과 같이 3차원상의 어떤 데이터들을 어떤 평면상에 투영시켜 오른쪽 그림과 같이 2차원으로 차원을 축소했다.
제일 대표적인 것이 PCA(Principal Component Analysis) 이다.
비선형 차원축소는 매니폴드 학습(Manifold Learning) 으로도 불리는데, 이렇게 말려져 있는 데이터를 펼쳐서
하나의 평면으로 보겠다는 것이다.
하지만 이도 분명히 단점이 존재하는데,
오히려 맨 아래와 같은 경우는 선형으로 보는 것이 더 적절할 수 있다.
때에 따라 더 편한 방법이 존재할 것이기 때문에, 데이터를 확인하면서 선형으로 할 지, 비선형으로 할 지 결정해야 한다.
PCA (Principal Component Analysis)
선형 차원축소 중 가장 유명한 것이 PCA인데, 데이터의 전체 feature 중 어떤 feature 가 가장 중요한 지 알아낼 수 있다.
최대한 다양성을 유지하며 데이터의 저차원 표현을 찾는 것이 PCA 인데, 그림과 같이 x1 과 x2 관계 중에서
저차원으로 이동시킬 때 데이터를 잘 보존하기 위해서 분산을 최대로 하는 c1 축을 찾는 것이 PCA이다.
기존 PCA 말고도 변형된 Incremental PCA, Kernel PCA, Sparse PCA 등이 있다.
t-SNE (t-distributed stochastic neighbor embedding)
t-SNE 는 비선형 차원축소의 한 종류로, 고차원의 데이터간 거리를 저차원으로 축소했을 때, 똑같이 유지하는 것이다.
따라서 원 공간에서 가까운 점들도 고려하고, 좀 더 멀리 있는 점들의 위치도 고려한다.
1번 그림은 3차원의 데이터가 존재하는데, 이를 2차원으로 축소하여 최종적으로 4번의 그림처럼 각 데이터의 거리를 유지시키는 방법이다.
1번 그림에서 각 포인트마다 기준을 정하고, 정규분포를 이용해서 유사도를 시각화해서 나타낸다.
2번 그림에서는 원래의 데이터들을 랜덤으로 2차원 공간에 배치시켜서 t분포의 특성을 이용해서 나타낸다.
이 과정을 반복하여 최종적으로 4번 그림과 같이 저차원의 데이터로 이동시켰지만 거리를 유지해 주도록 한다.
아래 그림처럼 t분포를 이용하여 고차원에서 유사도(y축)가 높은 관계면 데이터 포인트를 더 가까이 배치시키고,
낮은 관계면 더 멀리 배치할 수 있도록 한다.
AutoEncoder
오토인코더 또한 비지도 학습 기반의 대표적인 이상탐지 모델 중 하나이다.
입력 샘플을 인코더를 통해 저차원으로 압축 시키고, 디코더 과정을 걸쳐 다시 원래의 차원으로 복원하는 방법이다.
오토인코더의 특징 중 하나는 디코더를 통해 원래의 차원으로 복원하는 방법인데,
이 방법을 통해 입력 샘플과 복원 샘플의 오차(reconstruction error) 를 산출할 수 있다.
LOF (Local Outlier Factor)
local 이상값을 찾기 위하여 설계된 밀도(Density) 기반 방법이다.
다른 방법들과 달리, 국소적(Local) 관점으로 이상치 정도를 파악하는 것이다.
- 각 데이터 포인터들에 대해서 NN 계산
- 계산된 이웃을 사용하여 local 밀도 계산 (LRD)
- 데이터 포인트의 LRD와 이전에 계산된 NN의 LRD를 비교하여 LOF 를 계산, 다른개체보다 밀도가
낮게 측정되는 데이터를 이상치로 판단
대부분의 이상치 탐지 알고리즘은 여기서 O1은 이상치라고 탐지하지만, O2 를 이상치라고 판단하지 않는다.
전체적으로 보았을 때 그룹내 관측치와의 거리와 유사하기 때문에, 이상치라고 보기가 힘든 것이다.
이러한 단점을 극복하기 위해, 밀도를 기반으로 국소적 정보를 이용하는 LOF를 사용한다.
LOF < 1 : 밀도가 높은 분포
LOF = 1 : 이웃 관측치와 비슷한 분포
LOF > 1 : 밀도가 낮은 분포. 크면 클수록 이상치 정도가 크다.
위의 표를 살펴보았을 때, 1보다 큰 관측치들은 충분히 이상치라고 볼 수 있다.
K-means
대표적인 군집화 방법 중 하나이다.
데이터를 특성에 따라서 K개의 그룹으로 clustering 하는 알고리즘이며, cluster 의 중심에서 멀리 떨어진 데이터는
비정상 데이터라고 판단한다.
자세한 건 여기, 이상치 탐지에 대한 내용은 없지만서도 ..
https://wndofla123.tistory.com/58
[Python/Machine Learning] ML-Clustering (군집분석) : K-Means
군집분석(Clustering Analysis) 에 대해서 알아보고, 군집분석 방법 중 하나인 K-means에 대해 알아보자. 군집분석 (Clustering Analysis) 기계학습 (Machine Learning) 에는 학습 데이터에서 label 이 있는지 없는 지
wndofla123.tistory.com
rPCA (Robust Principal Component Analysis)
차원을 축소하고 이를 다시 복원하는 과정을 통해 비정상 sample 을 검출하는 방법이다.
데이터를 더 낮은 차원의 부분공간으로 보내면 그 공간에서는 정상과 이상치가 구분된다고 가정한다.
Isolation Forest
비정상 데이터는 의사결정나무의 root에서 가까운 깊이에 고립될 것이라고 가정한다.
그러므로 leaf 노드까지의 거리를 outlier score 로 정의하고, 평균 거리가 짧을수록 outlier 일 가능성이 크다고 판단한다.
One Class SVM
정상 데이터를 원점으로부터 최대한 멀리 위치하게 만드는 초평면(Hyperplane) 을 찾고, 새로운 데이터가 원점과
초평면 사이에 위치하면 이상치 데이터로 판별하는 알고리즘이다.
Angle Based Oulier Detection (ABOD)
각도 기반 이상치 탐지 알고리즘이다. 데이터 포인트와 다른 포인트 사이의 각도 분산을 이상 점수로 이용한다.
고차원 공간에서도 일반적인 거리기반 이상치 측정 방법보다 좋은 이상치 탐지 성능을 가진다.
그러나 이상치가 다른 이상치에 의해 둘러싸인 경우, 정상객체와 구별이 어렵다는 문제점이 있다.
이상점 P에 대한 위의 그림에서 X,Y점에 대한 거리 선분 PX 와 PY 사이의 각도가 다른 점들의 각도보다
훨씬 작은 것을 확인할 수 있다. 다른 데이터들보다 거리가 멀게 되면 더 가까운 데이터 포인트들 사이의 각도보다 작아지게 된다. 각도기반알고리즘은 이런 식으로 이상치를 도출해낸다. 이 각도 분산이 이상 점수가 된다.
참고
https://dacon.io/codeshare/4758
[Team Zoo] 1편. 이상탐지 너 뭐야?
dacon.io
위 글은 '핸즈온 비지도 학습' 책을 참조했다고 함.
https://www.hanbit.co.kr/store/books/look.php?p_code=B7126889829
핸즈온 비지도 학습
이 책은 케라스를 사용한 텐서플로와 안정화된 파이썬 프레임워크인 사이킷런으로 비지도 학습 적용 방법을 알려준다.
www.hanbit.co.kr
http://docs.iris.tools/manual/IRIS-Usecase/AnomalyDetection/AnomalyDetection_202009_v01.html
(1) 이상 탐지란 — IRIS 3.2.3 documentation
이상 탐지 ( Anomaly Detection )이란 예상되거나 기대하는 관찰값, item, event 가 아닌 데이터 패턴 ( 이상징후 , anomalies, 이상 징후 ), 개체(이상값) 등 을 찾아내는 것을 의미합니다. 이상값은 “정상”
docs.iris.tools
머신러닝 기반 이상 탐지(Anomaly Detection) 기법의 종류
이상 탐지(Anomaly Detection)란, 데이터에서 예상과는 다른 패턴을 보이는 개체 또는 자료를 찾는 것을 말한다. 즉 학습 데이터를 기반으로 기존 데이터들과는 다른 특성을 갖는 데이터를 찾는 모형
nanunzoey.tistory.com
https://deepai.org/machine-learning-glossary-and-terms/novelty-detection
Novelty Detection
As the name implies, novelty detection is the identification of novel, or unusual, data from within a dataset. Often, these outliers, also called anomalies, are discovered due to their differences from the rest of the data.
deepai.org
https://roytravel.tistory.com/105
[인공지능 이론] Manifold Learning
Manifold Learning이란 고차원 데이터가 있을 때 고차원 데이터를 데이터 공간에 뿌리면 샘플들을 잘 아우르는 subspace가 있을 것이라 가정에서 학습을 진행하는 방법이다. Manifold Learning은 차원축소를
roytravel.tistory.com
https://velog.io/@vvakki_/LOFLocal-Outlier-Factor
LOF(Local Outlier Factor)
[Post No.003] LOF(Local Outlier Factor)
velog.io
Isolation Forest
지난 포스트의 전통적인 이상탐지 기법 LOF (Local Outlier Factor) 에 이어, 이번 포스트에서 다룰 이상탐지 기법은 2008년에 발표된 Isolation Forest 입니다. Isolation Forest는 여러 개의 의사결정나무 (decision
hongl.tistory.com
https://koreascience.kr/article/CFKO201028451823581.1ff8page
Analysis and Performance enhancement of angle-based outlier detection -Proceedings of the Korean Information Science Society
Abstract 고차원 공간에서 효과적인 이상치 탐지 방법으로 제안되었던 각도 기반 이상치 탐지(Angle Based Outlier Detection)는 객체와 객체를 비교하는 척도로 각도 개념을 사용하여 고차원 공간에서도
koreascience.kr
https://machinelearningstories.blogspot.com/2018/08/anomaly-detection-in-high-dimensional.html
'Data Science > Machine Learning' 카테고리의 다른 글
[Python/ML] Optuna :: For HyperParameter Tuning (2) | 2023.01.30 |
---|---|
[Python/ML] Outlier Detection :: Pyod Library (3) | 2023.01.19 |
[Python/ML] 음성 데이터 분석(Sound Processing) - (2) (3) | 2022.12.20 |
[Python/ML] 음성 데이터 분석(Sound Processing) - (1) (3) | 2022.12.19 |
[Python/ML] 분류 알고리즘 (Classification Algorithm) : 로지스틱 회귀 (Logistic Regression) (확률적 판별 모델) (2) | 2022.09.06 |