[ML] Summary SVM

2022. 5. 30. 16:06·Programming
728x90
728x90

Summary

Support vector machine 은 classifier 의 한 유형 : (regression도 가능함).

  • Support vector 만을 사용하여 분류의 기준인 hyperplane 이 계산되어지기 때문에 Support vector machine이라는 이름이 유래됨.
  • Machine 은 vector 형태의 입력을 통해 decision (클래스의 분류)을 하는 의사결정머신 이라는 점에 착안.

Support vector 를 이용하여 generalization error 를 최소화하는 classifier 를 만들 수 있음.

  • 가장 우수한 supervised learning algorithm 중 하나로 꼽힘.
  • 단, SVM 의 성능은 hyper parameter (C, gamma) 및 kernel 에 매우 민감한 영향을 받음.
  • 또한 입력의 scale 에도 매우 민감함.

Kernel SVM의 장단점과 매개변수

장점

  • Kernel SVM은 매우 강력한 모델 : 다양한 데이터셋에서 잘 작동
  • SVM은 데이터의 특성이 몇 개 안 되더라도 복잡한 decision boundary를 만들 수 있음.
  • 저차원과 고차원의 데이터(= feature (or # of columns) 적을 때와 많을 때)에 모두 잘 작동

단점

  • training dataset의 case가 많을 때 (=sample_size가 큰 경우)는 효과적이지 못한 편.
    • 10,000개의 샘플 정도면 SVM 모델이 잘 작동
    • 100,000개 이상의 데이터셋에서는 속도와 메모리 관점에서 적용이 어려움.
    • case가 늘어날 수록 강력한 성능 향상을 보이는 deep ann계열이 최근 SVM보다 많이 사용되는 이유 중 하나임.
  • 데이터 전처리(preprocessing)와 hyper-parameter 설정이 매우 중요함.
    • 모든 특성이 비슷한 단위이고(예를 들면 모든 값이 픽셀의 컬러 강도) 스케일이 비슷하면 SVM이 잘 동작함.(feature scailing이 매우 중요)
    • 최근 대부분의 경우, random forrest나 gradient boosting 과 같은 (전처리가 거의 또는 전혀 필요 없는) 트리 기반 모델을 애플리케이션에 많이 사용
    • 커널 SVM에서 중요한 hyper-parameter는 regularization 과 관련된 $C$의 크기 선택, 어떤 커널을 사용할지, 각 커널에 따른 매개변수 등이 있음. : 조합이 매우 다양하고, 각각이 성능에 미치는 영향이 매우 큼.
      • RBF kernel의 경우 gamma와 C 모두 모델의 복잡도를 조정하며 둘 다 큰 값이 더 복잡한 모델을 만들어냄. → 두 파라메터간 연관성 존재.
      • 연관성이 많은 이 두 매개변수를 잘 설정하려면 C와 gamma를 함께 조정해야 함. → 쉽지 않음.
  • SVM 모델은 분석하기 까다로운 편.
    • 예측이 어떻게 결정되었는지 이해하기 어렵고 비전문가에게 모델을 설명하기가 난해한 편임.
    • 수학적으로 generalization error가 줄어드는 이유가 명확하고, kernel trick을 통한 non-linear 적용이 효과적이나, 개별 학습된 최종 모델을 해석하고 설명하는 것은 다른 문제임.

참고자료

  • 헤이스티, 팁시라니, 프리드먼의 『The Elements of Statistical Learning』12장
    • https://web.stanford.edu/~hastie/Papers/ESLII.pdf

'Programming' 카테고리의 다른 글

Paradigm (패러다임)  (0) 2022.07.21
[Python] 현재 사용 중인 Python 및 패키지의 실제 경로 확인하기.  (2) 2022.07.18
[Error: Tensorboard] ImportError: cannot import name 'Mapping' from 'collections'  (1) 2022.05.18
[ML] Entropy, KL-Divergence, and Cross-entropy  (0) 2022.05.12
[Conda] miniconda의 기본 채널 변경 : conda-forge  (3) 2022.04.05
'Programming' 카테고리의 다른 글
  • Paradigm (패러다임)
  • [Python] 현재 사용 중인 Python 및 패키지의 실제 경로 확인하기.
  • [Error: Tensorboard] ImportError: cannot import name 'Mapping' from 'collections'
  • [ML] Entropy, KL-Divergence, and Cross-entropy
dsaint31x
dsaint31x
    반응형
    250x250
  • dsaint31x
    Dsaint31's blog
    dsaint31x
  • 전체
    오늘
    어제
    • 분류 전체보기 (748)
      • Private Life (13)
      • Programming (56)
        • DIP (112)
        • ML (26)
      • Computer (119)
        • CE (53)
        • ETC (33)
        • CUDA (3)
        • Blog, Markdown, Latex (4)
        • Linux (9)
      • ... (351)
        • Signals and Systems (103)
        • Math (172)
        • Linear Algebra (33)
        • Physics (42)
        • 인성세미나 (1)
      • 정리필요. (54)
        • 의료기기의 이해 (6)
        • PET, MRI and so on. (1)
        • PET Study 2009 (1)
        • 방사선 장해방호 (4)
        • 방사선 생물학 (3)
        • 방사선 계측 (9)
        • 기타 방사능관련 (3)
        • 고시 (9)
        • 정리 (18)
      • RI (0)
      • 원자력,방사능 관련법 (2)
  • 블로그 메뉴

    • Math
    • Programming
    • SS
    • DIP
  • 링크

    • Convex Optimization For All
  • 공지사항

    • Test
    • PET Study 2009
    • 기타 방사능관련.
  • 인기 글

  • 태그

    DIP
    linear algebra
    math
    Convolution
    Term
    cv2
    opencv
    fourier transform
    Optimization
    function
    Probability
    Programming
    signal_and_system
    signals_and_systems
    인허가제도
    Vector
    numpy
    SIGNAL
    SS
    Python
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
dsaint31x
[ML] Summary SVM
상단으로

티스토리툴바