고객 이탈 예측부터 타기팅까지 : SVM의 마케팅 활용법
서포트 벡터 머신(SVM)은 데이터를 분류하는 데 있어 매우 강력한 머신러닝 알고리즘입니다. SVM은 두 범주를 나눌 수 있는 최적의 경계선(결정경계선)을 찾아내어, 새로운 데이터가 어느 범주에 속하는지를 예측하는 모델입니다.
SVM의 장점
비선형 데이터에서 높은 정확도를 보이며, 과적합이 비교적 적습니다. 또한, 로지스틱 회귀나 판별 분석에 비해 더 정교한 경계선을 찾습니다.
SVM의 단점
이진 분류 문제에서 주로 사용되며, 다중 분류에는 추가적인 방법이 필요합니다.
SVM의 기본 아이디어는 결정 경계선 양쪽의 여백(마진)을 최대화하는 것입니다. 이 마진은 데이터가 얼마나 명확하게 분리되는지를 나타내며, 마진이 넓을수록 모델의 예측력이 높아집니다. 경계선에 가장 가까운 데이터 포인트를 ’ 서포트 벡터‘라 부르며, 이 점들이 모델의 성능을 결정합니다.
위 이미지를 보면 ③번의 결정경계선(Decision boundary)이 가장 넓은 빈 공간을 가지고 있습니다.
③번의 결정경계선을 보면 마진에 빨간 점 두 개와 파란 점 한 개가 맞닿아 있는 것을 알 수 있는데, 이렇게 마진과 맞닿아서 결정경계선의 위치와 각도를 정해줄 수 있는 기준이 되는 관측치를 서포트 벡터(Support Vector)라고 합니다.
최적의 결정경계선을 찾기 위해서는 독립변수가 k개라 했을 때, 최소 k+1개의 서포트 벡터가 필요합니다. 위 이미지에서 독립변수가 2개이기 때문에 3개의 서포트 벡터가 존재합니다.
만약 변수가 3개로 늘어나면, 결정경계선을 평면(plane)이 됩니다. 그 이상으로 차원이 증가하면 그림으로 표현할 수 없는 초평면(hyperplane)이 됩니다. 따라서 SVM은 MMH(Maximum Marginal Hyperplane), 즉 최대 마진 초평면을 찾아 범주를 분리하는 분류 방법이라 할 수 있습니다.
결정경계선은 다음과 같이 표현할 수 있는 데, 여기서 W는 가중치 벡터를 의미합니다. 독립변수의 수에 따라 W={w1, w2,⋯, wk}로 이루어집니다. X는 각 독립변수, b는 편향(bias)을 의미합니다.
�⋅� + b = 0
결정경계선 값은 0이기 때문에, 경계선 위에 있는 관측치는 0보다 크고, 아래에 있는 관측치는 0보다 작습니다. 이를 이용하여 서포트 벡터들과 맞닿은 위아래 마진의 값을 1과 -1로 정의하면 각 관측치의 값은 w0+w1x1+w2x2+⋯+wkxk ≥ ±1 이 됩니다.
대부분 데이터는 이상치가 있기 마련인데, 위 이미지와 같이 파란 점 하나가 빨간 점 구역에 포함된 경우, 두 범주를 정확하게 나눠주기 위해 ①과 같은 결정경계선을 만들어야 합니다. 하지만 이렇게 이상치를 허용하지 않는 경우 과적합 문제가 발생할 수 있습니다.
따라서 어느 정도 이상치를 허용해 줄 필요가 있는데 ②과 같이 두 범주를 정확하게 나누지는 않지만, 마진을 최대화하여 과적합을 방지해 줄 수 있습니다. 이런 개념을 소프트 마진(Soft margin)이라 하며, 반대로 이상치를 허용하지 않는 것을 하드 마진(Hard margin)이라 합니다.
소프트 마진과 하드 마진을 조정해 주는 매개변수로 C와 Gamma가 사용됩니다. C값을 낮게 설정하면 이상치들이 있을 가능성을 높게 잡아서 ②과 같은 결정경계선을 만들어내고, 반대로 C값을 높게 설정하면 ①과 같은 결정경계선을 만들어 냅니다.
Gamma는 하나의 관측치가 영향력을 행사하는 거리를 조정해 주는 매개변수인데, 작은 Gamma 값은 넓은 영향력을 의미하며, 더 부드럽고 넓은 결정경계선을 만들어 내고, 큰 Gamma 값은 좁은 영향력을 가지며, 더 민감한 결정경계선을 형성하는데, 이는 과적합을 유발할 수 있습니다.
위 데이터 분포를 한 상황에서는 아무리 소프트 마진을 높게 설정하더라도 결정경게선을 만들기 힘들고, 만든다 하더라도 모델 성능이 매우 떨어지게 됩니다. 그런 경우에 사용하는 것이 커널 기법으로 기존의 데이터를 고차원 공간으로 확장하여 새로운 결정경계선을 만드는 방법입니다.
커널 기법에는 가우시안 RBF, Polynomial 커널, Sigmoid 커널 등 다양한 종류의 기법이 있습니다.
그래프를 자세히 보면 원점을 중심으로 파란 데이터의 군집이 가까이 있고 빨간 데이터의 군집은 멀리 떨어져 있습니다. 따라서 원점과의 거리를 나타낼 수 있는 축을 추가하여 공간을 확장할 수 있는데, 이처럼 저차원 공간상에서는 나눠줄 수 없었던 범주를 고차원으로 확장하여 분류할 수 있도록 유도해 주는 것이 커널 기법입니다.
Gamma 값은 관측치가 영향력을 행사하는 거리를 조정해 주는 것이라고 했는데, 값이 클수록 영향력의 거리는 짧아지게 되고 값이 작을수록 영향력의 거리는 길어지게 됩니다. 이는 가우시안 분포의 표준편차를 조정해 주는 것으로 Gamma 값이 클수록 작은 표준편차를 갖게 됩니다.
C값은 아무리 크거나 작아도 결정경계선이 하나만 생성되지만, Gamma 값을 커질수록 각각의 관측치에 대한 결정경계선 범위가 작아져서 결국 여러 개의 결정경계선이 생기게 됩니다.
따라서 SVM 모델을 만들 때는 C 값과 Gamma 값을 잘 조정해 가면서 모델의 복잡도를 적정 수준으로 맞춰줘야 합니다.
Python에서는 SVM(Support Vector Machine) 모델을 생성할 때 SVC() 함수를 사용합니다. 이 함수는 다양한 커널 옵션을 지원하며, 기본값은 rbf(Radial Basis Function) 커널로 설정됩니다. 필요에 따라
linear, poly, sigmoid 등 다른 커널을 선택하여 데이터에 맞는 모델을 만들 수 있습니다.
위 코드에서는 linear 커널을 선택하여 SVM 모델을 생성했습니다. 학습 반복 횟수는 1,000회로 설정했으며, train set와 test set 데이터에서 각각 약 86%의 정확도를 기록했습니다. 이는 선형 모델이 데이터의 기본적인 패턴을 잘 학습했음을 보여줍니다.
SVM 모델의 성능은 주로 두 가지 하이퍼파라미터, C 값과 gamma 값에 따라 크게 달라질 수 있습니다.
이를 조정하기 위해 실험을 진행한 결과를 분석해 보겠습니다.
C 값 (Regularization Parameter)
C 값은 결정 경계의 유연성을 조절하는 역할을 합니다. 값이 작으면 여백(margin)을 넓히고, 일부 오류를 허용하면서 일반화 성능을 높입니다. 값이 크면 오류를 줄이고 데이터를 더 정확히 분류하려 하지만, 과적합 위험이 있습니다.
C=6~10에서 테스트 세트 점수가 가장 높아지는 경향을 보입니다. 특히 C=10에서 테스트 세트 점수는 0.8917로 최고 성능을 기록했습니다. 따라서, 이 데이터셋에서는 C=10이 최적의 값으로 판단됩니다.
Gamma 값 (Kernel Coefficient)
gamma 값은 데이터 포인트가 결정 경계에 미치는 영향을 조정합니다. 값이 작으면 데이터 포인트의 영향 범위가 넓어져 모델이 더 단순화됩니다. 값이 크면 각 데이터 포인트가 결정 경계에 큰 영향을 미쳐 모델이 복잡해지고, 과적합 위험이 커집니다.
gamma=1에서 테스트 세트 점수는 0.8778로 안정적인 성능을 보였습니다. gamma=5에서도 비슷한 점수를 기록했으나, gamma 값이 커질수록 모델이 과적합될 가능성이 커지므로 gamma=1이 더 일반화된 선택으로 보입니다. 반대로 0.5의 경우도 테스트 세트 점수는 더 크나, 과소적합(underfitting) 문제가 발생할 가능성이 큽니다.
결과를 종합하면, C=10과 gamma=1이 이 데이터셋에서 최적의 하이퍼파라미터 조합으로 판단됩니다.
하지만, 더 신뢰할 수 있는 결과를 위해 교차 검증(Cross-Validation)을 통해 성능을 검증하거나, Grid Search를 사용하여 하이퍼파라미터를 더 세밀하게 튜닝하는 것이 좋습니다. 예를 들어, C=9.5 또는 gamma=0.8, 1.2와 같은 값을 추가로 실험해 볼 수 있습니다.
자세한 코드는 아래 링크를 통해서도 참고하실 수 있습니다.
https://colab.research.google.com/drive/1g4BBfGudLS7nXnDPMxxsurvVILCuE7Yn?usp=sharing
실무에서 서포트 벡터 머신(SVM)은 마케팅 분석에서 주로 고객 세분화, 캠페인 타기팅 그리고 고객 이탈 예측 등에 활용됩니다.
예를 들어, 고객 데이터를 기반으로 구매 패턴을 분석하고, 이를 통해 특정 상품에 대한 구매 가능성이 높은 고객군을 식별하는 데 SVM을 사용할 수 있습니다. 또한, CRM 캠페인에서 반응할 가능성이 높은 고객과 그렇지 않은 고객을 분류하여, 맞춤형 메시지를 제공하는 데도 활용될 수 있습니다.