기계학습

서포트 벡터 머신(SVM, Support vector machine)을 이해하기 위한 자료들

H_erb Salt 2022. 5. 19. 21:44

지난 대학원 강의 과제가 SVM을 계산 라이브러리를 사용하지 않고 구현하는 것이었다.

사실 이런 구현 과제는 구글과 깃헙에서 5분 내로 차고 넘치게 구할 수 있다.
그런데 그런 copy & paste가 대체 무슨 의미가 있을까

scikit learn에서 SVC() 한번이면 끝나는 알고리즘 안에 이렇게 깊은 내용이 있는지 몰랐다.
반성하면서 2주 정도 공부하며 시간을 보냈던 것 같다.

사실, 아직까지 그 의미를 정확히 수식으로 풀어내진 못한다. 그래도 그냥 SVM의 핵심 아이디어는 어떤 것인지,
그를 지탱하는 수식의 의미는 어떤 것인지 그 키워드들을 말할 수 있는 정도의 수준은 된 것 같다.

그런 느낌만 파악하기 위해 수집한 자료들을 정리하였다.

1. CS229 강의노트 (기본 강의자료)

cs229-notes_SVM.pdf
0.18MB

- 강의에 활용되었던 기본 강의자료이다. 100% 완전한 내용이 들어가 있으나, 부끄럽지만 내용 자체를 기본기가 부족한 상태에서 받아들이긴 힘들어 다른 자료를 찾아보았다.

2. 단단한 머신러닝(오프라인 서적)

- 유명한 서적이다. 머신러닝에 쓰이는 알고리즘들을 기본 강의자료 보다 조금 더 쉽게 풀어서 설명해놓았다. SVM의 동작방식과 아이디어에 관해 기본적인 개념을 잡을 수 있었다.

3. 혁펜하임의 "탄탄한" 최적화(Optimization) 시리즈

https://www.youtube.com/watch?v=E-INcQ4rRVk&list=PL_iJu012NOxeMJ5TPPW1JZKec7rhjKXUy


- 카이스트 박사님이 운영하시는 유튜브 채널인것 같다. 딱 요즘 느낌의 편집속도와 세련됨이 갖춰진, 나같은 입문자가 이해하기 쉽게 설명해주시는 굉장한 분이셨다. 이분 강의를 통해 lagrangian multiplier, (In)equality constratins problem 및 Primal/Dual problem, KKT 등 핵심 수식들을 이해하는데 굉장히 큰 도움이 되었다.
- 강의도 뛰시는 분인것 같다. 강의력도 굉장하신거 같은데, 기회가 된다면 회사에 초청해보고 싶다.

4. syncfusion에서 배포한 자료

support_vector_machines_succinctly.pdf
3.16MB


- SVM과 그 수식들을 code based로 풀어낸 자료이다. 실제로 코드로 돌려가며 확인 가능하다는 점에서 굉장한 자료였다. 다만 위 모든것들을 풀어내는 SMO 알고리즘에 관한 부분이 조금 아쉬워(내가 이해를 거기까지 못했다는 핑계로) 최종적으로 아래의 논문으로 마무리하였다.

5. Yet more simple SMO algorithm

Yet more simple SMO algorithm.pdf
0.73MB

- SMO 알고리즘을 간략하게 구현하는 선형대수 아이디어를 numpy로 구현한 논문이다. 위 코드를 베이스로 과제에 맞게 코드를 수정하여 제출하였다.