OPTICS란? AI에서 도달 가능 거리로 여러 밀도의 군집 구조를 찾는 방법
TL;DR
OPTICS는 데이터를 방문하는 순서와 도달 가능 거리를 기록해 여러 밀도 수준의 군집 구조를 살펴보는 방법입니다. DBSCAN처럼 밀집 영역을 찾지만 하나의 이웃 반경으로 결과를 바로 고정하지 않고 계산한 구조에서 군집을 추출합니다. 도달 가능 거리 그림의 골짜기, xi와 eps의 차이, 원본 순서와 군집 순서를 구분하면 결과를 더 정확히 읽을 수 있습니다.
핵심 3줄 요약
- 핵심 1
순서와 거리를 함께 남깁니다. 가까운 밀집 영역을 이어 방문하고 각 점에 도달하는 데 필요한 거리 정보를 기록합니다. - 핵심 2
구조 계산과 라벨 추출을 나눕니다. 같은 결과에서 거리 절단 기준이나 급경사 기준으로 다른 군집 후보를 살펴봅니다. - 핵심 3
골짜기와 노이즈를 검토합니다. 그림의 모양이 정답 집단을 보장하지 않으며 배열 순서와 특징 단위도 함께 확인합니다.
이 글에서 다룰 내용
- OPTICS의 한 문장 정의
- 밀도가 다른 문의 묶음으로 보는 쉬운 예시
- 핵심 거리·도달 가능 거리·방문 순서의 역할
- xi·eps·최소 표본 수와 추출 방식
- DBSCAN·계층적 군집화·LOF와의 차이
- 실전 사용처와 배열·설정 점검 순서
- 노이즈·계산 비용·새 데이터 처리의 주의점
OPTICS를 한 문장으로 정의하면 무엇인가요?
OPTICS는 밀도 기반 이웃 관계에 따라 표본의 처리 순서를 만들고 도달 가능 거리를 기록해 여러 반경 수준에 걸친 군집 구조를 표현하는 비지도학습 알고리즘입니다.
이름은 Ordering Points To Identify the Clustering Structure의 약어이며 한국어로 옵틱스라고 읽습니다. 이름 그대로 점을 어떤 순서로 살펴볼지 정하는 작업이 핵심입니다. 빛을 다루는 광학이나 영상의 광학 흐름과는 다른 용어입니다.
scikit-learn은 OPTICS가 DBSCAN과 밀접하지만 이웃 반경을 바꿔 볼 수 있는 군집 계층을 남긴다고 설명합니다. 먼저 순서와 거리를 만들고 그 결과에서 최종 그룹을 고르는 단계를 구분합니다. 정답 라벨 없이 구조를 탐색하며 문서의 주제 이름을 자동으로 이해하는 모델은 아닙니다.
한 줄 정리: OPTICS는 한 번의 군집 번호만 보는 대신, 밀집된 영역이 어떤 거리 수준에서 이어지는지 살펴보게 합니다.
쉬운 예시로 이해해 볼까요?
고객 문의를 임베딩으로 바꿨다고 가정해 보겠습니다. 배송 일정 문의는 표현이 비슷해 촘촘히 모이고 환불 문의는 상황이 다양해 조금 넓게 퍼져 있습니다. 두 집단에서 멀리 떨어진 문장도 섞여 있습니다. 실제 분석 결과가 아닌 원리 설명용 가정입니다.
하나의 작은 이웃 반경만 쓰면 촘촘한 배송 묶음은 찾지만 넓게 퍼진 환불 묶음은 잘게 갈라지거나 노이즈가 될 수 있습니다. 반경을 크게 잡으면 환불 묶음이 이어지는 대신 가까운 다른 주제까지 합쳐질 수 있습니다. 서로 다른 밀도를 한 기준으로 읽기 어려운 상황입니다.
OPTICS는 가까운 밀집 영역을 이어 방문하며 순서와 거리를 남깁니다. 그 순서로 거리 값을 그리면 촘촘한 구간은 낮은 골짜기처럼, 덜 촘촘한 구간은 상대적으로 높은 골짜기처럼 나타날 수 있습니다. xi 방식은 이런 구간의 급격한 변화를 보고 군집 경계를 찾습니다.
배송과 환불이라는 이름은 원문을 읽은 담당자가 붙입니다. 낮은 골짜기가 생겼다고 그 문의가 더 중요하거나 정확한 것은 아닙니다. 같은 문장을 복사한 중복 기록이 모였을 가능성도 있으므로 대표 사례와 경계 사례를 함께 확인합니다.
쉬운 예시: 모든 동네를 같은 간격의 울타리로 자르기보다, 사람이 모인 구간을 따라가며 간격 변화를 기록한 뒤 묶음의 경계를 살펴보는 방식입니다.
왜 AI에서 OPTICS가 중요한가요?
밀도가 다른 데이터의 구조를 탐색합니다
문서·이미지 특징에는 크기와 퍼짐이 다른 묶음이 섞일 수 있습니다. OPTICS의 도달 가능 거리 표현은 여러 밀도 수준을 살펴볼 단서입니다. 공식 데모도 서로 다른 밀도의 합성 데이터에서 xi 추출과 고정 반경 추출을 비교합니다. 어느 데이터에서나 모든 집단을 찾아낸다는 보장은 아닙니다.
반경 후보를 비교할 때 계산 결과를 재사용합니다
같은 입력과 거리 설정으로 만든 OPTICS 결과에서 DBSCAN 형태의 군집을 다시 추출할 수 있습니다. 공식 문서는 이미 계산한 구조에서 군집을 추출하는 작업이 선형 시간에 끝난다고 설명합니다. 이 설명은 전체 OPTICS 학습 시간과 구분해야 합니다. 이웃 관계를 만드는 초기 계산까지 가벼워진다는 뜻은 아닙니다.
최종 라벨 밖의 정보를 남깁니다
그룹 번호만 저장하면 어느 지점에서 묶음이 끊기는지 알기 어렵습니다. OPTICS는 도달 가능 거리와 방문 순서, 선행점 정보를 남깁니다. xi 방식에서는 계층 구간도 확인합니다. 결과를 원문과 연결해 왜 그 경계를 선택했는지 검토할 자료로 쓸 수 있습니다.
OPTICS는 어떤 순서로 작동하나요?
1. 거리와 핵심점 조건을 정합니다
한 행을 사례 하나로 놓고 특징 사이의 거리를 정합니다.
min_samples
는 핵심점으로 볼 만큼 주변에 필요한 표본 수를 정합니다.
max_eps
는 이웃을 탐색할 최대 거리를 제한합니다. 이 값을 너무 작게 두면 그 밖의 연결은 계산할 수 없습니다.
2. 각 점의 핵심 거리를 확인합니다
핵심 거리는 해당 점이 핵심점 조건을 만족하기 시작하는 거리입니다. 이웃이 가까이 모인 점은 작은 거리에서도 조건을 채웁니다. 선택한 최대 반경 안에서 조건을 채울 수 없는 점은 scikit-learn의
core_distances_
에서 무한대로 표시됩니다. 이는 곧바로 데이터 오류라는 뜻이 아닙니다.
3. 도달 가능 거리를 갱신하며 순서를 만듭니다
핵심점에서 아직 처리하지 않은 이웃으로 이어 갈 후보를 살펴보고 도달 가능 거리를 갱신합니다. 가까운 밀집 영역을 이어 처리하도록 순서를 정하고 어떤 점에서 도달했는지도 기록합니다. scikit-learn은 핵심 거리용 이웃 검색을 먼저 수행하는 등 원 알고리즘과 구현상의 차이가 있다고 명시합니다.
4. 계산한 구조에서 군집을 추출합니다
cluster_method="xi"
는 도달 가능 거리 그림의 급경사를 이용합니다.
cluster_method="dbscan"
은
eps
라는 거리 기준으로 DBSCAN과 비슷한 군집을 추출합니다. 구조 계산과 추출 규칙을 나눠 기록해야 결과가 달라진 이유를 찾기 쉽습니다.
실전 팁: 거리 기준과 입력을 그대로 둔 채 추출 설정만 바꾼 실험인지, 특징과 이웃 관계까지 다시 계산한 실험인지 구분해 기록하세요.
도달 가능 거리 그림과 설정은 어떻게 읽나요?
가로축은 원본 순서가 아닌 처리 순서입니다
reachability_
는 원본 사례 순서에 대응합니다. 공식 예제는
clust.reachability_[clust.ordering_]
로 배열을 재정렬해 그림을 만듭니다. 가로축은 시간이나 문서의 중요도 순위가 아닙니다. 원본 행 번호와 처리 순서를 혼동하면 골짜기와 실제 사례가 잘못 연결됩니다.
xi는 거리 반경이 아닌 급경사 기준입니다
xi
는 군집 경계로 인정할 최소한의 가파른 변화 정도를 정합니다.
min_cluster_size
는 xi 추출에서 남길 군집의 최소 크기입니다. 이를 지정하지 않으면
min_samples
값을 사용합니다. 자동 추출이라는 표현이 설정이나 검토가 필요 없다는 뜻은 아닙니다.
평면 라벨과 계층 구간은 다릅니다
labels_
는 사례별 최종 군집 번호입니다. xi 방식의
cluster_hierarchy_
는 작은 묶음과 이를 포함한 큰 묶음의 구간을 담으므로 라벨 목록보다 더 많은 구조가 남을 수 있습니다. 구간의 시작과 끝은 원본 행 번호가 아니라
ordering_
안의 위치이며 양 끝을 포함합니다.
OPTICS와 헷갈리는 용어는 무엇이 다른가요?
DBSCAN과 OPTICS의 차이
DBSCAN은 정한 이웃 반경에서 핵심점을 연결해 군집과 노이즈를 구분합니다. OPTICS는 순서와 거리 구조를 남긴 뒤 군집을 꺼냅니다. DBSCAN의 핵심점·경계점 설명을 먼저 읽으면 공통 원리가 이해됩니다. 다만 OPTICS의 DBSCAN 방식 추출이 별도 DBSCAN 실행과 항상 같은 라벨을 내놓지는 않습니다.
계층적 클러스터링과 OPTICS의 차이
계층적 군집화는 중첩된 그룹을 만드는 방법의 넓은 범주입니다. 대표적인 응집형 방식은 연결 기준에 따라 군집 쌍을 합칩니다. OPTICS는 밀도 기반 순서와 도달 가능 거리로 구조를 나타냅니다. 계층을 볼 수 있다는 공통점만으로 두 알고리즘의 거리나 병합 규칙을 같게 읽으면 안 됩니다.
LOF와 OPTICS의 차이
LOF는 한 사례의 국소 밀도를 이웃들의 밀도와 비교해 이상 정도를 계산합니다. OPTICS의 주요 목적은 군집 구조 탐색입니다. 둘 다 이웃과 밀도를 다루지만 도달 가능 거리 배열을 LOF 이상 점수처럼 정렬해 같은 의미로 쓰지 않습니다. 노이즈 라벨 역시 사기나 고장 확률이 아닙니다.
K-means와 OPTICS의 차이
K-means는 미리 정한 군집 수에 맞춰 중심과의 거리로 데이터를 배정합니다. OPTICS는 군집 수를 직접 지정하지 않고 밀도 구조와 추출 설정으로 묶음을 정하며 일부 사례는 군집 밖에 남습니다. 중심을 기준으로 새 점을 배정하는 동작을 OPTICS에도 그대로 기대해서는 안 됩니다.
비교 정리: DBSCAN은 한 반경의 밀집 연결, OPTICS는 여러 수준의 밀도 구조, LOF는 이웃 대비 이상 정도를 살펴보는 데 초점이 있습니다.
실전에서는 어디에 쓰이나요?
문서와 이미지 특징의 탐색
임베딩이나 이미지 특징을 만들고 서로 가까운 사례를 묶어 살펴볼 때 검토할 수 있습니다. 다양한 표현이 모인 큰 주제와 거의 같은 사례가 모인 작은 묶음을 함께 찾는 상황입니다. 실제 결과의 유용성은 사용한 표현과 거리 기준에 달려 있으므로 군집 번호만으로 주제 분류를 확정하지 않습니다.
센서 기록의 운전 패턴 점검
운전 상태마다 온도와 진동의 퍼짐이 다르다면 밀도 수준별로 기록을 살펴볼 후보가 됩니다. 이는 적용을 검토할 예시이며 특정 장비에서 성능이 검증됐다는 뜻은 아닙니다. 희귀한 정상 운전 구간과 센서 오류를 구분하려면 운전 로그, 기록 시점과 정비 이력을 함께 확인합니다.
군집 경계와 제외 사례 검토
xi나 거리 절단 기준을 바꿨을 때 어떤 사례가 계속 같은 묶음에 남는지 확인합니다. 설정마다 바뀌는 경계 사례를 따로 모아 원본을 읽으면 특징의 부족이나 중복을 발견할 단서가 됩니다. 사람 검토용 목록을 만들되 노이즈를 자동 삭제하는 규칙으로 연결하지 않습니다.
OPTICS를 적용할 때 어떤 순서로 확인하나요?
1. 특징과 거리 단위를 맞춥니다
큰 단위의 수치가 거리를 지배하지 않는지 확인합니다. 문서 임베딩에서는 코사인 거리와 유클리드 거리 중 어떤 의미를 비교할지 정합니다. 사전 계산 입력을 쓰면 유사도가 아닌 거리 행렬이어야 하며 행과 열이 같은 사례 순서인지 점검합니다. 가까울수록 큰 유사도 값을 거리처럼 넣지 않습니다.
2. 배열과 원본 사례의 연결을 검사합니다
원본 ID를 유지하고
ordering_
가 그 행 번호를 가리키는지 확인합니다. 그림에 색을 입힐 때 라벨도 같은 순서로 재정렬합니다.
predecessor_
의 -1은 출발점 표시이고
labels_
의 -1은 군집 미배정 표시이므로 서로 다른 배열의 같은 숫자를 혼동하지 않습니다.
3. 추출 방식과 검토 기준을 기록합니다
xi 방식이면 급경사와 최소 군집 크기를, DBSCAN 방식이면 eps를 기록합니다. 저장한 구조를 별도 함수로 다시 추출할 때도 해당 함수의 eps와 max_eps 조건을 따릅니다. 군집 수뿐 아니라 노이즈 비율과 각 그룹의 실제 사례를 확인하고 같은 특징 공간에서 다른 설정과 비교합니다.
한 줄 정리: 입력 단위, 원본 ID, 처리 순서, 추출 규칙을 함께 남겨야 그림과 사례를 다시 연결할 수 있습니다.
사용할 때 무엇을 주의해야 하나요?
첫째, 노이즈를 오류로 단정하지 않습니다. scikit-learn의 xi 결과에서는 노이즈뿐 아니라 선택된 말단 군집에 포함되지 않은 점도 -1로 표시됩니다. 이 라벨만 보고 자료를 버리면 드문 정상 사례나 상위 묶음의 일부를 놓칠 수 있습니다.
둘째, 높은 도달 가능 거리를 불량 점수로 읽지 않습니다. 새로운 밀집 영역에 처음 들어가는 점은 가까운 이웃이 있어도 높은 값이 나올 수 있습니다. 공식 가이드도 이 때문에 OPTICS 추출과 DBSCAN에서 경계점·노이즈 라벨이 달라질 수 있다고 설명합니다.
셋째, 계산 시간과 메모리를 따로 봅니다. scikit-learn OPTICS는 확장 후보 관리에 힙을 쓰지 않아 시간 복잡도가
O(n^2)
라고 명시합니다. 메모리 사용이 유리한 경우라도 실행 시간이 짧다고 보장할 수 없습니다. max_eps를 줄이는 선택은 탐색 범위에도 영향을 줍니다.
넷째, 고차원과 전처리의 영향을 확인합니다. 차원이 높으면 이웃 간 거리의 구분이 약해질 수 있고 특징 변환은 밀도 구조를 바꿉니다. 시각화용 평면에서 생긴 골짜기나 섬을 원본 데이터의 구조로 바로 확정하지 말고 원본 이웃과 비교합니다.
다섯째, 새 데이터 예측과 재군집화를 구분합니다. scikit-learn OPTICS는 학습한 사례를 묶는 fit과 fit_predict를 제공하지만 새 사례용 일반 predict는 제공하지 않습니다. 새 기록을 추가해 다시 실행하면 이웃 관계와 군집 번호가 바뀔 수 있으므로 기존 번호를 영구적인 업무 코드로 쓰지 않습니다.
주의: 군집이 나왔다는 사실과 업무에서 유용한 구분을 찾았다는 사실은 다릅니다. 대표 사례·경계 사례·미배정 사례를 함께 검토하세요.
자주 묻는 질문
Q1. OPTICS는 군집 수를 미리 정해야 하나요?
아닙니다. 군집 수 자체를 입력하지는 않습니다. 대신 min_samples, 최대 탐색 거리와 추출 설정이 결과에 영향을 줍니다. 군집 수를 안 고른다는 이유로 기본값이 모든 데이터에 맞는 것은 아닙니다.
Q2. xi와 eps를 동시에 조절해야 하나요?
먼저 추출 방식을 확인하세요. scikit-learn에서는 xi가 xi 방식에, eps가 dbscan 방식에 쓰입니다. 서로 다른 역할의 설정이므로 어떤 방식을 실행했는지 확인하지 않고 두 값을 함께 바꾸면 결과를 해석하기 어렵습니다.
Q3. OPTICS 결과는 DBSCAN과 똑같나요?
항상 같지는 않습니다. 공식 문서는 경계점과 노이즈의 표시가 달라질 수 있으며 eps와 max_eps가 가까울 때 결과가 비슷하다고 설명합니다. 같은 군집 이름이 아니라 실제 사례들의 소속을 비교해야 합니다.
Q4. 도달 가능 거리 그림의 가로축은 시간인가요?
아닙니다. OPTICS가 만든 처리 순서입니다. 시간 순서를 입력 특징에 넣었다고 해도 가로축 자체가 시간으로 바뀌지는 않습니다. 특정 지점의 기록 시각은 원본 ID로 돌아가 별도로 확인합니다.
Q5. 군집 번호가 바뀌면 계산이 틀린 건가요?
그렇지는 않습니다. 군집 번호에는 크기나 중요도 순위가 없습니다. 재실행 결과를 비교할 때는 숫자 자체보다 같은 사례들이 함께 묶였는지, 노이즈와 경계가 얼마나 달라졌는지를 확인합니다.
출처
마무리
OPTICS는 밀집 영역을 따라 만든 처리 순서와 도달 가능 거리로 데이터의 군집 구조를 살펴보는 방법입니다. 하나의 반경만으로 나누기 어려운 자료에서 여러 밀도 수준의 후보를 검토하고 계산한 구조에서 xi 또는 DBSCAN 방식으로 그룹을 꺼냅니다.
처음에는 순서와 라벨을 구분하는 것부터 시작하세요. 도달 가능 거리 그림은 ordering_ 순서로 읽고 실제 사례는 원본 ID로 찾습니다. 추출 방식, 특징 단위와 미배정 사례를 함께 확인하면 OPTICS의 골짜기를 단순한 그림이 아닌 검토 가능한 분석 자료로 활용할 수 있습니다.
