스물두줄

컴퓨터시스템응용기술사 · 개념서 · 인공지능 및 머신러닝

유사도 측정

설명 영상 유사도 측정 · 2:31

왜 배우는가: 유사도 측정은 추천, 검색, 클러스터링, 표절 검사 등 AI 응용 전반에서 쓰이는 기초 척도라서 기술사 시험에 반복해서 나온다. 집합형, 벡터형, 군집 평가형 척도를 구분해 답하는 능력이 채점 포인트가 된다.

출제 이력: 제128회 2교시 6번, 제98회 4교시 6번

1. 한 줄 정의와 핵심 키워드

유사도(Similarity)는 두 객체의 특성이 얼마나 비슷한지를 0~1 또는 -1~1 범위의 수치로 나타낸 척도이다.

핵심 키워드

  • 유사도(Similarity): 두 객체 사이의 비슷한 정도를 수치화한 값
  • 자카드 지수(Jaccard Index): 교집합 크기를 합집합 크기로 나눈 집합 유사도
  • 코사인 유사도(Cosine Similarity): 두 벡터 사이 각도의 코사인값
  • 실루엣 계수(Silhouette Coefficient): 군집 분리와 응집의 정도를 나타내는 군집 평가 지표
  • 내적(Dot Product): 벡터 간 곱의 합으로 코사인 유사도의 분자
  • 노름(Norm): 벡터의 크기
  • 군집 분석(Cluster Analysis): 유사한 객체끼리 묶는 비지도 학습
  • 거리 척도(Distance Metric): 유사도와 반대 방향으로 비슷함을 측정

2. 개념 풀이

쉽게 말하면 유사도는 "두 대상이 얼마나 닮았는가"를 숫자로 답하는 방법이다. 추천 시스템은 사용자가 고른 항목이 얼마나 겹치는지를 보고, 검색 시스템은 질의와 문서의 방향이 얼마나 맞는지를 본다. 같은 "비슷함"이라도 데이터 형태에 따라 쓰는 척도가 달라진다.

정식 정의는 두 객체의 특성 표현 x와 y에 대해 값이 클수록 더 비슷하도록 정한 함수 sim(x, y)이다. 본 절에서는 집합형 데이터에 쓰는 자카드 지수, 벡터형 데이터에 쓰는 코사인 유사도, 군집 결과를 평가하는 실루엣 계수를 다룬다.

자카드 지수(Jaccard Index)는 두 집합 A, B 사이의 공통 원소 비율이다. 두 집합이 완전히 같으면 1, 공통 원소가 없으면 0이다. 순서와 중복을 보지 않고 존재 여부만 본다는 점이 특징이다. 두 집합이 서로소이면 값은 0이다.

코사인 유사도(Cosine Similarity)는 두 벡터 사이 각도의 코사인값이다. 벡터의 길이는 무시하고 방향만 비교한다. 방향이 같으면 1, 직교하면 0, 반대이면 -1이다. 문서를 단어 빈도 벡터로 표현할 때 문서 길이의 차이에 영향을 받지 않는 것이 장점이다.

실루엣 계수(Silhouette Coefficient)는 군집 결과가 얼마나 잘 나뉘었는지 보는 내부 평가 지표다. 한 객체가 자기 군집에 얼마나 가까운지와 가장 가까운 다른 군집에서 얼마나 먼지를 함께 본다. 값이 1에 가까울수록 잘 묶인 것이고, 음수이면 잘못 배정된 객체다.

3. 등장 배경과 필요성

정보 검색에서는 질의와 문서의 유사도를 비교한다. 문서 수와 어휘가 커지면서 단어 빈도를 벡터로 보고 방향을 비교하는 방식이 쓰이게 되었다. 이 과정에서 문서 길이에 따라 값이 왜곡되지 않는 척도가 필요해졌고, 코사인 유사도가 널리 쓰이게 되었다.

또 집합형 데이터인 구매 목록, 태그, 문서의 단어 집합은 빈도보다 공통 항목의 비율이 중요하다. 이때 자카드 지수가 자연스러운 척도가 된다. 대규모 데이터에서는 두 집합의 자카드 지수를 정확히 계산하는 비용이 크므로 MinHash 같은 근사 기법을 활용할 수 있다.

군집 분석에서는 정답 레이블이 없는 경우가 많아 결과를 평가할 기준이 필요하다. 군집 수를 정하거나 알고리즘을 비교할 때 객체 간 거리를 이용하는 실루엣 계수가 필요해졌다. 이 지표는 K-평균 군집화와 함께 많이 쓰인다.

이처럼 유사도 척도는 데이터 형태와 목적에 따라 나뉘어 발전했다. 척도를 잘못 고르면 모델 성능이 떨어지므로 데이터 형태를 먼저 파악하는 것이 필요하다.

4. 구성요소·원리·절차

유사도 측정은 데이터 형태에 따라 척도가 달라진다. 집합형 데이터에는 자카드 지수와 쇠렌센-다이스 계수를 쓰고, 벡터형 데이터에는 코사인 유사도를 쓴다. 군집 결과를 평가할 때는 실루엣 계수를 쓴다. 측정 대상이 다르므로 한 척도로 모든 데이터를 비교할 수 없다.

구분대상 데이터값 범위핵심 식주 용도
자카드 지수집합(이진 속성)0~1J=\A∩B\/\A∪B\태그 추천, 중복 검사
쇠렌센-다이스집합0~1D=2\A∩B\/(\A\+\B\)유전자·종 집합 비교
코사인 유사도벡터(단어 빈도, 임베딩)-1~1cosθ=A·B/(‖A‖‖B‖)문서·임베딩 유사도
실루엣 계수군집 결과-1~1s=(b-a)/max(a,b)군집 타당성, 최적 K 결정

자카드 지수는 두 집합의 교집합 크기를 합집합 크기로 나눈 값이다. 순서와 중복을 보지 않고 공유 항목의 비율만 본다. 두 집합이 같으면 1, 서로소이면 0이다. 쇠렌센-다이스 계수는 공유 항목에 더 큰 가중치를 준다. 두 척도는 각각의 정의식에 따라 값을 계산한다.

코사인 유사도는 두 벡터 사이 각도의 코사인값이다. 벡터의 방향만 반영하고 크기는 무시한다. 같은 방향이면 1, 직교하면 0, 반대 방향이면 -1이다. 단어 빈도 벡터처럼 값이 음수가 없으면 결과가 0~1 범위에 놓인다. 1-cosθ 를 거리로 쓰는 경우가 있으나 삼각부등식을 만족하지 않으므로 정확한 거리 함수가 아니다. 거리 공리가 필요하면 각거리(arccos)를 쓴다.

실루엣 계수는 샘플 i마다 a(i)와 b(i)를 구한다. a(i)는 같은 군집 내 평균 거리이고, b(i)는 가장 가까운 다른 군집까지의 평균 거리다. s(i)가 1에 가까우면 군집에 잘 속한 것이고, 0 근처이면 두 군집 경계에 있다. 음수이면 다른 군집에 더 가까워 잘못 배정된 것이다. 전체 실루엣은 모든 샘플 값의 평균이다. 평균 실루엣이 가장 큰 K를 최적 군집 수로 고른다.

실루엣 계수는 군집 내 거리와 군집 간 거리를 함께 비교하는 내부 평가 지표다

절차는 다음과 같다.

  • 데이터 형태를 판별한다(집합, 벡터, 군집 결과).
  • 전처리를 한다(집합은 이진화, 벡터는 정규화).
  • 목적에 맞는 척도를 고른다.
  • 샘플 쌍별 또는 샘플별 값을 계산한다.
  • 임계값을 정해 결과를 해석하고, 필요하면 척도를 바꿔 다시 계산한다.
유사도 측정 절차

5. 관련 법령·기준·표준

유사도 척도 자체를 정한 국가 법령은 없다. 척도의 정의는 통계학과 머신러닝 교재에서 굳어진 것이다. 실무 기준은 데이터 목적과 기관 규정이 정한다. 논문 유사도 검사처럼 법적 판단에 쓰이는 경우에는 기관별 내부 규정을 따른다.

척도기준 값단위·적용 조건근거
자카드 지수0 이상 1 이하무차원, 두 집합이 모두 공집합이면 정의 별도위키백과 MinHash 항목
쇠렌센-다이스 계수0 이상 1 이하무차원, 집합 크기 합이 0이면 계산 불가교재 정의
코사인 유사도-1 이상 1 이하무차원, 음이 아닌 벡터이면 0 이상 1 이하위키백과 코사인 유사도 항목
코사인 거리1-cosθ, 삼각부등식 불만족정확한 거리 함수가 아님, 각거리 사용위키백과 코사인 유사도 항목
실루엣 계수샘플별 -1 이상 1 이하무차원, 군집이 2개 이상이어야 함위키백과 군집 분석 항목
실루엣 해석 기준값이 높을수록 잘 군집화된 것으로 봄참고 기준클러스터 분석 — 평가 및 사정 > 내부 평가 > 실루엣 계수

위 표에서 실루엣 값이 높을수록 잘 군집화된 것으로 본다. 개정 연혁은 없다. 척도 정의가 바뀐 근거가 없으므로 개정으로 설명하지 않는다.

논문 유사도 검사 도구(Turnitin, iThenticate 등)는 문장과 단어 구성의 유사도를 비교한다. 이들의 내부 기준값은 공개되지 않은 경우가 많다. 따라서 답안에서는 도구 이름보다 척도의 원리를 쓰는 것이 안전하다.

6. 유형과 비교

유사도 척도는 데이터의 형태에 따라 나뉜다. 집합형 데이터에는 자카드 유사도(Jaccard Similarity), 벡터형 데이터에는 코사인 유사도(Cosine Similarity), 거리 기반 척도에는 유클리드 거리가 쓰인다. 같은 두 객체라도 척도가 다르면 결론이 달라지므로, 데이터 형태를 먼저 정하고 척도를 고른다.

이어지는 내용

로그인하면 하루 2페이지까지 무료로 전체를 읽을 수 있습니다.

앱에서 이 단원 읽기