지난 대학원 강의 과제가 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로 구현한 논문이다. 위 코드를 베이스로 과제에 맞게 코드를 수정하여 제출하였다.
'기계학습' 카테고리의 다른 글
확률분포 종류 (0) | 2024.01.15 |
---|---|
conjugate gradients 엄청난 설명 자료 (0) | 2022.04.16 |
2. 편향-분산 트레이드 오프 (Bias-Variance trade off) (0) | 2022.04.15 |
1. 앙상블(Ensemble) 기법과 배깅(Bagging), 부스팅(Boosting), 스태킹(Stacking) (1) | 2022.04.15 |