Study/데이터 마이닝

[데이터 마이닝 4] Classification And Prediction

빠릿베짱이 2012. 6. 13. 20:04
반응형

Lazy Learning vs. Eager Learning

- Lazy learning

  • 학습 데이터를 간편하게 저장하고 테스트 데이터가 올때까지 기다리는 형태의 학습 방법을 말함
  • 학습 시간 보다 예측(predicting) 시간이 더 걸린다

- Eager Learning 

  • 학습 데이터가 주어지면 새로운 데이터를 분류하기전에 학습 모델을 생성하는 방법

◎ Lazy Learner 
  • Instance-based Method
    • 학습 샘플을 저장하고 새로운 데이터가 올때까지 기다린다.
  • 종류
    • K-nearest neighbor 
    • Locally weighted regression
    • Case-based reasoning

  • K-Nearest neighbor Algorithm
    • 모든 데이터는 D 차원 공간에 존재한다.
    • 가장 가까운 이웃은 유클라디안 거리에 의해서 정해진다. ( dist(x1, x2) )
    • 목적함수는 이산(Descrete) 또는 Real-value 이다?
    • voronoi diagram
      • 1NN의 학습 결과로 인식하는 경우 각 보로노이 다이어그램의 어떤 평면에 속하느냐에 따라서 결정된다는 의미를 말하는 것 같음.



  • Real-value를 위한 KNN의 경우 새로운 샘플이 들어왔을 때 예측은 어떻게 할까?
    • KNN의 평균을 이용
  • 거리에 따라 가중치를 주어 사용하는 방법도 있다.   
    • 즉, 거리가 멀면 해당 샘플의 가중치를 줄이고, 가까우면 해당 샘플의 가중치를 크게 함
  • KNN의 평균을 사용하면 노이즈에 강건하다
  • 차원의 저주?

※ 예측(Prediction)과 분류(classification)의  차이는 무엇일까?
   예를 들어 주식 시세를 보면, 현재 시점을 기준으로 다음 시점에 오를지 안오를지 결정하는 것이 분류에 속하며, 현재 주가는 x포인트 인데 다음 시점에는 몇 포인트가 될지 알아내는 것을 예측이라고 할 수 있다.

  •   예측의 주 방법은 Regression 방법이 대표적이다.

    Linear Regression

    -  선형 모델로 어떤 데이터를 모델링하여 x가 주어졌을 경우 y를 알아내기 위해 아래의 선형의 파라미터를 찾는다.

    y = w0 + w1 x


                     

w1과 w0를 각각 구하는 식을 표현한 것이다.


C1

C2

C1

True positive

False negative

C2

False positive

True negative


 위의 Matrix를 Confusion Matrix라 

 acc(M): 분류기 M의 정확도를 나타냄

  Error rate (misclassification rate) of M = 1 – acc(M)

        sensitivity(민감도) = t-pos/pos             /* true positive recognition rate */

  specificity(특이성) = t-neg/neg             /* true negative recognition rate */

  precision(정밀도) =  t-pos/(t-pos + f-pos) -> 찾은거 중에 제대로 찾을 확률을 나타냄

  accuracy = sensitivity * pos/(pos + neg) + specificity * neg/(pos + neg)   

  -> 민감도와 특이성에 postive sample의 갯수와 negative 샘플듸 갯수를 가중치로 하여 정확도를 나타냄


Predict Error Measure

함수 종류 

Absolute error : |yi-yi`|

squared error : (yi-yi`)^2

Test Error 방법


분류기 또는 예측기의 정확도 평가 방법

Holdout Method

주어진 데이터를 랜덤하게 두개의 부분 집합으로 분리함

예) 학습 모델을 위한 학습 샘플(2/3), 정확도 평가를 위한 샘플(1/3)

랜덤하게 샘플링한다.

k번 반복하여 나온 accuracy를 평균하여  평가

Cross-validation

주어진 데이터를 같은 크기를 갖는 k개로 나눈다.

i번째 반복에서는 Di를 테스트 집합으로 하고 나머지는 학습 집합으로 하여 수행한다.

leave-one-out : 만약 샘플이 매우 작아 k가 샘플 수와 같은 경우


632 bootstrap

주어진 데이터에서 d번 샘플링 한다(뽑았던 것을 다시 뽑을 수 있는 랜덤 샘플링 방법을 사용) 

만약 d번 랜덤 샘플링 하였다면 전체 집합에서 어느정도의 데이터가 추출될까?

(1-1/d)^d = 36.8%  ->어떤 샘플이 뽑힐 확률은 1/d이며 이를 d번 반복하였으니까 뽑히지 않을 확률이다.

따라서 이와 반대로 가중치를 주어 여러번 수행하여 평가한다.

[의문 점] 왜 K번 반복하는데 1/k을 하지 않는 것인가? 

나름 해석 : 같은 척도로 비교할 시에는 모두 1/k을 하지 않으니까 어느게 좋은지 판단하기 위한 것이라면 크게 상관이 없을듯하다.


Bagging : Bootstrap Aggregation

학습

1. 전체 집합 D에서 i번 반복하면서 랜덤하게 d개의 샘플을 추출하여 만든 집합 Di를 생성

2. 학습 모델 Mi는 Di를 이용하여 학습한 모델이다.

분류

1. 샘플 X가 주어지면 모든 Mi에 넣고 분류를 수행

2. 최종 분류는 여러개의 Mi에서 나온 결과값을 이용하여 가장 많이 선택된 클래스롤 할당하여 분류함.

예측

1. 각각의 모델에서 나온 결과값을 평균하여 continuous value를 구할 수도 있다.

장점

노이즈에 강건하다

종종 하나의 분류기를 사용하는 것보다 좋은 성능을 보인다.

예측에서 좋은결과를 보인다.


 

본 게시물이 도움이 되었다면, 꾸~욱~ 눌러주세요.

포스팅 하는데 많은 힘이 됩니다~~~

반응형