커널 주성분 분석(Kernel PCA)이란? AI에서 커널로 비선형 특징을 찾는 방법
TL;DR
커널 주성분 분석은 표본 사이의 커널 값을 행렬로 만들고 중심화한 뒤, 그 고유값과 고유벡터로 새 좌표를 만드는 방법입니다. RBF 같은 비선형 커널을 사용하면 원본의 직선 축으로 충분히 드러나지 않는 관계를 살필 수 있습니다. 커널을 쓰지 않는 일반 PCA와 목적은 연결되지만 입력 행렬과 새 자료의 변환, 복원 방식은 다릅니다. 커널·성분 수를 검증하고 표본 수에 따른 비용과 근사 역변환의 한계를 함께 확인합니다.
핵심 3줄 요약
- 핵심 1
커널 공간에서 새 축을 찾습니다. 표본 쌍의 값을 계산해 원본 특징의 비선형 관계를 표현합니다. - 핵심 2
커널 설정이 결과를 바꿉니다. RBF의 gamma와 전처리가 바뀌면 같은 자료도 다른 좌표가 됩니다. - 핵심 3
복원은 별도 학습한 근사입니다. 차원이 줄거나 그림이 잘 나왔다고 원본 복원·예측 품질까지 보장하지 않습니다.
이 글에서 다룰 내용
- 커널 주성분 분석의 한 문장 정의
- 두 원과 거리별 커널 값으로 이해하는 쉬운 예시
- 커널 행렬·중심화·고유값·투영의 작동 순서
- RBF·gamma·성분 수와 출력값의 역할
- PCA·Isomap·커널 근사와의 차이
- 새 입력과 사전 계산 커널의 확인 순서
- 근사 역변환·메모리·데이터 누수의 주의점
커널 주성분 분석을 한 문장으로 정의하면 무엇인가요?
커널 주성분 분석은 커널로 정의한 특징 공간에서 분산이 큰 방향을 찾고 표본을 그 방향의 좌표로 표현하는 주성분 분석의 확장입니다.
영문명은 Kernel Principal Component Analysis이며 Kernel PCA 또는 KPCA라고 줄여 씁니다. 커널 PCA도 같은 개념입니다. 이 글은 scikit-learn의 KernelPCA 문서와 공식 구현을 기준으로 설명합니다. 기본적인 fit은 정답 라벨을 사용하지 않는 비지도 변환입니다.
커널은 두 표본을 특징 공간으로 옮겼을 때의 내적을 직접 계산하는 함수입니다. 복잡한 새 특징을 모두 나열하지 않고도 표본 쌍의 관계를 행렬로 다룹니다. 비선형 커널에서는 원본 입력과 새 좌표의 관계도 비선형이지만 선택한 커널이 모든 업무의 의미나 정답을 자동으로 반영하지는 않습니다.
한 줄 정리: 원본의 열을 직접 회전하는 대신, 커널로 계산한 표본 관계를 중심화하고 새 좌표를 찾습니다.
쉬운 예시로 이해해 볼까요?
감자나라ai님이 같은 중심을 가진 작은 원과 큰 원의 점들을 구분한다고 가정해 보겠습니다. 평면에서 두 원을 직선 하나로 완전히 나누기는 어렵습니다. 일반 PCA로 축을 바꿔도 선형 변환만으로 이런 중첩이 풀리지는 않습니다. 공식 비교 예제는 RBF 커널로 다른 특징 표현을 만드는 모습을 보여 줍니다.
RBF는 가까운 점에 큰 커널 값을, 먼 점에 작은 값을 줍니다. 공식 식은 제곱 거리에 gamma를 곱한 값의 음수를 지수 함수에 넣습니다. gamma가 0.5이고 두 점의 거리가 각각 1과 3일 때 계산한 값은 아래와 같습니다. 이는 직접 계산한 설명용 숫자이며 두 원의 분류 성능을 측정한 결과가 아닙니다.
- 거리가 1인 쌍의 RBF 커널 값은 약 0.606531입니다.
- 거리가 3인 쌍의 RBF 커널 값은 약 0.011109입니다.
- 같은 거리 1에서도 gamma를 2로 바꾸면 값은 약 0.135335로 내려갑니다.
위 값은 Python·NumPy로 실제 계산해 확인했습니다. 커널 값은 정답일 확률이 아닙니다. 커널 PCA는 이 값들을 그대로 한 좌표로 반환하지 않고 전체 커널 행렬을 중심화한 뒤 성분을 구합니다. 거리가 가까운 한 쌍만 보고 최종 그림이나 클래스 분리까지 예측할 수는 없습니다.
원본 특징 두 개를 가진 네 점의 RBF 행렬도 직접 중심화하고 고유값을 계산했습니다. 0이 아닌 성분 세 개가 나왔습니다. 입력 열 두 개보다 커널 성분이 더 많을 수 있다는 설명용 행렬 계산이며, scikit-learn 추정기 실행이나 실제 고객 자료의 성능 실험은 아닙니다.
쉬운 예시: 커널이 표본 관계를 바꾸고 주성분 분석이 그 관계의 주요 방향을 찾습니다. 비선형 표현과 정답 분류는 구분해서 확인합니다.
왜 AI에서 커널 주성분 분석이 중요한가요?
선형 축으로 부족한 관계를 살핍니다
이미지나 센서 특징 사이에 곡선 형태의 관계가 있으면 적은 선형 축에 충분히 담기지 않을 수 있습니다. 커널 PCA는 입력의 비선형 표현을 시험할 후보입니다. 입력 특징과 커널이 적절해야 하며, 큰 커널 값을 실제 의미 유사도라고 미리 확정하지 않습니다.
탐색과 후속 예측을 나누어 비교합니다
새 좌표를 그림으로 확인하거나 분류·회귀의 입력 후보로 사용합니다. 색칠한 라벨은 해석을 돕지만 기본 변환이 라벨을 학습한 것은 아닙니다. 후속 예측이 목적이면 원본 특징과 일반 PCA를 쓰는 모델을 같은 분할에서 비교해 비선형 변환의 이득을 확인합니다.
재구성의 품질 기준을 분명하게 만듭니다
공식 문서는 잡음 제거와 압축 등의 활용을 안내합니다. 복원하려면 저차원 표현에서 원본으로 돌아가는 별도 함수를 학습합니다. 매끄러워 보이는 이미지와 작은 수치 오차는 서로 다른 평가이므로, 어떤 정보를 남기려는지부터 정하는 것이 좋습니다.
핵심 인사이트: 커널 PCA의 장점은 비선형 관계를 시험하는 데 있습니다. 모든 입력의 차원·저장 비용과 예측 오차를 한꺼번에 줄이는 보편적인 해법은 아닙니다.
커널 주성분 분석은 어떤 순서로 작동하나요?
1. 표본 쌍의 커널 행렬을 만듭니다
한 행이 한 표본인 수치 입력에서 모든 훈련 표본 쌍의 커널 값을 구합니다. 표본이 N개라면 훈련 커널 행렬은 N × N입니다. 원본 특징 수에 따른 공분산 행렬과 크기가 다릅니다. RBF 외에도 선형·다항식 등의 커널을 선택할 수 있습니다.
2. 커널 공간의 평균을 빼는 중심화를 합니다
각 행과 열의 평균을 빼고 전체 평균을 더해 커널 행렬을 중심화합니다. 직접 만든 특징 공간의 평균을 빼는 연산에 해당하며 실제 고차원 특징을 나열할 필요가 없습니다. 원본 열을 표준화하거나 원본 평균만 빼는 작업과는 다릅니다.
훈련 커널에서 얻은 열 평균과 전체 평균을 저장하고 새 표본에도 사용합니다. 새 입력 묶음마다 중심을 다시 학습하면 기존 공간과 기준이 달라집니다. 확인한 구현은 KernelCenterer를 사용해 이 기준을 유지합니다.
3. 고유값을 구하고 성분 좌표로 투영합니다
중심화한 커널 행렬을 고유값 분해하고 큰 고유값의 성분부터 선택합니다. 훈련 좌표는 고유벡터에 고유값의 제곱근을 곱해 계산합니다. 고유벡터 배열 자체와 최종 좌표 배열을 같은 값으로 읽지 않습니다.
새 자료는 저장한 훈련 표본과의 커널을 계산하고 훈련 기준으로 중심화한 뒤 투영합니다. 새 자료가 M개라면 이 단계의 커널은 M × N입니다. 새 자료끼리만 M × M 행렬을 만들어 넣는 방식과 구분하고 훈련 표본의 순서를 유지합니다.
주요 설정과 결과는 어떻게 읽나요?
kernel과 gamma는 표현의 기준입니다
이 구현의 기본값은
kernel="linear"
입니다. 이름이 커널 PCA여도 기본 설정을 실행했다고 비선형 RBF 변환이 되는 것은 아닙니다.
kernel="rbf"
처럼 사용할 커널을 명시하고 어떤 관계를 표현하는지 확인합니다.
gamma는 RBF·다항식·시그모이드 커널에서 쓰는 계수입니다. RBF에서는 값이 커질수록 같은 비영 거리의 커널 값이 더 빠르게 작아집니다. gamma가 None이면 이 구현은 입력 특징 수의 역수를 사용합니다. 단위와 전처리가 바뀌면 거리도 바뀌므로 gamma만 따로 복사하지 않습니다.
성분 수와 고유값은 원본 분산 비율과 다릅니다
n_components
는 유지할 성분 수이고 None이면 0이 아닌 성분을 모두 남깁니다. 성분의 한도는 원본 특징 수만으로 정해지지 않습니다. 중심화한 N개 표본 행렬의 랭크는 최대 N보다 하나 적고, 중복이나 커널 설정에 따라 유효 성분은 더 적을 수 있습니다.
eigenvalues_
는 중심화한 커널 행렬의 고유값이며
eigenvectors_
는 표본 수 × 성분 수 배열입니다. 고유값 비율을 원본 픽셀·센서 분산의 보존율로 바꾸어 부르지 않습니다. 커널이나 gamma를 바꾸면 측정하는 특징 공간 자체가 달라집니다.
풀이 설정과 복원 규제는 별개입니다
eigen_solver
는 고유값을 구하는 계산 방식을 고릅니다. dense는 직접 분해를, arpack·randomized는 일부 성분 계산을 다룹니다. 빠른 풀이를 골라도 원하는 업무 품질이 확인된 것은 아닙니다. 사용하는 버전의 입력 크기 조건과 수치 경고를 함께 봅니다.
alpha
는 역변환용 커널 릿지 회귀의 규제 강도입니다.
fit_inverse_transform=True
로 복원 함수를 학습할 때 사용하며, RBF의 gamma나 앞으로 투영하는 성분 수를 대신 조절하지 않습니다. 역변환을 쓰지 않을 때 alpha를 바꾸어 표현 개선을 기대하지 않습니다.
커널 주성분 분석과 헷갈리는 용어는 무엇이 다른가요?
일반 PCA와의 차이
주성분 분석(PCA)는 중심화한 원본 특징의 선형 방향을 찾습니다. 커널 PCA는 커널 특징 공간의 방향을 표본 관계 행렬로 계산합니다. 선형 커널의 앞으로 가는 변환은 일반 PCA와 연결되지만 모든 커널과 역변환까지 같은 계약이라고 보면 안 됩니다.
Isomap·UMAP·t-SNE와의 차이
아이소맵(Isomap)은 이웃 그래프의 최단 경로 거리로 투영용 행렬을 만듭니다. 그 구현이 KernelPCA를 호출해도 거리 구성부터 같은 알고리즘은 아닙니다. UMAP과 t-SNE는 이웃 관계를 다른 목적함수로 맞춥니다. 비선형 그림이라는 공통점보다 무엇을 계산하고 보존하려는지 비교합니다.
커널 근사·특징 선택과의 차이
커널 근사는 커널 특징 표현을 적은 계산으로 근사하는 방법이고, 커널 PCA는 커널 공간의 주성분을 찾는 방법입니다. 근사 특징 뒤에 일반 PCA를 적용하는 흐름도 따로 검증할 후보입니다. 특징 선택은 원래 열을 일부 남기지만 커널 PCA의 좌표에는 여러 표본과 커널의 관계가 담깁니다.
비교 정리: 일반 PCA는 원본의 선형 분산, 커널 PCA는 커널 공간의 분산, Isomap은 이웃을 따라 잰 거리를 출발점으로 삼습니다.
실전에서는 어디에 쓰이나요?
휘어진 자료의 탐색과 모델 입력
공식 두 원 예제는 훈련 자료에 변환을 맞추고 테스트 자료를 같은 공간에 옮겨 PCA와 비교합니다. 예제에서 분리가 좋아졌다는 결과를 모든 문서·이미지의 성능으로 일반화하지 않습니다. 실제 자료에서는 커널 설정별로 주요 사례와 오류를 다시 확인합니다.
영상 잡음 제거와 근사 재구성
공식 숫자 이미지 예제는 잡음이 있는 훈련 입력에서 표현과 복원 함수를 학습하고 별도 테스트 이미지를 복원합니다. 결과 설명에서는 일반 PCA의 평균제곱오차가 더 낮지만 커널 PCA의 배경이 더 매끄러워 보일 수 있다고 구분합니다. 비선형이라는 이유로 모든 품질 지표에서 우세하다고 소개하지 않습니다.
커널 주성분 분석을 적용할 때 어떤 순서로 확인하나요?
1. 목적과 기준 모델, 데이터 분할을 정합니다
시각화·후속 예측·잡음 제거 가운데 무엇을 평가할지 적습니다. 원본과 일반 PCA의 기준 결과를 남기고 훈련·검증·테스트를 먼저 나눕니다. 커널 선택도 반복해서 점수를 보는 모델 선택이므로 최종 테스트를 설정 선택에 사용하지 않습니다.
2. 전처리와 커널 후보를 함께 비교합니다
결측 처리, 열 순서와 단위를 고정하고 필요한 스케일링을 각 훈련 폴드 안에서 학습합니다. 같은 분할에서 커널·gamma·성분 수의 후보를 비교합니다. 훈련 자료의 표준화와 커널 공간의 중심화는 서로 다른 단계이며 한쪽으로 다른 쪽을 대신하지 않습니다.
3. 새 입력 행렬과 표본 순서를 확인합니다
일반 입력은 저장한 모델의 transform을 사용합니다.
kernel="precomputed"
라면 훈련에는 같은 순서의 N × N 커널, 새 입력에는 M × N 커널을 준비합니다. 커널 행렬 칸에 원본 거리나 거리 제곱을 그대로 넣지 않습니다. 학습 표본 순서가 바뀌면 같은 열 위치가 다른 대상을 가리킵니다.
4. 품질·총비용·복원 결과를 따로 기록합니다
성분 좌표의 모양 외에 후속 모델의 검증 점수, 새 자료 변환 시간과 최대 메모리를 남깁니다. 복원을 쓴다면 동일한 테스트 자료에서 원본과의 오차와 중요한 세부 정보를 대조합니다. 전처리·훈련 표본·커널 설정·모델 버전도 함께 저장해야 기존 좌표를 재사용할 수 있습니다.
실전 팁: 훈련 행렬의 크기뿐 아니라 새 입력과 훈련 표본 사이의 커널 계산까지 재현해 보세요. 좌표 파일만 저장하면 운영 변환에 필요한 기준이 빠질 수 있습니다.
사용할 때 무엇을 주의해야 하나요?
첫째, 표본 수에 따른 커널 저장 비용을 계산합니다. float64의 N × N 행렬 하나는 표본 1,000개에서 8,000,000바이트, 2,000개에서 32,000,000바이트입니다. 직접 계산한 배열 원소의 저장량이며 부가 배열과 분해·복원 비용은 별도입니다. 입력 열이 적어도 표본이 많으면 부담이 커집니다.
둘째, 빠른 고유값 풀이가 커널 행렬까지 없앤다고 말하지 않습니다. 확인한 공식 구현은 randomized를 선택해도 먼저 훈련 커널을 생성합니다. 풀이 시간의 감소와 전체 메모리의 감소를 구분하고 실제 입력에서 최대 사용량을 측정합니다.
셋째, 역변환을 정확한 원본 복원으로 부르지 않습니다. inverse_transform은 학습한 커널 릿지 함수로 근사합니다. 사전 계산 커널에서는 이 구현의 역변환 학습을 사용할 수 없습니다. 선형 커널에서도 원본 평균 복원 방식이 일반 PCA와 다르므로 복원이 목적이라면 공식 문서의 권고를 확인합니다.
넷째, 수치 조건과 해석의 경계를 확인합니다. 임의로 만든 행렬이 유효한 커널이라는 보장은 없습니다. 대칭성과 양의 준정부호 조건, 큰 음의 고유값 경고를 살핍니다. 축의 부호가 바뀌거나 비슷한 고유값의 축이 회전할 수 있어 좌표 하나를 사람의 능력이나 원인 효과로 해석하지 않습니다.
주의: 정답 없이 만든 변환도 입력 분포를 학습합니다. 전체 자료의 커널을 먼저 맞추고 나중에 예측 평가를 나누면 독립 평가 경계가 무너집니다.
자주 묻는 질문
Q1. 커널 PCA는 정답 라벨이 필요한가요?
기본 KernelPCA의 fit은 y를 사용하지 않습니다. 표본의 커널 관계에서 좌표를 찾는 비지도 변환입니다. 라벨로 색을 붙이거나 뒤에 분류기를 학습하는 단계와 구분합니다.
Q2. 기본값만 써도 비선형 관계를 찾나요?
확인한 구현의 기본 커널은 linear입니다. 비선형 표현을 시험하려면 RBF나 다항식 같은 후보를 명시하고 전처리·계수와 검증 결과를 함께 확인합니다. 이름만으로 비선형 설정을 가정하지 않습니다.
Q3. gamma가 크면 더 정확한가요?
RBF에서 같은 비영 거리의 커널 값은 gamma가 커질수록 작아집니다. 표본 관계를 바꾸는 계수이며 정확도를 직접 올리는 값은 아닙니다. 같은 평가 분할에서 후보를 비교합니다.
Q4. 고유값 비율을 원본 설명 분산으로 봐도 되나요?
그 값은 중심화한 커널 행렬의 변동을 나타냅니다. 비선형 커널의 고유값 비율을 원본 열의 분산 보존율이나 정답 정확도로 바꾸어 읽지 않습니다. 서로 다른 커널의 비율도 같은 특징 공간의 비교가 아닙니다.
Q5. 출력 성분은 원본 특징보다 항상 적나요?
아닙니다. 커널 공간의 유효 성분 수는 표본 관계와 중심화한 행렬의 랭크에 좌우됩니다. None이면 0이 아닌 성분을 모두 남기므로 출력이 원본 열보다 많아질 수 있습니다. 차원을 줄이려면 목적에 맞는 개수를 지정하고 품질을 검사합니다.
Q6. 새 입력을 넣거나 원본으로 되돌릴 수 있나요?
저장한 훈련 표본과의 커널을 사용해 transform으로 같은 공간에 옮깁니다. 복원은 fit_inverse_transform=True로 별도 학습한 근사이며 사전 계산 커널에서는 지원되지 않습니다. 변환 가능성과 정확 복원은 다른 조건입니다.
출처
마무리
커널 주성분 분석은 커널 공간의 분산이 큰 방향을 찾아 표본을 새 좌표로 표현합니다. 커널 행렬의 중심화와 고유값, 앞으로 가는 변환과 근사 복원을 나누어 읽으면 일반 PCA·Isomap과의 차이가 분명해집니다.
처음에는 작은 자료에서 커널 값과 행렬 모양부터 확인하세요. 이후 같은 분할에서 커널·성분 수·후속 품질을 비교하고 표본 수에 따른 계산 부담을 측정합니다. 새 입력에도 훈련 기준을 유지하고 복원 품질을 별도로 검증해야 비선형 표현의 실제 이득을 판단할 수 있습니다.
