0. 벡터와 행렬

MostlyFor·2023년 1월 3일
0

벡터는 크기와 방향을 갖는 물리량으로서 숫자를 원소로 가지는 배열 또한 벡터로 볼 수 있음.

벡터는 n차원 공간상의 한 점으로 나타낼 수 있음.

벡터의 거리

norm은 벡터의 거리를 나타낼 수 있는 수단.

L1 norm - 절대값의 합

x1=i=1dxi||x||_1 = \sum^d_{i=1} |x_i|

L2 norm - 유클리드 거리

x2=i=1dxi2||x||_2 = \sqrt{\sum^d_{i=1}|x_i|^2}

L1, L2 norm은 서로 거리의 정의가 달라서 어떤 norm이냐에 따라 원의 형태가 달라짐.
.
L1에서는 원점으로부터의 거리가 1인 원은 마름모 꼴로 나오고 L2에서는 우리가 아는 원 형태가 나옴.

두 norm의 기하학적 성질이 달라서 상황에 따라 선택해서 사용해야 함.

두 벡터의 거리

A와 B 벡터 사이의 거리는 두 벡터를 빼서 norm을 계산하면 된다.

두 벡터 사이의 각도

L2 norm 에서만 존재한다.
내적으로 계산하면 된다.

행렬

행렬은 벡터를 원소로 가지는 2차원 배열

코딩할 때 행렬은 행벡터를 원소로 가지는 2차원 배열로 생각하는게 편함.

행렬은 벡터를 다른 차원의 공간으로 보내주는 연산자로 이해할 수 있다.
Z=AXZ=AX 에서 Z = n x 1 A = n x m X = m x 1 차원이라면 벡터 X는 행렬 A에 의해 Z로 변환되었다고 할 수 있다.

차원을 바꾸는 것을 통해 정보를 압축할 수도 있고 패턴을 추출할 수도 있다.

역행렬

변환 전으로 돌리고 싶은 경우 역행렬을 사용할 수 있는데, 역행렬은 행과 열의 숫자가 같아야하고 행렬식이 0이 아니어야 한다.

역행렬이 없을 경우 유사역행렬(pseudo-inverse) 또는 무어-펜로즈(Moore-Penrose) 역행렬을 이용한다.

B = np.array([[1,2]])

B @ np.linalg.pinv(B)
# 결과값 [[1]]

0개의 댓글