1. Vector
벡터
- 숫자를 원소로 가지는 리스트 또는 배열
- 공간에서 원점으로부터 한 점까지 상대적 위치를 표현
- 벡터에 숫자를 곱해주면 길이만 변함 → 스칼라곱 연산
- 벡터끼리 같은 모양을 가지는 경우에만 덧셈과 뺄셈이 가능하며, 성분곱을 계산할 수 있다.
벡터의 덧셈&뺄셈
- 벡터의 덧셈과 뺄셈은 다른 벡터로부터의 상대적 위치 이동을 표현
- y - x 는 y벡터에서 x벡터의 반대 방향으로 이동하는 것
노름(norm)
- 벡터의 노름은 원점에서부터의 거리를 의미
- 노름의 종류에 따라 거리의 개념이 달라지기 떄문에 기하학적 성질이 달라진다
L1 norm
∣∣x∣∣1=i=1∑d∣xi∣
def l1_norm(x):
x_norm = np.abs(x)
x_norm = np.sum(x_norm)
return x_norm
L2 norm
∣∣x∣∣2=i=1∑d∣xi∣2
def l2_norm(x):
x_norm = x*x
x_norm = np.sum(x_norm)
x_norm = np.sqrt(x_norm)
return x_norm
- 벡터 사이의 거리&각도
- L1 , L2 norm을 이용해 두 벡터 사이의 거리를 계산할 수 있다.
- 두 벡터 사이의 거리를 구할 수 있다면, 제 2코사인 법칙에 의해 l2노름과 내적을 이용해 차원에 구애받지 않고 각도를 계산할 수 있다.
💡 제 2 코사인 법칙
a2=b2+c2−2bcCosA
b2=a2+c2−2acCosB
c2=a2+b2−2abCosC
- 내적
- 빛을 쐈을 때 그림자를 볼 수 있듯이 x벡터의 y벡터 상에서의 그림자를 정사영이라고 이해하면 편하다.
- 정사영의 길이는 ||x||cos세타가 되며, 이를 벡터 y의 길이 ||y|| 만큼 조정한 값이 내적이다.
- 파이썬에서는 np.inner를 이용해서 내적을 계산할 수 있으며, 두 벡터의 유사도를 측정하는데 사용 가능하다