der Wille zur Macht,

[수학/선형대수] 공간 속 벡터의 좌표와 좌표변환

좌표와 변환 (공간 속 좌표 의미와 좌표 변환)

벡터의 선형종속과 선형독립

벡터공간의 틀. 기준인 기저벡터를 정의하기 위해 쓰인다.

예측모형 성능 극대화를 위해서는 벡터들의 선형종속을 없애야 한다.

선형종속

  • 정의 : 벡터들을 선형조합 할 때 쓰이는 스칼라 계수들이 전부 0이 아닌 경우에도 선형조합 결과가 0벡터 되는 경우가 있으면 ‘벡터들이 선형종속이다’라고 한다.

  • 스칼라 계수들이 전부 0이어서 선형조합 결과가 영벡터 나오는 경우는 생각하지 않는다.

선형독립

  • 정의 : 벡터들 선형조합 할 때 쓰이는 스칼라 계수들이 전부 0일 때만, 선형조합 결과가 0벡터 나오면 ‘벡터들이 선형독립이다’라고 한다.

  • 선형독립을 논리 기호로 아래처럼 표기한다.

$c_{1}x_{1}+c_{2}x_{2}+…c_{n}x_{n} = 0 \rightarrow c_{1}, c_{2}, … c_{n} = 0$

또는

$c_{1}x_{1}+c_{2}x_{2}+…c_{n}x_{n} = 0 \leftrightarrow c_{1}, c_{2}, … c_{n} = 0$

오른쪽에서 왼쪽 방향 화살표는 굳이 표시 안 해도 당연히 성립한다.

위 논리기호를 아래처럼 표시하기도 한다.

$Xc = 0 \rightarrow c = 0$

또는

$Xc = 0 \leftrightarrow c = 0$


메모)

두 벡터만 있을 경우

  • 두 벡터 방향이 다르면 선형독립

  • 두 벡터 방향이 같으면 선형종속

이었다.


  • 양벡터 아닌 벡터 N개가 있을 때, 이들 N개가 서로 모두 직교하면 N개 벡터는 ‘선형독립’이다.

벡터들이 선형종속인 전형적인 경우

예측모형에 입력 데이터로 넣으려는 특징행렬에 선형종속이 발생하는 전형적 경우는 아래와 같다.

1. 특징행렬의 행 개수보다 열 개수가 더 많은 경우 선형종속 발생한다.

특징행렬을 스칼라 계수들과 함께 선형연립방정식이라 생각했을 때, 이 경우 방정식 개수보다 미지수 개수가 더 많은 경우다.

방정식 수 보다 미지수 수가 더 많으면, 방정식 해가 무한히 많이 존재한다.

이 무한히 많은 해 중에 선형연립방정식을 0과 같게 하는, 스칼라 계수 벡터가 0벡터 아닌 경우가 반드시 존재하므로, 선형종속이다.

행 개수와 열 개수가 같거나, 열 개수보다 행 개수가 더 많은 경우 대부분 벡터들이 선형독립이다.

2. 특징행렬 열벡터 중에 서로 중복되는 벡터가 있으면 선형종속이다.

한 열벡터가 또 다른 벡터의 실수배 인 경우도 선형종속이다.

3. 특징행렬 열벡터 중 하나가 다른 벡터들의 선형조합 결과와 같으면 선형종속이다.


랭크와 풀랭크

랭크

  • 내가 예측모형에 입력데이터로 쓰려고 하는 특징행렬에 선형종속이 있는지, 없는지 확인하는 데 사용할 수 있다.
  • 정의 : 행렬 행벡터 또는 열벡터 들 중 서로 선형독립인 벡터들의 수
  • 행 랭크와 열 랭크 값은 같다. 따라서 그냥 ‘랭크’라고 부른다.
  • 행렬 X가 있을 때, 다음이 성립한다.

$rank(X) \le min(M,N)$

M, N은 각각 행렬의 행, 열 갯수

풀랭크

앞에서 랭크 값은 다음과 같았다.

$rank(X) \le min(M,N)$

만약

$rank(X) = min(M,N)$ 이면 ‘풀랭크’라고 한다.

넘파이로 랭크 계산하기

X = np.array([
    [1,2,3],
    [4,5,6],
    [7,8,9]])

np.linalg.matrix_rank(X)

로우-랭크 행렬

  • 정의 : 서로 선형독립인 벡터들을 자기자신의 전치행렬과 선형조합해서 만든 행렬들 통칭한다.

종류)

랭크-1 행렬

벡터 1개를 자기자신의 전치행렬과 선형조합해서 만든 행렬

$xx^{T} \in R^{N*N}$

정방행렬이다.

랭크-1행렬의 랭크는 1이다.

랭크-2 행렬

선형독립인 벡터 2개를 자기자신의 전치행렬과 선형조합해서 만든 행렬

$x_{1}x_{1}^{T} + x_{2}x_{2}^{T}$

랭크-2행렬 랭크는 2다.

랭크-M 행렬

선형독립인 벡터 M개를 자기자신의 전치행렬과 선형조합해서 만든 행렬

$\sum_{i}^{M}{x_{i}}{x_{i}^{T}}$

랭크는 M이다.


벡터공간과 기저벡터

벡터공간

  • 정의 : 서로 선형독립인 N개 벡터(기저벡터)를 선형조합해서 만든 벡터들의 집합

  • 벡터공간의 차원은 기저벡터 개수가 결정짓는다.

예를 들어 3차원 기저벡터 2개를 가지고 선형조합해서 벡터공간 만들면, 2차원 벡터공간인 것이다.

N차원 벡터공간 만드는 데 기저벡터의 차원은 아무 상관도 없다.

따라서 7차원 기저벡터로 2차원 벡터공간을 만들 수 있는 것이다.

  • 서로 선형독립인 N차원 벡터 N개가 있으면, 이것들을 선형조합해서 모든 N차원 벡터를 만들 수 있다.

= 기저벡터들이 정방행렬 이루면, 기저벡터 선형조합해서 모든 N차원 벡터 만들 수 있다.

  • 기저벡터들이 정방행렬 이룰 때, 모든 기저벡터에 직교하는 영벡터 아닌 임의의 벡터 $x$는 존재하지 않는다.

다음처럼 증명이 가능하다.

기저벡터들을 열벡터 삼아 정방행렬을 만들자.

이 행렬은 열벡터가 모두 선형독립이므로, 풀랭크인 정방행렬이다.

정방행렬이 풀랭크이면, 역행렬이 반드시 존재한다.

한편, “모든 기저벡터에 직교하는 영벡터 아닌 벡터 $x$ 가 존재한다면”, 으로 가설을 놓고, 이 문제를 증명하자. 만약 증명 결과가 처음 놓았던 가설에 배치된다면 첫 가설을 기각하고 그와 반대되는 가설을 채택하면 될 것이다.

모든 기저벡터에 직교하는 영벡터 아닌 벡터 $x$ 가 존재한다면, 다음 식이 성립한다.

$X^{T}x = 0$

X는 기저벡터 정방행렬이다.

$X^{T}$의 역행렬은 $X^{-1}$의 전치행렬과 같다. $X^{-1}$ 가 항상 존재하므로, $X^{T}$ 의 역행렬도 항상 존재한다.

$X^{T}$ 를 $A$ 라 하면,

$x = A^{-1}*0$ 이 성립한다.

우변은 영벡터다. 따라서 x도 영벡터다.

처음 세웠던 가설에서 벡터 x의 조건은 ‘영벡터가 아닐 것’ 이었다. 하지만 증명 결과 $x$ 가 영벡터 일 때만 $x$가 모든 기저벡터에 직교했다.

따라서 처음 세웠던 가설을 기각하면, ‘모든 기저벡터에 직교하는 영벡터 아닌 벡터 $x$ 는 존재하지 않는다’는 결론이 나온다.


기저벡터

  • 정의 : 벡터공간의 ‘축’, ‘틀’, ‘기준’
  • 서로 선형독립인 N개 벡터
  • 벡터에 좌표를 부여하는 ‘기준’이다.
  • 기저벡터 선형조합해서 벡터공간 내 벡터들을 만든다.

N차원 기저벡터들이 정방행렬 이루면, 이 기저벡터들 선형조합해서 모든 N차원 벡터 만들 수 있다.

한편, 기저벡터들이 정방행렬 이루지 않는 경우 N차원 기저벡터 선형조합해도 만들 수 없는 N차원 벡터들이 존재했다.

예를 들어

2차원 벡터공간의 기저벡터 $[1,0,0], [0,1,0]$ 가 있다. 이 벡터들을 어떻게 선형조합해도 절대 3차원 벡터 $[1,1,1]$ 은 만들지 못한다.


정방행렬 랭크와 역행렬

정방행렬 랭크와 역행렬 사이에는 다음 정리가 성립한다.

정방행렬이 풀랭크다 $\leftrightarrow$ 역행렬이 존재한다


고차원 벡터의 저차원 벡터공간 투영

M개의 N차원 기저벡터가 있다. (N>M)

또 N차원 벡터 $x$ 가 있다.

만약

M개의 N차원 기저벡터를 선형조합해서 만든 벡터($a$ 라 하자)와 N차원 벡터 $x$ 의 차 $x-a$ 가 M개 기저벡터 모두에 직교하면,

벡터 $a$를 벡터 $x$의 ‘벡터공간에 대한 투영벡터($x$ 의 투영성분)’라고 하고,

$x - x^{\Vert V}$ 를 벡터 $x$의 ‘벡터공간에 대한 직교벡터($x$ 의 직교성분)’ 라고 한다.

  • 이 ‘투영벡터’는 저차원 벡터공간 상의 모든 벡터 중 원래 벡터 $x$와 가장 비슷한 벡터다(코사인 유사도 모두 동일 할 때, 유클리드 거리 기준).

  • 투영벡터 : 벡터 $x$를 저차원 벡터공간의 기저벡터 가지고 표현한다면? 의 답. $x$와 가장 비슷하지만, 그럼에도 벡터 $x$를 완전히 표현하지 못하는, $x$의 일부분이다.

정규직교 기저벡터로 이루어진 벡터공간

  • 기저벡터 $v_{1}, v_{2}, … v_{n}$ 이 정규직교이면, 이 벡터공간에 대한 투영벡터는 각 기저벡터에 대한 내적값이다.

$x^{\Vert V} = \sum_{i}^{n}(x^{T}v_{i})v_{i}$

  • 투영벡터 길이 제곱은 벡터 $x$와 각 기저벡터 내적의 제곱합이다.

$\lVert x^{\Vert V} \rVert ^{2} = \sum_{i}^{M}(x^{T}v_{i})^{2}$

  • 벡터공간에 대한 벡터 $x$의 직교벡터 $x^{\perp V}$ 는 벡터공간의 모든 벡터에 대해 직교한다.

  • 벡터공간에 대한 벡터 $x$의 투영벡터 $x^{\Vert V}$ 는 벡터공간 상 모든 벡터 중에 벡터 $x$와 가장 비슷한(가까운) 벡터다.

표준기저벡터

  • 정의 : 선형독립인 벡터들 중에서, 벡터 요소가 하나만 1이고 나머지는 모두 0으로 구성된 벡터를 ‘표준기저벡터’라고 한다.

$[1,0,0], [0,1,0], [0,0,1]$ 등

  • 표준기저벡터를 열로 가지는 행렬은 항등행렬 $I$ 가 된다.

좌표

  • 정의 : 벡터공간 상 벡터의 ‘상대적 위치’

  • 어떤 벡터의 좌표는 기저벡터에 따라 결정된다.

= 1개 벡터의 좌표가 기저벡터에 따라 여러개 존재할 수 있다.

일반적으로 쓰는 표준기저벡터 직교좌표계 또한 벡터 좌표를 결정짓는 여러 ‘기준’ 중 하나일 뿐이다.

  • 벡터의 좌표는 벡터공간 기저벡터 선형조합 할 때 사용하는 스칼라 계수 벡터와 같다.

$a = c_{1}x_{1}+c_{2}x_{2}$ 일 때 $x_{1}, x_{2}$ 가 기저벡터이면 $c_{1}, c_{2}$ 가 그 기저벡터가 이루는 벡터공간 상에서 벡터 $a$ 좌표다.

위 식은

$a = [x_{1}, x_{2}][c_{1}, c_{2}]^{T}$

로 바꿔 나타낼 수 있다. 이때 식의 의미는 ‘기저벡터가 $x_{1}, x_{2}$ 일 때, 벡터 $a$ 의 좌표는 $c_{1}, c_{2}$ 이다’ 로 이해할 수 있다.


좌표변환과 변환행렬

  • 좌표변환이란 어떤 벡터 x의 좌표를 새 기저벡터 상에서의 좌표로 바꾸는 작업이다.

내가 이해한 좌표변환 과정은 다음과 같다.

  1. 새 기저벡터로 삼으려는 임의의 벡터 g1, g2 가 있다.
  2. g1, g2는 어떤 좌표를 갖고 있긴 한데, 어떤 기저벡터를 기준으로 삼고 있는지 ‘모른다’
  3. 또다른 어떤 기준 따르는 벡터 x 좌표를 g1, g2를 기준으로 좌표변환 하려 한다.
  4. 벡터 x의 좌표를 규정하는 기준과 g1, g2 좌표를 규정하는 기준이 다르면 좌표변환 할 수가 없다. (<– 정확한 이유가 아직 논리적으로 정리되지 않는다) 따라서 벡터 x의 좌표를 규정하는 기준과 g1, g2 좌표를 규정하는 기준을 같게 만들어야 한다.
  5. g1, g2의 좌표를 벡터 x의 좌표가 따르는 기저벡터를 기준으로 변환한다.

$[g1, g2] = [e1, e2][ge1, ge2]^{T}$

$[ge1, ge2]^{T}$ 가 g1, g2의 새 좌표다.

  1. 벡터 x 좌표와 벡터 g1, g2 좌표가 따르는 기준이 같아졌다. $[ge1, ge2]^{T}$ = $A$ 라 하자.

  2. 벡터 $x$ 좌표를 기저벡터 g1, g2 기준으로 변환하자. 아까 구한 g1, g2 새 좌표를 이용한다.

$x_{e} = Ax_{g}$

  1. $A$ 행렬은 기저벡터들로 구성된 행렬이므로 풀랭크다. 역행렬 항상 존재한다. 역행렬 곱해서 좌변으로 넘기면

$x_{g} = A^{-1}x_{e}$ 이다.

$x_{g}$ 가 새 기저벡터 상에서의 벡터 x 좌표다.

  • 새 기저벡터 좌표를 열로 담은 행렬 $A$ 의 역행렬 $A^{-1}$ 을 변환행렬 $T$ 라고 한다.

핵심 요약 :

$x_{g} = A^{-1}x_{e}$ 에 의해, 새 좌표 = 변환행렬 * 기존좌표 다.

예)

데이터사이언스스쿨 연습문제 3.2.8

만약 새로운 기저벡터 좌표가 다음과 같다면, 원래의 좌표 $ [1,0], [1,2], [-1, 2] $ 는 어떤 좌푯값이 될 지 계산하라.

$g1 = [1, 0.75]$

$g2 = [-1, 0.75]$

나의 답)

$[1,0]$ 을 좌표변환한다고 하자.

$[1,0]$ 의 좌표는 2차원 표준기저벡터 $[1,0],[0,1]$ 에 의해 정의되어 진 것이다.

그러면 새 기저벡터로 쓸 벡터의 좌표도 2차원 표준기저벡터 $[1,0],[0,1]$ 에 의한 좌표를 가지고 있어야 한다.

$[1,0],[0,1]$ 가 항등행렬이므로, $[1,0],[0,1]$ 상에서 g1, g2의 좌표는 원래 좌표와 똑같다.

이제 그러면 좌표변환 식에 값들을 넣어서 벡터 좌표를 변환하면 된다.

$x_{g} = A^{-1}x_{e}$