[노코드머신러닝]서포트 벡터 머신, 가보자고! ✊🏻

조회수 4873

뉴스레터 콘텐츠로 바로가기! 📚



오늘도 어김없이 돌아온 <노코드 머신러닝의 이해> 4️⃣번째 시간! 어려운 프로그래밍 대신 평소에 자주 사용하는 엑셀로 머신러닝을 이해해 볼 텐데요! 오늘은 데이터가 어느 카테고리에 속할지 판단하기 위해 가장 적절한 경계를 찾아주는 서포트 벡터 머신에 대해 알아보도록 하죠! 엑셀로 파헤치는 서포트 벡터 머신의 작동원리, 궁금하지 않으신가요?


이 뉴스레터를 보면 좋은 사람은?

👶🏻 : 러닝머신? 머신러닝? 머신러닝을 처음 들어보는 왕왕왕초보!

👲🏻 : 실무에서 사용하는 엑셀로 노코드 머신러닝 하고 싶으신 분!

👸🏻 : ‘나도 어디서 서포트 벡터 머신 해봤어~’ 라고 자랑하고 싶으신 분!


-에이블런 리사 드림💌




지도학습 VS 비지도학습 🤜🏻🤛🏻


본격적인 SVM을 살펴보기 앞서, 지금까지 공부한 머신러닝의 지도학습과 비지도학습을 복습해 보도록 하겠습니다. 먼저 지도학습(Supervised Learning)은 데이터에 대한 정답을 알고 있는 상태에서 컴퓨터를 학습시키는 방법입니다. 왼쪽 사진에서와 같이 🐯는 호랑이, 🐰는 토끼라는 정답이 주어진 상태에서 컴퓨터를 학습시켜, 🐯를 호랑이라고 인식하는 것이죠. 우리가 지금까지 공부한 지도학습으로는 나이브 베이즈가 있어요! 반면, 비지도학습(Unsupervised Learning)은 데이터에 대한 정답을 모르는 상태에서 오직 입력되는 데이터만을 이용해 컴퓨터를 학습시키는 방법입니다. 오른쪽 사진에서와 같이 입력된 🐯와 🐰를 비슷한 그룹으로 묶어 예측하는 모델을 학습해요. 우리가 지금까지 공부한 비지도 학습으로는 k-means 클러스터링이 있죠!




서포트 벡터 머신, 가보자고! ✊🏻


그렇다면 본격적으로 서포트 벡터 머신, 한 번 가보실까요? 서포트 벡터 머신에는 수학 공식이 많이 사용되지만, 이번 <노코드 머신러닝의 이해>에서는 수학 공식을 제외한 간단한 원리를 알아보도록 할게요. 잠깐, 그럼 여기서 재미있는 퀴즈를 한 가지 내보도록 하겠습니다. 🙋🏻‍♀️🙋🏻‍♂️



여기 호랑이 집단🐯과 토끼 집단🐰이 있는데요. 이 두 집단의 크기와 속도를 고려하여 산점도 형태로 표시해두었습니다. 이때, 호랑이와 토끼 집단 간의 평화를 위해서 산점도상에 직선을 긋고, 그 위에 벽을 설치하려고 합니다. 이렇게 호랑이 집단과 토끼 집단을 구분하는데에는 수만 가지의 직선이 있을 수 있는데요. 위 사진에서도 알 수 있듯이 수만 가지 직선 중, 직선 A와 B를 대표적으로 그려보았습니다! 직선 A와 B는 모두 호랑이 집단과 토끼 집단을 잘 구분해 주는데요. 직선 A와 B 중 어느 직선이 두 집단을 가장 잘 구분해 준다고 말할 수 있을까요? 


정답은 바로 A직선인데요! 그 이유는 무엇일까요? 🤷🏻‍♀️🤷🏻‍♂️ 해답을 찾기 위해서는 새로운 데이터가 들어왔을 때, 어떠한 변화가 생기는지를 고려해야 합니다! 따라서 위 사진에서와 같이 ‘새로운 토끼’ 데이터를 가져왔어요. (보라색 동그라미가 쳐있는 🐰입니다.)  A직선은 여전히 호랑이 집단과 토끼 집단을 잘 구분하지만, B직선은 ‘새로운 토끼’ 데이터가 호랑이 집단으로 구분되었습니다.😣 그렇다면, 두 집단을 잘 구분한 A직선의 비결은 무엇일까요? A직선의 경우, 선을 중심으로 두 집단이 멀리 떨어져 있다는 특징이 있습니다! 이러한 특징 덕분에 새로운 데이터가 들어오더라도 여전히 두 집단을 잘 구분할 수 있기 때문에 일반화하기 쉬워지죠.


바로 이러한 아이디어가 서포트 벡터 머신에 적용되는데요. 서포트 벡터 머신(Support Vector Machine, SVM)이란 데이터가 어느 카테고리에 속할지 판단하기 위해 가장 적절한 경계를 찾는 선형 모델입니다. 위 예시에 적용해 보면, 새로운 데이터가 토끼 집단🐰과 호랑이 집단🐯 중 어떤 카테고리에 속할지 판단하기 위해서 적절한 직선을 찾는 선형 모델이죠! 이때, 우리는 이미 토끼 데이터, 호랑이 데이터라는 정답을 알고 있는 상태에서 컴퓨터를 학습시키기 때문에 서포트 벡터 머신은 지도 학습에 포함됩니다! 또한, 내가 관심을 가지고 있는 2개의 예측 변수는 동물의 속도와 크기인데요. 이때의 경계는 예측변수의 수인 2차원보다 한 차원 낮은 1차원의 직선으로 나타낼 수 있죠. 만약, 예측 변수가 3개가 된다면 결정경계는 3차원보다 한 차원 낮은 2차원의 평면이 되는 것이죠! 

그렇다면, 적절한 직선을 찾는 방법은 무엇일까요?🧐 서포트 벡터 머신에서는 호랑이 집단과 토끼 집단의 데이터 중, 각 집단의 경계 부분에 위치한 데이터들의 거리가 가장 많이 떨어져 있으면 두 집단을 잘 구분한다고 생각해요. 따라서 적절한 직선을 구하기 위해서는 첫 번째로 경계 부분에 위치한 데이터들을 지나는 평행한 직선을 그리면 됩니다! 이때, 경계선상에 있는 데이터들을 바로 서포트 벡터(support vector)라고 불러요. 

다음 단계로는 평행하게 그은 두 직선에 수직이 되는 선을 그리면 되는데요. 이렇게 두 집단인 토끼와 호랑이에서 서로 가장 가까이 위치한 데이터 간의 거리를 마진(margin)이라고 부릅니다. 


마지막으로는 서포트 벡터의 가운데를 지나면서, 수직인 직선을 구하면 됩니다. 이 직선은 집단을 분할하는 기준이며 마진의 중앙을 통과하는 결정경계(Decision Boundary)죠! 지금까지의 내용을 한눈에 알아보기 위해서는 아래 사진을 참고 해주세요👀




하드 마진 VS 소프트 마진 🤜🏻🤛🏻

이러한 서포트 벡터 머신은 마진 값에 따라 하드 마진 SVM과 소프트 마진 SVM으로 구분할 수 있는데요. 하드 마진 SVM(Hard margin SVM)이란, 매우 엄격하게 집단을 구분하는 방법으로 이상치를 허용해 주지 않는 방법입니다. 따라서 왼쪽 사진과 같이 토끼 데이터는 토끼 데이터끼리, 호랑이 데이터는 호랑이 데이터끼리 구분했죠. 이러한 하드 마진 SVM은 데이터를 너무 과하게 적합하는 문제점이 생길 수 있어요. 반면, 소프트 마진 SVM(Soft margin SVM)이란, 이상치를 허용해 몇 개의 데이터를 잘 못 분류하더라도 나머지 데이터를 더욱 잘 구분해주는 방법입니다. 따라서 오른쪽 사진과 같이 토끼 집단에 이상치인 호랑이 데이터가 2개 있지만, 이러한 이상치를 허용해 주죠. 이러한 소프트 마진 SVM은 데이터의 패턴을 잘 감지하지 못하는 문제점이 생길 수 있어요.




커널 트릭이란? 😏

지금까지의 데이터는 간단하게 선형으로 분리가 가능했습니다. 하지만, 데이터를 하나의 선으로 구분하기 어려운 경우도 있는데요! 왼쪽의 사진은 토끼 집단과 호랑이 집단의 ‘식사 횟수’를 나타낸 직선입니다. (마이너스 데이터를 표현하기 위해 식사 횟수가 -3인 경우, 3일 동안 굶주린 동물이라고 가정해 볼게요.) 여기에는 3일동안 굶주린 호랑이🐯와 하루를 굶주린 토끼🐰, 3일 동안 배부르게 식사를 한 호랑이🐯 등 많은 동물이 있어요. 그렇다면, 호랑이 집단과 토끼 집단을 적절하게 구분해 주는 선은 어떻게 그릴 수 있을까요? 🤷🏻‍♀️🤷🏻‍♂️ 정답은 2개의 집단을 정확하게 구분하는 직선은 없다는 것입니다. 


따라서 오른쪽 그림과 같이 기존의 예측 변수인 ‘식사 횟수’를 확장하여 식사횟수 곱하기 식사횟수를 한 ‘식사횟수^2(식사횟수 제곱)’이라는 또 다른 예측 변수를 만들어요. (이번 예시에서는 X를 X^2(엑스 제곱)으로 변환하는 간단한 커널함수를 살펴볼게요) 그 후, X축에는 기존의 ‘식사 횟수’를 Y축에는 ‘식사횟수^2’를 배치하여 2차원 공간상에 데이터를 표현하면, 직선인 결정경계를 이용하여 두 집단을 깔끔하게 분리할 수 있죠. 이처럼 비선형의 저차원 데이터를 고차원의 공간으로 변환하여 선형적으로 분리 가능하도록 문제를 해결하는 것이 커널 트릭이랍니다!


Introduction to Support Vector Machine (SVM) and Kernel Trick
Gopal Prasad Malakar


지금까지 자세한 작동원리로 알아본 서포트 벡터 머신의 작동원리, 엑셀로 해보고 싶으시다고요? 그럼 <Support Vector Machines–Theoretical Overview and First Practical Steps>(Michael Heinert, 2010)를 참고 해주세요. 또한 엑셀로 하는 커널 트릭이 궁금하시다면, 위에 있는 유튜브 사진을 클릭해 주세요! 🔼🔼🔼


마지막으로 지금까지 열심히 알아본 서포트 벡터 머신은 실생활에서 어떻게 활용되는지 알아보도록 해요! 서포트 벡터 머신을 활용하면 기업🏢의 부도를 예측할 수 있는데요. 매출의 변동성이나 현금흐름부채 등의 데이터를 바탕으로 기업이 건전하게 유지될지, 아니면 부도할지를 예측할 수 있죠. 또한 백혈구와 혈소판 등의 의료 데이터를 바탕으로 환자의 간 질병👩🏻‍⚕💊을 분류하여 진단해 줄 수도 있습니다. 그뿐만 아니라 제조 기업의 진동, 온도 데이터를 활용하여 제조설비🏭의 이상 반응을 예측하는 시스템을 구축할 수도 있어요.


지금 이 콘텐츠 공유하기👇