2 minute read

벡터

노름(원점에서 부터의 거리) 구하기

노름에는 두가지 종류가 있다. L1-노름과 L2-노름이다.
L1-노름은 각 성분의 변화량의 절대값을 모두 더한 값으로 (아래 그림에서 파란 줄) \(||x||_{1} = \sum_{i=1}^{d}|x_{i}|\) 으로 나타낸다

L2-노름은 피타고라스 정리를 이용해 유클리드 거리를 계산하며 (아래 그림에서 빨간 줄) \(||x||_{2} = \sqrt{\sum_{i=1}^{d}|x_{i}|^{2}}\) 으로 나타낸다.
python 에서 np.linalg.norm 함수로 계산 가능.

triangle

벡터 사이의 거리, 각도 구하기

거리 구하기 - 벡터의 뺄셈을 이용 ||y-x|| 각도 구하기 - L2 노름에서만 가능하며 다음과 같은 두가지 방법이 있다.

  1. 코사인 2법칙 이용, 다음식을 계산하여 각도를 계산가능하다. \(a^{2} = b^{2} + c^{2} - 2bc\cos{A}\)
  2. 내적을 이용한다, 다음식을 계산하여 각도를 계산할 수 있다. \(\cos{\theta} = \frac{<x.y>}{||x||_{2}||y||_{2}}\) 에서 \(<x,y> = \sum_{i=1}^{d}x_{i}y_{i}\) 를 계산하여 각도를 계산한다.

<x,y> 는 python 에서 np.linner 함수로 계산 가능.

벡터의 내적

내적 - 정사영(orthogonal projection)된 벡터의 길이 내적은 정사영의 길이를 벡터 y의 길이 ||y||만큼 조정한 것
1번식 - \(Proj(x) = ||x||_{2}\cos{\theta}\)
2번식 - \(<x,y> = ||x||_{2}||y||_{2}\cos{\theta}\)
1번 식을 2번 식에 대입하면\(<x,y> = ||y||Proj(x)\) 와 같은 식을 얻을 수 있다.

행렬

python 에서는 X@Y 를 이용해 행렬을 곱셉한다.(numpy에서 사용)
numpy inner는 i번째 행백터와 j번째 행백터 사이의 내적 성분으로 행렬 계산. 수학에서와 달리 아래처럼 진행됨. \(\begin{pmatrix}x_{1}&x_{2}\\x_{3}&x_{4}\\ \end{pmatrix}\begin{pmatrix}y_{1}&y_{2}\\y_{3}&y_{4}\\ \end{pmatrix}\) 을 계산하여 \(\begin{pmatrix}x_{1}y_{1}&x_{2}y_{2}\\x_{3}y_{3}&x_{4}y_{4}\\ \end{pmatrix}\) 처럼 된다

행렬은 벡터 공간에서 사용되는 연산자로 행렬곱을 통해 다른 차원의 공간으로 보낼 수 있다. (행렬을 통해 패턴을 추출, 데이터 압축도움)

\[\begin{bmatrix}z_{1} \\ ... \\z_{n} \end{bmatrix}\begin{bmatrix}a_{11} & ... & a_{1m}\\ ... & ... & ...\\a_{n1}& ... &a_{nm}\end{bmatrix}\begin{bmatrix}x_{1} \\ ... \\x_{m} \end{bmatrix}\]

matrix

역행렬 존재 조건

  1. 행, 열 수가 같을 때
  2. 행렬식(determinant)이 0이 아닌 경우 (python - np.linalg.inv 통해 역행렬 구함)

역행렬 존재 조건을 만족하지 않으면 유사역행렬(pseudo-inverse) 또는 무어펜로즈(moore-Penrose) \(A^{+}\) 로 나타낸다.(np.linalg.pinv in python)
\(A^{+} = (A^{T}A)^{-1}A^{T}\) (행개수 >= 열개수)
\(A^{+} = A^{T}(AA^{T})^{-1}\) (행개수 >= 열개수)
(행개수 >= 열개수) \(A^{+}A = I\)
(행개수 >= 열개수) \(AA^{+} = I\)

파이썬에서 np.linalg.pinv 를 이용하여 다음과 같은 문제를 해결할 수 있다.

  • 연립방정식 풀기.
  • 선형회귀 분석.

Comments