본문 바로가기
대학공부/기계학습

Feature selection, SVM, 앙상블

by 진진리 2023. 10. 11.
728x90
  • Feature selection: 기존 features의 subset을 선택
    • feature의 수가 많을 때 상대적으로 sample의 수가 적으면 모델이 overfit됨
    • 필요한 feature를 골라 사용하여 성능 향상
    • 제거해야 하는 feature: irrelevant, redundant features
    • 어떻게 판단?
      1. filter methods: 하나씩 제거해서 만든 모델의 성능을 각각 평가하여 feature의 순위를 매김. feature를 개별적으로 평가.
      2. wrapper methods: 모든 가능한 조합에 대하여 test하여 최적의 조합을 선택. feature가 서로 독립적이지 않으므로 사용. complexity가 높음.
      3. embedded methods: 여러 머신러닝 모델로 training 시킨 후 그 모델을 통해 feature를 끄집어 냄.

 

 

  • linear로 non-linear boundary를 만드는 방법
    1. MLP: perceptron을 여러 개 합침 (일종의 합성함수)
    2. SVM: input space를 non-linear mapping을 이용해 new space로 변환
    3. 앙상블

 

  • SVM(Support Vector Machine)
    • non-linear mapping 방법: cv를 통해 모두 평가한 후 결정 - complexity 문제 발생
    • -> kernel trick 사용: training data만 가지고 kernel trick에 대입하면 성능 비교 가능
    • Linear model:
      • margin: 모델과 같은 기울기면서 가장 가까운 데이터와 만나는 양 방향의 두 직선의 거리가 같을 때 가장 큼
      • support vector: margin 결정에 영향을 미치는 두 데이터 pair. margin이 가장 큰 딱 한 쌍만 존재
        • 찾는 방법: 양쪽 class의 모든 instances의 pair에 대하여 cv
      • 1) maximum margin (=hard margin) classifier
        • margin을 최대로 하는 쪽으로 w, b를 찾음 (mathy한 방법)
        • 하나의 unique한 classifier를 찾음
        • local minima에 빠지지 않고 global optima를 찾음
        • dimension이 큰 dataset에서 성능이 더 잘 나옴
      • 2) support vector (=soft margin) classifier
        • 명백하게 오류(아웃라이어)인 것은 틀렸다고 가정한(에러를 허용하는) margin
        • 몇 개의 데이터로 인해 linear하게 표현하기 어려울 때 약간의 error misclassification 허용
    • Non-linear model: SVM
      • 데이터 모양이 non-linear할 때 input의 차원을 변경
      • kernel trick: polynomial / RBF / Sigmoid
        • polynomial kernel: (a1*a2+r)^d
      • 차원(d) 결정은 cv로, 성능(각 pair 당 거리)는 kernel trick으로
      • 적절한 kernel을 찾기 위해 support vector classifier 사용

 

 

  • Ensemble(앙상블): 여러가지 모델을 조합하여 더 좋은 결정을 내리는 방법
    • 위원회: 여러 모델의 판단을 종합해 결정 -> 이때 각각의 모델은 독립적인 의사결정
    • 장점: 성능 증가, overfitting 감소
    • 단점: 해석과 설명이 어려움
    • 위원회를 어떻게 구성? 어떻게 판단을 종합?
      1. Bagging (=bootstrap aggregating): 가장 간단. dataset에 대하여 여러 모델을 만든 후 다수결 결정.
        • 랜덤 데이터샘플링(resampling): data의 서로다른 samples에 대한 같은 종류의 모델(대표적으로 DT)을 생성
        • 랜덤 파라미터: 모델을 만들 때 사용되는 feature를 고를 때 k개 feature 중 best top 3 or 5 중에 랜덤/stochastic(가중치를 준 랜덤)으로 골라서 다른 parameter가 나오도록 유도
        • 대표적으로 Random forest
      2. Boosting: 모델 하나를 만든 후 misclassification에 대한 가중치를 부여한 후 다시 같은 종류의 모델을 생성하는 것을 반복한 후 합침. 각 모델들은 서로의 단점을 보완 가능.
        • 생성한 여러 개의 모델이 비슷할 때 사용
        • weighted voting을 함
        • 구현 방법: Ada Boost
          • 주로 DT, 가장 많이 쓰임.
          • 여러 개의 Stump(=weak learners, 하나의 feature만 사용하는 DT) 생성.
          • error가 큰 stump에 가중치: Amount of say = 1/2 log(1-e)/e  //e가 작을수록 발언권 커짐
          • 이 모델의 e와 발언권을 가지고 다음 모델의 stump를 만듦
          • new sample weight = sample weight * e^(amount of say)
          • weighted gini index 사용
      3. Hetero models의 ensemble: 다른 종류의 모델들 사용
        • 3-1) Voting (Averaging - numerical data의 경우)
        • 3-2) Stacking: base model의 결과 값과 데이터를 input으로 다시 학습 (meta-learner). meta-learner가 voting precedure을 대신함.

'대학공부 > 기계학습' 카테고리의 다른 글

실습 1차시: ZeroR, OneR, Naive Bayes Classifier  (0) 2023.10.11
Deep NN  (0) 2023.10.11
Evaluation  (0) 2023.10.11
Classification(2)  (0) 2023.10.10
Classification(1)  (0) 2023.10.10