서포트 벡터 머신(SVM, Support vector machine)을 이해하기 위한 자료들
지난 대학원 강의 과제가 SVM을 계산 라이브러리를 사용하지 않고 구현하는 것이었다.
사실 이런 구현 과제는 구글과 깃헙에서 5분 내로 차고 넘치게 구할 수 있다.
그런데 그런 copy & paste가 대체 무슨 의미가 있을까
scikit learn에서 SVC() 한번이면 끝나는 알고리즘 안에 이렇게 깊은 내용이 있는지 몰랐다.
반성하면서 2주 정도 공부하며 시간을 보냈던 것 같다.
사실, 아직까지 그 의미를 정확히 수식으로 풀어내진 못한다. 그래도 그냥 SVM의 핵심 아이디어는 어떤 것인지,
그를 지탱하는 수식의 의미는 어떤 것인지 그 키워드들을 말할 수 있는 정도의 수준은 된 것 같다.
그런 느낌만 파악하기 위해 수집한 자료들을 정리하였다.
1. CS229 강의노트 (기본 강의자료)
- 강의에 활용되었던 기본 강의자료이다. 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에서 배포한 자료
- SVM과 그 수식들을 code based로 풀어낸 자료이다. 실제로 코드로 돌려가며 확인 가능하다는 점에서 굉장한 자료였다. 다만 위 모든것들을 풀어내는 SMO 알고리즘에 관한 부분이 조금 아쉬워(내가 이해를 거기까지 못했다는 핑계로) 최종적으로 아래의 논문으로 마무리하였다.
5. Yet more simple SMO algorithm
- SMO 알고리즘을 간략하게 구현하는 선형대수 아이디어를 numpy로 구현한 논문이다. 위 코드를 베이스로 과제에 맞게 코드를 수정하여 제출하였다.