← AI 놀이터 홈으로

🪄 커널 트릭 (Kernel Trick)

직선으로 못 자르면 띄워서 잘라라! 도넛처럼 직선으로 안 나뉘는 데이터를, 고차원으로 띄워 올려 평면으로 자르는 SVM의 비장의 무기예요.

📖 따라하기 가이드 — 1 / 7 단계

Step 1. 도넛의 절망 — 직선으로는 못 나눠요

SVM 페이지 마지막에 예고했던 그 문제예요. 화면의 🍩 도넛 데이터는 🔵 파랑이 가운데, 🔴 빨강이 그 둘레를 감싸고 있어요. 어디에 직선을 그어도 한쪽 무리가 반드시 잘려 나가죠 — 마진이고 뭐고, 직선으로는 애초에 불가능해요. SVM의 비장의 무기 커널 트릭(kernel trick)이 등장할 차례예요.
📂 데이터 꾸러미:

파랑이 가운데, 빨강이 그 둘레를 감싸요. k-NN은 거뜬한데 얕은 트리는 고생하는 모양이에요.

📖 읽는 법: 가로·세로축은 두 가지 특징이에요. 배경색이 모델의 판정 — 파랑 영역이면 +1, 빨강 영역이면 −1로 분류하고, 색이 진할수록 확신이 커요. 학습 전엔 하얗다가(판단 없음), 학습이 진행되면 동그란 경계가 자라나요. 직선이 아니라는 게 핵심이에요!

🚀 띄워서 보기 — 커널 트릭의 직관

📖 읽는 법: 각 점을 중심 (5,5)에서의 거리 r(가로)과 r²(세로, "높이로 띄운 값")에 다시 찍은 그림이에요. 🍩 도넛에선 가운데 파랑이 낮게, 둘레 빨강이 높게 떠서 보라 수평 점선 하나로 나뉘어요 — 2차원에서 원이던 경계가, 띄우고 나면 그냥 직선! (다른 꾸러미는 거리만으로 안 나뉠 수도 있어요 — 그땐 다른 "띄우기"가 필요하다는 뜻이에요.)

🎛️ 조작하기

γ를 바꾸면 α(각 점의 발언권)가 초기화돼요 — 다시 ▶ 학습!

📊 지금 상태

정확도
0 / 0
γ
8.0
학습 반복
0회

각 학습점 i는 발언권 αᵢ를 가져요. 새 점의 판정은 Σ αᵢ·yᵢ·K(xᵢ, x) — 학습점들과의 비슷함 점수를 발언권만큼 모은 합의 부호예요.

🧮 수식과 파이썬

K(a, b) = exp(−γ‖a−b‖²)
두 점이 가까우면 1, 멀면 0 — '비슷함 점수'만으로 고차원에 다녀온 효과를 내요 (커널 트릭)

💡 화면의 모델은 SVM을 단순화한 사촌(커널 로지스틱)이에요 — 커널로 경계가 만들어지는 원리는 같아요.

🐍 파이썬 코드로 보면? (펼치기)
from sklearn import svm
from sklearn.datasets import make_circles

X, y = make_circles(factor=0.4, noise=0.08)  # 🍩 도넛 데이터

linear = svm.SVC(kernel='linear')  # 직선만 긋는 SVM
linear.fit(X, y)
print(linear.score(X, y))          # 0.5쯤 — 도넛엔 속수무책 😢

rbf = svm.SVC(kernel='rbf', gamma=8)  # 커널 트릭 장착!
rbf.fit(X, y)                         # '비슷함 점수'로 띄워서 자르기
print(rbf.score(X, y))                # 1.0 — 동그란 경계 완성 🎉