벡터·행렬·거리·유사도
사용자 두 명이 비슷한지 판단할 때 나이만 같거나 구매금액만 비슷하다고 결론 내릴 수 없다. 나이, 방문횟수, 구매금액처럼 여러 특성을 순서 있게 묶어 한 점으로 나타내면 한꺼번에 계산할 수 있다. 사용자 여러 명의 묶음은 표 모양의 행렬이 되고, 점 사이 차이는 거리나 유사도로 수치화된다. 다만 어떤 특성과 비교함…
여러 특성을 한꺼번에 비교하려면 같은 공간에 놓아야 한다
사용자 두 명이 비슷한지 판단할 때 나이만 같거나 구매금액만 비슷하다고 결론 내릴 수 없다. 나이, 방문횟수, 구매금액처럼 여러 특성을 순서 있게 묶어 한 점으로 나타내면 한꺼번에 계산할 수 있다. 사용자 여러 명의 묶음은 표 모양의 행렬이 되고, 점 사이 차이는 거리나 유사도로 수치화된다. 다만 어떤 특성과 비교함수를 골랐는지가 비슷하다의 의미를 결정한다.
먼저 되짚기: 함수와 좌표
함수는 허용 입력마다 하나의 출력을 대응시키는 규칙이고, 좌표는 정한 축과 순서에 따라 대상의 위치를 수의 순서열로 나타낸 것이다. 축의 뜻과 단위가 달라지면 같은 숫자도 다른 위치를 뜻한다. 벡터는 이 좌표를 계산 가능한 대상으로 다룬다.
벡터와 행렬
작은 계산으로 기호를 먼저 읽자. 아래첨자 1·2는 성분의 위치이고 위첨자²는 그 값을 자기 자신과 곱하는 제곱이다. x=(3,4)에서 x₁=3, x₂=4이고 Σxᵢ²의 Σ는 각 위치의 값을 더하라는 뜻이라 3²+4²=9+16=25다. √25는 제곱하면 25가 되는 음이 아닌 수 5다. y=(1,2)이면 내적은 3×1+4×2=11이다.
행은 가로줄, 열은 세로줄이고 Av는 행렬 A와 벡터 v의 곱을 뜻한다. 행렬 A의 두 행을 (1,2), (0,1)로 두고 열벡터 v=(3,4)를 곱하면 첫 출력은 1×3+2×4=11, 둘째는 0×3+1×4=4여서 Av=(11,4)다. 되돌리는 행렬의 두 행을 (1,−2), (0,1)로 두면 (11−2×4,4)=(3,4)가 된다. 아래 행·열·노름·역행렬 기호는 이 중간 계산을 압축해 쓴 것이다.
벡터는 크기와 순서를 가진 값들의 목록으로, 공간의 한 점이나 방향을 표현한다. x = (x₁, x₂, …, xₙ)에서 각 값은 성분이고 n은 차원이다. 두 벡터는 같은 차원과 같은 성분 의미를 가질 때 성분별로 더하거나 차이를 계산할 수 있다. 벡터의 내적은 같은 위치의 성분끼리 곱해 모두 더한 값이며, 두 방향이 얼마나 나란한지와 한 방향에 놓인 성분의 크기를 계산하는 데 쓰인다.
행렬은 같은 길이의 벡터들을 행과 열로 배열한 직사각형 모양의 숫자 표다. 데이터 행렬에서는 행을 관측대상, 열을 특성으로 두는 경우가 많다. 행렬 곱은 한 공간의 벡터를 다른 공간으로 변환하거나 여러 선형 관계를 한 번에 계산하는 규칙으로 볼 수 있다. 행·열의 크기와 의미가 맞아야 연산할 수 있다.
벡터의 크기를 재는 규칙을 노름(norm)이라고 한다. 대표적인 2-노름은 ||x||₂=√(x₁²+…+xₙ²)이고, 유클리드 거리 ||x-y||₂는 두 벡터 차이의 2-노름이다. 다른 노름을 쓰면 크기와 거리의 수치가 달라질 수 있으므로 계산에 사용한 노름을 함께 적는다.
정사각행렬에서 Ix=x처럼 벡터를 그대로 두는 행렬 I를 단위행렬이라 한다. A⁻¹A=AA⁻¹=I를 만족해 A의 변환을 되돌리는 A⁻¹이 있으면 A는 가역, 없으면 특이행렬이다. 가역인 A에 대해 Ax=b의 해는 하나이며 x=A⁻¹b로 표현할 수 있지만, 실제 수치계산에서는 역행렬을 직접 만들기보다 소거·분해로 푸는 경우가 일반적이다.
다시 연결하기: 벡터에서 거리·유사도로
벡터는 같은 순서의 특성값을 한 점이나 방향으로 표현한다. 두 데이터를 거리나 유사도로 비교하려면 먼저 같은 차원·특성순서·단위의 벡터 공간에 놓여 있어야 한다.
거리와 유사도
거리 함수는 두 데이터가 얼마나 다른지를 0 이상의 값으로 나타내며 값이 작을수록 가깝다고 해석한다. 엄밀한 수학적 거리는 같은 대상 사이에서만 0이고, 순서를 바꿔도 같으며, 한 점에서 다른 점으로 직접 가는 거리가 제3의 점을 거친 거리보다 크지 않다는 삼각부등식을 만족한다. 실무의 모든 차이값이 이 조건을 다 만족하는 것은 아니므로 어떤 성질을 기대하는지 확인해야 한다.
유사도 함수는 두 데이터가 얼마나 비슷한지를 나타내며 보통 값이 클수록 비슷하다고 해석한다. 유클리드 거리는 직선거리, 맨해튼 거리는 성분별 절댓값 차이의 합, 코사인 유사도는 벡터 길이보다 방향이 얼마나 같은지를 본다. 거리와 유사도의 선택은 데이터 공간에서 무엇을 가까움으로 볼지를 정한다.
특성을 같은 공간에 놓고 비교한다
상자 안의 대상과 화살표의 조건을 함께 읽으세요. 좁은 화면에서는 같은 관계를 세로로 재배치한 도식을 보여 줍니다.
방문 10회·금액 100000원으로 조정한 A′=(0.4,1), B′=(0.6,1.1), C′=(0.8,2)를 비교한다. 규모를 볼 때 B가 가깝지만 C는 A의 2배라 코사인 1로 방향이 가장 같다. 비교 목적에 따라 함수와 이웃 선택이 달라진다.
원자료에서 특성 선택·순서를 고정해 벡터·행렬을 만든다. 단위·척도를 조정한 같은 공간에서 거리나 유사도를 계산한 뒤 가까움의 업무 의미를 검증한다. 위 그림의 조정 단계에는 결측 처리와 가중치도 함께 검토한다.
사례: 방문횟수와 구매금액을 그대로 비교하지 않는다
사용자 A=(4회, 100000원), B=(6회, 110000원)라면 원 단위 구매금액 차이 10000이 방문횟수 차이 2를 압도한다. 각 특성을 비슷한 의미 범위로 조정한 뒤 유클리드·맨해튼 거리 또는 방향 패턴을 보는 코사인 유사도를 선택한다.
비교함수는 계산 편의가 아니라 업무상 무엇을 비슷함으로 볼지에 따라 고른다. 총량 차이가 중요하면 거리, 구성비 패턴이 중요하면 코사인 유사도가 더 맞을 수 있다.
이 교육용 비교는 방문 10회와 금액 100000원을 각각 척도 1로 정한다. A′=(4/10,100000/100000)=(0.4,1), B′=(0.6,1.1)이므로 차이는 (−0.2,−0.1)이다. 유클리드 거리는 √(0.04+0.01)=√0.05≈0.2236, 맨해튼 거리는 0.2+0.1=0.3이다. 코사인은 (0.4×0.6+1×1.1)/(√1.16×√1.57)=1.34/√1.8212≈0.9929다.
총량 차이도 중요하다는 업무 선택에서는 척도 조정한 유클리드 거리를 채택한다. C′=(0.8,2)는 A′의 정확히 2배여서 코사인 1이지만 거리는 √1.16≈1.077이므로, 방향만 같은 대상을 동일 규모라고 보지 않는다. 척도 10회·100000원은 자체 비교 기준이며 모든 데이터의 최적 척도라고 주장하지 않는다.
특성을 벡터로 만들고 비교하는 순서
사용자 A를 (방문횟수 4, 구매금액 100000원), B를 (방문횟수 6, 구매금액 110000원)으로 표현해 보자. 그대로 유클리드 거리를 구하면 구매금액 차이 10000이 방문횟수 차이 2를 압도한다. 두 특성의 단위와 범위가 다르기 때문이다. 관찰한 최솟값과 최댓값 등을 기준으로 각 특성을 비슷한 범위로 조정한 뒤 거리를 계산해야 의도한 중요도가 반영된다.
|a|는 부호를 제외한 크기인 절댓값이다. 예를 들어 |−0.2|=0.2이고 |0.1|=0.1이다. 유클리드 거리는 √Σ(xᵢ-yᵢ)², 맨해튼 거리는 Σ|xᵢ-yᵢ|로 계산한다. 코사인 유사도는 x·y / (||x|| ||y||)로, 두 벡터의 내적을 각 벡터 길이의 곱으로 나눈 값이다. 사용자 여러 명을 행으로 쌓은 행렬을 만들면 모든 대상을 같은 특성 순서로 관리하고 변환·비교할 수 있다. 계산 전에는 결측 처리, 단위 조정, 특성 가중치와 비교함수를 먼저 정한다.
가까움의 뜻에 맞는 함수를 고른다
| 방법 | 주로 보는 것 | 적합한 예 | 주의점 |
|---|---|---|---|
| 유클리드 거리 | 직선상 절대 차이 | 단위가 조정된 연속 특성 | 큰 차이를 제곱해 더 크게 반영함 |
| 맨해튼 거리 | 축별 절대 차이의 총합 | 이동비용처럼 성분별 차이가 더해지는 경우 | 축 방향과 특성 척도에 영향받음 |
| 코사인 유사도 | 벡터의 방향·구성 비율 | 문서 단어비율, 활동 패턴 | 크기 차이를 대부분 무시하며 영벡터에는 정의되지 않음 |
| 집합 기반 유사도 | 공통 원소의 비율 | 보유 태그·권한·상품 집합 | 원소의 빈도와 순서를 표현하지 않음 |
결과를 고른 뒤 설명을 붙이지 말고 먼저 업무상 비슷함을 정의한다. 총사용량이 같아야 하는지, 구성비만 같으면 되는지, 일부 큰 차이를 얼마나 크게 반영할지에 따라 함수가 달라진다. 여러 방법으로 결과가 얼마나 바뀌는지도 확인한다.
숫자로 바꾸었다고 의미가 자동으로 생기지는 않는다
성별·지역·등급 같은 범주에 임의로 1, 2, 3을 붙이고 유클리드 거리를 계산하면 1과 2가 2와 3만큼 가깝다는 존재하지 않는 순서를 만든다. 한 특성의 범위가 매우 크면 그 특성만 결과를 지배한다. 결측값을 0으로 채우면 관측되지 않음과 실제 0이 섞인다.
코사인 유사도는 모든 성분이 0인 벡터에서 계산할 수 없고, 높은 유사도는 원인이나 동일성을 증명하지 않는다. 차원이 매우 많으면 대부분 점 사이 거리가 비슷해져 구분력이 낮아질 수 있다. 특성의 의미, 척도, 0이 많은 자료인지, 이상값과 결과 민감도를 함께 검토한다.
자체 10점 문제
벡터·행렬, 거리와 유사도의 관계를 설명하고 데이터 비교 시 척도·함수 선택의 유의사항을 제시하시오.
요구어는 설명과 제시다. 동일 차원·특성 의미, 척도 조정, 거리와 유사도의 업무 의미를 구분한다.
10점 풀이 방향과 모범답안 보기
10점 답안 목차
- 벡터와 행렬의 표현
- 노름·내적
- 거리와 유사도
- 척도·결측·특성 가중치
- 업무상 가까움과 함수 선택
10점 답안 도식
특성을 같은 순서의 벡터·행렬로 묶고 척도를 조정해 같은 공간에 놓는다. 거리와 유사도는 서로 다른 비교 질문이며 결과는 업무 의미로 판단한다. A′·B′·C′의 선택 비교 그림에서 규모와 방향에 따른 이웃 선택을 대조한다.
기술사 답안으로 전환하기
예상문제: “벡터·행렬의 개념을 설명하고 유클리드 거리, 맨해튼 거리와 코사인 유사도의 특성 및 선택기준을 제시하시오.”
벡터는 크기와 순서가 있는 값의 목록으로 대상의 좌표나 방향을 나타내고, 행렬은 같은 의미의 벡터들을 행과 열로 배열한 숫자 표다. 내적은 같은 위치 성분의 곱을 합한 값이며 방향 관계와 선형 변환 계산에 쓰인다. 행렬 연산은 행·열 크기뿐 아니라 각 축과 특성의 의미가 맞아야 한다.
유클리드 거리는 제곱차 합의 제곱근으로 직선상 절대 차이를, 맨해튼 거리는 성분별 절댓값 차이의 합을 본다. 코사인 유사도는 내적을 두 벡터 길이의 곱으로 나눠 크기보다 방향·구성비를 본다. 총량과 절대 위치가 중요하면 유클리드, 축별 이동비용이 더해지면 맨해튼, 문서·활동의 구성 패턴이 중요하면 코사인을 후보로 삼는다.
특성 단위와 범위가 다르면 큰 숫자 특성이 거리를 지배하므로 척도를 조정하고 업무상 중요도에 맞는 가중치를 검토한다. 범주에 임의 번호를 붙여 거리로 계산하거나 결측을 0으로 바꾸지 않는다. 코사인은 영벡터에 정의되지 않고 높은 유사도가 동일성·인과를 뜻하지 않는다. 특성 의미·척도·이상값·희소성과 방법 변경에 따른 민감도를 함께 검증한다.
자체 25점 문제
사용자 행동 데이터를 벡터·행렬로 구성하고 척도조정·결측처리·거리·유사도 선택을 통해 유사 사용자 탐색 절차를 설계하시오.
요구어는 구성과 설계다. 수학적 가까움이 업무적 가까움을 의미하는지 검증하는 단계까지 포함한다.
25점 풀이 방향과 모범답안 보기
25점 답안 목차
- 비교목적과 특성 정의
- 벡터 차원·순서
- 행렬 구성
- 단위·척도 조정
- 결측·이상값 처리
- 거리·유사도 후보
- 업무 의미와 결과 검증
- 가중치·척도 변화 민감도
25점 답안 도식
| 이웃 탐색의 연결 | 기록·검증할 것 |
|---|---|
| 사용자×특성 행렬 → 척도·결측·가중치 | 행·열 의미와 같은 공간의 계약 |
| 비교함수 후보 → 이웃 결과 | 거리·유사도가 보는 차이 |
| 이웃 결과 → 업무 검증 → 재조정 | 실제 반례와 척도·가중치·함수 민감도 |
실제 비교의 두 선택 경로를 아래 규모 목적 선택에 연결한다.
25점 모범답안
먼저 유사 사용자를 찾는 목적과 방문횟수·구매금액·카테고리 비율처럼 비교할 특성을 정의한다. 모든 사용자를 같은 특성 순서의 벡터로 만들고 행렬의 행으로 쌓는다. 단위와 범위가 큰 구매금액이 다른 특성을 압도하지 않도록 척도를 조정하고 결측·이상값의 의미를 정한다.
절대적인 크기 차이가 중요하면 유클리드·맨해튼 거리, 활동 구성비와 방향이 중요하면 코사인 유사도를 후보로 둔다. 영벡터, 희소성, 가중치와 특성 중복의 영향을 확인한다.
실제 가까운 사용자 사례와 반례에서 결과가 업무상 비슷함을 보존하는지 검증한다. 척도·가중치·함수를 조금 바꿨을 때 이웃이 크게 바뀌면 민감도를 기록하고 판단 목적에 맞는 표현과 비교함수를 다시 선택한다.
선택한 기준은 방문 10회·금액 100000원으로 나눈 뒤 유클리드 거리를 쓰는 것이다. A′–B′ 거리 0.2236과 A′–C′ 거리 1.077을 비교해 B를 더 가까운 규모의 사용자로 고른다. 코사인에서는 C가 1로 가장 가까워져 선택이 달라지므로, 규모를 보려는 목적과 방향 패턴을 보려는 목적의 차이를 검증 기록에 남긴다.
출처와 적용 경계
벡터·행렬·노름·거리·코사인 유사도는 안정된 선형대수·데이터분석 기초개념이다. 사용자 행동 사례는 자체 교육 예이며 실제 추천모델 성능을 뜻하지 않는다.
자기교정과 조건 변경
| 잘못 쓴 답 | 수정 | 복습 |
|---|---|---|
| 차원 수만 같으면 벡터를 비교할 수 있다 | 각 성분의 의미·순서도 같아야 한다 | 정의 |
| 원 단위와 횟수를 그대로 사용해 거리를 계산해도 된다 | 척도 차이가 결과를 지배하는지 확인한다 | 사례 |
| 코사인 유사도는 크기 차이도 그대로 반영한다 | 주로 방향·구성비를 본다 | 비교 |
| 계산된 가장 가까운 점은 업무상 가장 유사하다 | 비교함수의 의미를 실제 사례로 검증한다 | 도식 |
| 결측값은 0으로 채우면 된다 | 미관측과 실제 0의 의미를 구분한다 | 실패 |
구매금액 중요도를 두 배로 높이면? 가중치 변화에 따라 이웃 결과와 업무타당성이 어떻게 달라지는지 재검증한다.
활동량보다 카테고리 구성비가 중요하면? 크기보다 방향을 보는 유사도 후보를 우선 비교한다.
특성 하나의 단위가 원에서 천 원으로 바뀌면? 변환·척도 규칙을 함께 갱신해 거리의 의미를 보존한다.
30초 정리
- 벡터는 순서 있는 특성 목록, 행렬은 여러 벡터를 행과 열로 묶은 계산 표현이다.
- 거리는 차이를, 유사도는 닮음을 수치화하지만 선택한 함수가 가까움의 의미를 정한다.
- 유클리드는 절대 위치, 맨해튼은 성분별 차이, 코사인은 방향과 구성비를 주로 본다.
- 계산 전에는 특성 의미·단위·척도·결측·가중치를 정하고 방법에 따른 결과 변화를 확인한다.