1. Anomaly Detection 개론
- 새로운 데이터가 anomalous한가?
1) 원래 주어졌던 Dataset을 이용해서, feature의 확률분포 p(x)를 모델링
2) p(x_test)<ε 이면 anomalous 하다고 판단
-> anomalous할 경우, 해당 제품을 다시 한 번 test 해봐야함 (ex. aircraft예시)
2. Density estimation
- p(x) 구하는 방법 (Dataset을 통해 끌어낸 확률분포 모델)
- p(x) = p(x1 ; μ , δ**2 ) * p(x2 ; μ , δ**2 ) * p(x3 ; μ , δ**2 ) * ......
-> 독립일때에 성립 가능함
3. Anomaly detection Algorithm 적용 순서
1) Anomaly가 발생할 수 있을것 같은 features들을 (직접) 몇 개 선택한다
2) 선택한 그 features에 대한 μ, δ**2 값을 구한다
3) 2번에서 구한 값을 이용해서, Density estimation (=p(x) ) 을 구한다
4) p(x_test)<ε 이면 anomalous 하다고 판단한다
4. Anomaly detection Algoritm 의 성능을 평가할 수 있는 알고리즘
- 의의 : 이와 같은 알고리즘을 알게 된다면, 어떤 feaures들을 사용할 것인지, 어떤 ε값을
사용할 것인지 등에 대한 더 빠르고 정확한 판단이 가능하다
- 방법 :
1) labeled 된 데이터를 갖고 실험을 한다고 생각한다
(보통, 비지도학습의 경우 labeled 되지 않은 데이터를 활용해야 한다. 그러나 성능 평가를 위해서
labeled 된 데이터를 사용한다고 가정하자)
2) Trainning set 설정 : 모든 원소들이 다 non anomalous (=normal example) 이라고 가정
-> 이 Set을 이용해서, P(x) 함수를 구한다
3) Cross validation set 설정 : anomalous/non anomalous 한 data들 모두 들어있다고 가정
4) Test set 설정 : anomalous/non anomalous 한 data들 모두 들어있다고 가정
-> 이떄, Trainning set 60%, CV set 20%, Test set 20% 로 설정한다!!
5) 처음 시작할 때 있었던 anomalous data를 CV set, Test set 각각에게 절반씩 나눠준다
- 이 알고리즘의 효율성을 evaluation 하는 방법?
- 위의 방법과 같이 P(x) 값을 0or1 로 산출할때, 대부분의 경우 y=0 이 산출 됨
why? 대부분의 data는 non-anomalous 하기 때문 -> skewed 한 구조를 갖고 있다
- 따라서, 일반적인 classification 알고리즘을 이용해서 이 Anomaly Detection Algorithm 성능을
평가하면 안 된다.
-> 다른 여러가지 방식의 evaluation metrics를 이용해서 평가 해야 됨
5. ε 값도 Cross Validation 을 이용해서 구할 수 있다
6. Anomaly Detection vs. Supervised Learning
- Positive example (y=1) , Negative example (y=0) 의 갯수 :
1) Anomaly Detection : (y=1, anomaly)가 매우 적고, (y=0)가 매우 많다
2) Supervised Learning : (y=0), (y=1) 둘 다 매우 많다
- Anomaly 의 종류가 많은가, 적은가 :
1) Anomaly Detection : 종류가 매우 많다
-> 애초에 (y=1) 데이터가 많지 않기 떄문에, 새로운 Anomaly를 예측하는게 불가능
-> 종류가 많기 때문에, 새로운 Anomaly가 계속해서 생겨나는게 많다
2) Supervised Learning : 종류 자체는 평범하다
-> (y=1) 데이터가 충분한 양이 있기 때문에, Anomaly 에 대한 예측이 충분히
가능하고, 문제가 없다
7. Choosing What features to Use
- 좌편향 Bell Shape 인 경우 : log 연산을 해준다
- anomaly detection 할때, anomalous 할 경우엔 p(x) 값이 작을수록 좋고 normal할 경우엔 p(x)값이 클 수록 좋다
그러나, 실제론 anomalous 경우와 normal한 경우 모두 비슷한 곳에 모여있는 경우가 많음
-> 따라서, 이러한 경우에 대한 처리가 따로 필요하다
-> anomalous 하나 p(x) 값이 큰 편인 경우, 따로 뽑아서 새로운 feature을 만들어낸다
8. Content based Recommendation - 영화 평점 예측기
- 목표 : 새로운 feature를 도입해서, 사용자의 평점을 예측하겠다
-> 새로운 feature과 연결될 수 있는 가중치의 값을 학습을 통해 구해야 한다
- 가중치 Θ 의 값을 구하는 방법 :
-> Linear Regression 하는 방식과 똑같이, minimum 값을 구해낸다
-> minimum 값을 구하는 방법? : Gradient Desecent 방식을 이용해서 계속 Θ값을
업데이트 하며, 기울기(=Cost Function의 미분값)가
0이 되는 순간, 그떄의 Θ값을 사용한다
9. Collaborative Filtering
- Θ를 알고 있을떄, x 를 자동으로 구하는 방법? :
-> 마찬가지, Linear Regression 방식과 유사하게 식을 세워서 계산한다 (minimize 해줌)
- 정의 : Θ값과 x값을 "동시에" 구하자!!
How? 1) Θ, x값 모두 임의의 값으로 initialize 해준다
2) Θ -> x -> Θ -> x .... 이런 순서로 각각 minimize하면서 optimize 해준다
by. Gradient Descent
** 이때, 1번/2번 과정을 동시에 수행할 수 있는 식도 있다
** bias unit마저도 자체 알고리즘이 스스로 결정 가능하다
10. Low Rank Matrix Factorization
- 의의 : predict 된 영화 평점들을 하나의 행렬로 표현하면 안될까?
-> 그럴 경우, Θ^T 벡터와 x 벡터와의 곱을 predict 함수라고 하고 구할 수 있게 됨.
- 왜 "Low Rank Matrix .... "인가? : Linear Algebra에 나오는 개념. 몰라도 됨
- 비슷한 type의 영화를 찾는 방법 : ||x^(i) - x^(j)|| 값이 작다면, 영화 i와 j 는 비슷한 영화다
-> 여서기 x 값이란, 영화의 특성들의 변수다. 위에서 언급한 x 값들.