국소 선형 임베딩(LLE)이란? AI에서 이웃의 재구성 관계로 데이터의 차원을 줄이는 방법
TL;DR
국소 선형 임베딩(LLE)은 데이터를 가까운 이웃의 가중합으로 재구성하고 그 관계를 낮은 차원의 좌표에서도 유지하려는 방법입니다. 전체 데이터를 한 번에 직선으로 투영하는 대신 각 점 주변의 작은 관계를 모읍니다. 이웃 선택과 정규화가 결과를 바꾸므로 펼쳐진 그림만으로 성공을 판단하지 않습니다. 출력은 새 좌표이며 분류 정답이나 의미 검색의 정확도를 보장하지 않습니다.
핵심 3줄 요약
- 핵심 1
이웃으로 각 점을 표현합니다. 선택한 이웃의 가중합이 원본 점에 가까워지도록 계수를 구합니다. - 핵심 2
같은 관계로 좌표를 만듭니다. 학습한 재구성 가중치를 고정하고 저차원의 배치를 찾습니다. - 핵심 3
가중치는 확률이 아닙니다. 합은 1이지만 음수도 가능하며 이웃과 수치 안정성을 함께 봅니다.
이 글에서 다룰 내용
- 국소 선형 임베딩의 한 문장 정의
- 세 숫자로 이해하는 이웃 재구성과 가중치
- 이웃 선택·가중치 계산·좌표 배치의 작동 순서
- 이웃 수·출력 차원·정규화·고유값 풀이의 역할
- Isomap·PCA·UMAP·t-SNE와의 차이
- 새 입력 변환과 실전 확인 순서
- 잡음·연결·계산 비용·출력 해석의 주의점
국소 선형 임베딩을 한 문장으로 정의하면 무엇인가요?
국소 선형 임베딩은 각 표본을 가까운 이웃의 선형 결합으로 근사한 뒤, 그 재구성 가중치를 유지하는 낮은 차원의 좌표를 찾는 비선형 차원 축소 방법입니다.
영문명은 Locally Linear Embedding이며 줄여서 LLE라고 부릅니다. 지역 선형 임베딩이라는 번역도 같은 개념을 가리킵니다. 국소는 한 점 주변의 이웃을 뜻하고 선형은 이웃 값에 계수를 곱해 더하는 계산을 가리킵니다. 전체 데이터가 하나의 평면 위에 있어야 한다는 조건은 아닙니다.
행렬의 열을 몇 개 골라 남기는 특징 선택과 구별합니다. 출력의 한 행에는 한 표본의 새 좌표가 들어갑니다. 기본 LLE는 정답 라벨 없이 입력 특징으로 관계를 찾습니다. 이 글의 구현 설명은 scikit-learn 1.9.1의 공식 문서와 버전이 명시된 소스를 기준으로 합니다.
한 줄 정리: 각 점을 주변 이웃으로 설명하는 방식을 배우고, 더 작은 좌표 공간에서도 그 설명이 맞도록 배치합니다.
쉬운 예시로 이해해 볼까요?
감자나라ai님이 숫자 1과 3을 이웃으로 정해 가운데 값 2를 표현한다고 가정해 보겠습니다. 다음은 가중치의 뜻을 설명하려고 만든 작은 합성 예시입니다. 이웃 탐색과 정규화를 생략한 고정 이웃의 계산이며 실제 고객 자료나 LLE 모델의 성능 측정 결과는 아닙니다.
- 이웃 1과 3에 가중치 0.5를 각각 주면
0.5 × 1 + 0.5 × 3 = 2입니다. 가중치 합도 1이고 값 2를 정확히 재구성합니다. - 같은 이웃으로 값 4를 표현하면
-0.5 × 1 + 1.5 × 3 = 4처럼 음수 계수를 쓸 수 있습니다. 이때도 가중치 합은 1입니다. - 저차원 좌표를 찾을 때는 원본에서 구한 가중치를 고정합니다. 각 점의 새 좌표가 이웃의 새 좌표 가중합에 가까워지도록 전체 배치를 맞춥니다.
앞의 두 가중합은 Python의 정확한 분수 계산으로 확인했습니다. 정규화가 들어간 scikit-learn의 계수나 임베딩 좌표를 실행해 얻은 숫자는 아닙니다. 실제 모델은 표본마다 이웃을 고르고 수치 안정화를 적용하므로 이 예시의 계수를 그대로 돌려준다고 설명하면 안 됩니다.
합이 1이라는 이유로 계수를 확률로 읽을 수는 없습니다. 기본 LLE에는 계수를 모두 0 이상으로 제한하는 조건이 없습니다. 음수나 1보다 큰 계수도 재구성 관계의 일부입니다. 예시의 값 4처럼 이웃 사이의 평균 범위를 벗어나는 설명도 가능합니다.
쉬운 예시: 핵심은 가장 가까운 이웃 하나를 그대로 복사하는 일이 아닙니다. 여러 이웃을 어떤 비율로 섞으면 한 점을 설명할 수 있는지 찾습니다.
왜 AI에서 국소 선형 임베딩이 중요한가요?
휘어진 자료를 작은 이웃 단위로 살핍니다
이미지나 측정 특징은 열이 많아도 적은 방향을 따라 변할 수 있습니다. 전체 구조가 휘어져 있다면 한 번의 선형 투영만으로 읽기 어렵습니다. LLE는 작은 이웃 안에서 선형 근사가 유용하다는 가정으로 출발합니다. 모든 고차원 자료가 이런 구조를 가진다고 확정하지 않습니다.
국소 관계를 모아 하나의 표현을 만듭니다
이웃마다 별도 그림을 그리는 데서 끝나지 않습니다. 각 점에서 계산한 계수를 모으고 모든 좌표를 함께 구합니다. 국소 계산 뒤에 전역적인 좌표 배치 단계가 있는 셈입니다. 다만 그 과정이 모든 표본 쌍의 원본 거리나 의미 관계를 그대로 보존하는 것은 아닙니다.
입력 특징과 이웃의 적절성을 점검합니다
같은 자료에서 이웃 수를 바꿨을 때 구조가 얼마나 달라지는지 살펴봅니다. 알려진 라벨이나 관측 조건을 색으로 덧붙이고 가까운 점의 원본을 확인합니다. 색상이 분리됐다고 정답을 학습한 분류기라고 부르지 않으며, 시각화는 입력 표현을 조사하는 단서로 사용합니다.
핵심 인사이트: 작은 좌표가 나왔다는 사실보다 어떤 이웃의 재구성 관계를 그 좌표에 담았는지가 중요합니다.
국소 선형 임베딩은 어떤 순서로 작동하나요?
1. 원본 특징에서 가까운 이웃을 고릅니다
각 표본에서 정한 수의 가까운 표본을 찾습니다. 기본 LLE의 이웃 계산은 정답 라벨을 사용하지 않습니다. 이웃 수가 같아도 특징의 단위나 전처리가 달라지면 선택되는 사례가 바뀝니다. 숫자 식별자처럼 분석 의미가 없는 열이 거리 계산을 좌우하지 않는지 먼저 확인합니다.
2. 이웃으로 재구성할 가중치를 구합니다
한 점과 이웃들의 가중합 사이의 제곱 오차가 작아지도록 계수를 구합니다. 선택한 이웃의 계수 합은 1로 맞추며 이웃이 아닌 점에는 계수를 주지 않습니다. 거리의 역수를 그대로 확률처럼 사용하는 계산과는 다릅니다. 각 이웃과 중심점의 차이가 함께 계산에 들어갑니다.
서로 비슷한 이웃이 많거나 이웃 수가 입력 차원보다 크면 지역 계산의 행렬이 불안정할 수 있습니다. 표준 구현은 대각선에 작은 정규화 값을 더한 뒤 계수를 계산합니다. 실제 입력의 구조와 수치 안정화를 구분하고 정규화를 켰다는 이유만으로 이웃 선택이 옳다고 판단하지 않습니다.
3. 가중치를 고정하고 새 좌표를 구합니다
원본에서 구한 재구성 가중치를 유지한 채 각 점의 저차원 좌표도 이웃 좌표의 가중합에 가깝도록 찾습니다. 모든 점을 같은 위치에 놓으면 오차를 쉽게 줄일 수 있으므로 중심과 크기에 관한 제약을 둬 이런 무의미한 해를 피합니다.
저자들이 공개한 알고리즘은 재구성 관계의 행렬을 만들고 작은 고유값에 대응하는 방향으로 좌표를 구성합니다. 상수 벡터에 해당하는 첫 방향은 제외합니다. 입력 분산이 큰 방향을 선택하는 PCA와는 선택 기준이 다릅니다. 회전이나 축의 부호보다 점들의 관계를 읽습니다.
주요 설정과 결과는 어떻게 읽나요?
이웃 수와 출력 차원은 다른 설정입니다
n_neighbors
는 각 점에서 고려할 이웃 수이고
n_components
는 출력 좌표 수입니다. 기본값은 각각 5와 2입니다. 둘 다 군집 수를 지정하는 값은 아닙니다. 확인한 구현에서는 이웃 수가 학습 표본 수보다 작아야 하며, 차원 축소 목적에 맞게 출력 차원을 정합니다.
이웃이 너무 적으면 관계가 끊기거나 불안정할 수 있고 너무 많으면 멀리 떨어진 부분까지 섞어 국소 근사가 약해질 수 있습니다. 기본값을 정답으로 쓰기보다 연결과 원본 사례를 봅니다. 같은 출력 차원에서 이웃을 바꾼 결과를 비교하는 기록을 남깁니다.
정규화와 방법 변형의 범위를 구분합니다
표준 LLE의
reg
는 지역 공분산 행렬의 대각선에 더할 안정화 값을 정하는 계수입니다. 기본값은 0.001이며 보통 그 행렬의 대각합에 곱합니다. 분류 확률을 부드럽게 하거나 군집 수를 조절하는 설정으로 읽지 않습니다. 값을 바꾸면 재구성 계수와 최종 배치도 바뀔 수 있습니다.
이 클래스는
method="standard"
외에
method="modified"
, Hessian 방식, LTSA도 받습니다. 수정 LLE는 여러 가중치 벡터를 사용하는 변형입니다. 한 API에서 선택할 수 있어도 모두 같은 목적과 제약을 가진 표준 LLE라고 설명하지 않습니다.
좌표·오차·풀이 상태를 따로 확인합니다
embedding_
는 학습 사례의 좌표이고
reconstruction_error_
는 그 임베딩에 연관된 오차입니다. 표준 방식의 확인한 구현은 선택된 작은 고유값들의 합을 반환합니다. 원본 픽셀을 복원한 평균제곱오차나 분류 정확도가 아닙니다. 이웃이나 방법을 바꾸면 비교하는 문제도 달라집니다.
eigen_solver="arpack"
는 일부 문제에서 불안정할 수 있다고 공식 API가 경고합니다. 난수 시드를 달리한 반복 결과와 풀이 상태를 확인합니다. 작은 자료에서는 다른 풀이와 대조할 수 있지만 조밀 행렬 방식은 큰 자료에 부담이 큽니다. 오류 메시지만 없애는 변경으로 품질을 확정하지 않습니다.
국소 선형 임베딩과 헷갈리는 용어는 무엇이 다른가요?
Isomap·PCA와의 차이
아이소맵(Isomap)은 이웃 그래프의 모든 표본 쌍 최단 경로 거리를 낮은 차원에 반영합니다. LLE의 핵심은 이웃 재구성 가중치입니다. 주성분 분석(PCA)는 분산이 큰 직교 방향으로 선형 투영합니다. 이웃을 쓰거나 좌표를 만든다는 공통점만으로 같은 방법이라 부르지 않습니다.
UMAP·t-SNE와의 차이
UMAP은 가중 이웃 관계를 저차원에서 맞추며 t-SNE는 이웃 유사도 확률을 맞추는 시각화 방법입니다. LLE는 각 점을 이웃의 가중합으로 재구성한 계수를 유지합니다. 가깝게 그려진 점, 군집 사이의 간격, 전체 거리의 의미를 방법마다 따로 확인합니다.
KNN·특징 선택·의미 임베딩과의 차이
K-최근접 이웃(KNN)은 가까운 사례의 정답으로 분류하거나 수치를 예측합니다. LLE는 정답 없이 좌표를 만듭니다. 특징 선택은 원본 열을 고르는 작업이고 LLE는 새로운 좌표를 계산합니다. 단어를 넣으면 의미 벡터를 돌려주는 언어 모델도 아니므로 텍스트에는 먼저 적절한 수치 표현이 필요합니다.
비교 정리: LLE는 국소 재구성 계수, Isomap은 경로 거리, PCA는 분산이 큰 선형 방향을 중심으로 좌표를 만듭니다.
실전에서는 어디에 쓰이나요?
구조를 아는 합성 자료에서 펼침을 비교합니다
공식 비교 예제는 S자 곡선 자료에 표준 LLE와 여러 변형을 함께 적용합니다. 만든 구조를 알고 있는 자료는 이웃 선택과 펼침의 차이를 보기 좋습니다. 예제의 결과와 실행 시간은 그 표본·설정의 측정치이며 일반 자료에서 어느 방법이 가장 좋다는 순위로 옮기지 않습니다.
이미지 특징과 후속 모델의 입력을 탐색합니다
공식 API는 손글씨 숫자의 수치 특징을 낮은 차원으로 바꾸는 예시도 제공합니다. 관측 조건에 따라 연속적으로 변하는 자료라면 이웃 관계를 조사할 후보가 됩니다. 결과를 후속 예측의 입력으로 사용할 때는 원본 특징이나 다른 변환을 쓰는 기준 모델과 같은 평가 자료에서 비교합니다.
국소 선형 임베딩을 적용할 때 어떤 순서로 확인하나요?
1. 표본 단위와 입력의 거리를 정합니다
한 행이 무엇을 나타내는지 적고 열 순서·단위·결측·중복을 확인합니다. 거리 계산 전에 필요한 전처리를 결정합니다. 단위 차이를 조정하는 작업도 이웃을 바꾸므로 전처리 유무를 기록합니다. 새 입력에는 학습 때와 같은 열과 같은 전처리를 사용합니다.
2. 이웃과 지역 계산의 상태를 봅니다
이웃 수별로 연결 성분, 고립된 사례, 서로 거의 같은 이웃을 점검합니다. 그림이 찌그러지면 먼저 선택된 원본 사례를 엽니다. 떨어진 덩어리가 하나의 연속 구조인지 확인할 근거가 없다면 전체를 억지로 펼친 좌표의 간격을 의미 거리로 해석하지 않습니다.
3. 좌표와 별도 품질 지표를 대조합니다
같은 입력에서 이웃 수·출력 차원·방법을 바꾸고 원본 이웃의 유지 정도와 사례를 확인합니다. 재구성 오차가 작다는 이유만으로 업무 성능이 좋아졌다고 결론 내리지 않습니다. 분류·회귀·검색에 쓴다면 해당 목적의 검증 지표를 별도로 기록합니다.
4. 새 입력의 변환과 학습 경계를 보관합니다
학습한 모델의
transform(X_new)
는 새 점의 훈련 이웃을 찾고 재구성 계수를 구한 뒤 저장된 이웃 좌표를 가중합합니다. 전체 자료를 다시 학습하는 계산과 다릅니다. 훈련 범위에서 먼 입력도 좌표를 받을 수 있으므로 실행 성공과 표현의 타당성을 구분합니다.
후속 예측을 평가한다면 자료를 먼저 나누고 각 훈련 폴드에서 전처리와 LLE를 맞춥니다. 검증 자료에는 저장된 변환만 적용합니다. 공식 API는 새 입력 변환의 척도 때문에 SVM처럼 척도에 민감한 방법과의 결합을 권하지 않습니다. 이런 결합을 쓰려면 변환 뒤 척도와 독립 성능까지 확인합니다.
실전 팁: 전체 자료의 탐색 그림과 보지 않은 자료의 예측 평가는 따로 남기세요. 비지도 변환도 평가 자료를 먼저 포함하면 검증 경계가 달라집니다.
사용할 때 무엇을 주의해야 하나요?
첫째, 가중치를 확률이나 신뢰도로 읽지 않습니다. 계수 합은 1이지만 음수도 가능합니다. 큰 계수 하나가 나왔다고 그 이웃이 같은 클래스일 확률이 높다고 해석하지 않습니다. 계수는 선택한 이웃으로 원본 점을 설명하는 계산의 결과입니다.
둘째, 정규화가 데이터 결함까지 해결한다고 믿지 않습니다. 중복·잡음·드문 구간·잘못된 척도는 이웃과 지역 계산에 영향을 줍니다. 정규화로 선형 방정식을 풀기 쉬워져도 재구성할 이웃이 실제 구조에 맞는지는 별도 점검합니다.
셋째, 가까운 이웃만 쓰므로 항상 가볍다고 단정하지 않습니다. 전체 이웃 탐색, 표본마다의 지역 방정식, 마지막 고유값 풀이가 필요합니다. 표본 수와 이웃 수를 늘리기 전에 작은 자료에서 시간과 메모리를 확인합니다. 희소 저장과 빠른 이웃 검색이 전체 계산 비용을 없애지는 않습니다.
넷째, 보기 좋은 좌표를 정답이나 인과 설명으로 바꾸지 않습니다. 축의 방향과 크기는 원본 단위 그대로가 아닙니다. 새 자료나 다른 설정으로 다시 학습한 축도 이전 그림과 공통 축이라고 가정하지 않습니다. 그룹 사이의 간격만으로 사람의 능력이나 위험도를 판정하지 않습니다.
주의: LLE가 유지하려는 것은 선택한 이웃의 재구성 관계입니다. 원본 특징의 완전 복원, 모든 거리의 보존, 후속 예측의 성공은 각각 별도의 검증 항목입니다.
자주 묻는 질문
Q1. LLE는 정답 라벨을 넣어야 하나요?
기본 scikit-learn LocallyLinearEmbedding은 정답 없이 입력 특징으로 좌표를 학습합니다. fit의 y는 사용하지 않습니다. 알려진 라벨을 그림의 색으로 붙이는 해석 단계와 좌표 학습을 구분합니다.
Q2. 이름에 선형이 있으니 PCA와 같은가요?
아닙니다. 선형 계산은 각 점을 주변 이웃의 가중합으로 재구성하는 부분입니다. 서로 다른 지역의 관계를 모아 비선형 구조의 표현을 찾습니다. PCA처럼 전체 자료의 분산이 큰 하나의 선형 투영을 선택하는 방식과 다릅니다.
Q3. 가중치 합이 1이면 확률인가요?
아닙니다. 표준 LLE는 계수를 모두 0 이상으로 제한하지 않습니다. 예시처럼 음수와 1보다 큰 계수도 합이 1이 될 수 있습니다. 클래스 확률이나 이웃에 대한 신뢰도로 보고하지 않습니다.
Q4. 재구성 오차가 작으면 원본을 잘 복원한 건가요?
여기서 reconstruction_error_는 임베딩의 재구성 관계에 연관된 오차입니다. 원본 이미지나 특징을 다시 만든 평균제곱오차가 아닙니다. 확인한 표준 구현의 고유값 합과 후속 작업의 성능을 따로 읽습니다.
Q5. 새 데이터를 기존 좌표 공간에 넣을 수 있나요?
학습된 모델의 transform을 사용할 수 있습니다. 새 점의 훈련 이웃을 찾고 그 이웃의 저장된 좌표를 재구성 계수로 가중합합니다. 전체 재학습과 같은 결과를 보장하지 않으며 훈련 분포 밖 입력과 변환 후 척도를 점검해야 합니다.
Q6. 수정 LLE를 고르면 모든 문제가 해결되나요?
수정 LLE는 여러 지역 가중치 벡터를 활용하는 변형입니다. 표준 방식의 정규화 문제를 다루려는 목적이 있지만 잘못된 입력 특징, 끊긴 구조, 부족한 표본까지 자동 해결하지는 않습니다. 같은 자료와 목적에서 설정별 결과를 비교합니다.
출처
마무리
국소 선형 임베딩은 각 점을 이웃의 가중합으로 설명하고 그 관계를 작은 좌표 공간에서도 유지하려는 방법입니다. 국소 계산과 전체 배치, 재구성 계수와 확률, 좌표 오차와 업무 성능을 구분하면 결과를 더 정확히 읽을 수 있습니다.
처음에는 작은 자료에서 이웃과 정규화 상태부터 확인하세요. 같은 입력으로 설정을 비교하고 가까운 사례의 원본으로 돌아갑니다. 새 입력에는 학습 때의 변환 계약을 적용하고 후속 모델의 독립 평가와 계산 비용까지 남기는 것이 마지막 점검입니다.
