[기초 선형대수] 행렬에서 Rank (랭크) 란?선형대수에서 등장하는 Rank 라는 개념에 대해서 간략하게 알아보자.
여기서 보면, 임의의 행렬 A가 있을 때, 이 행렬의 Rank 라는 것은 이 행렬의 열들로 생성될 수 있는 벡터 공간의 차원을 의미한다고 한다. 선형 대수에 익숙하다면 이글만 봤을 때, 바로 이해가 될
것이지만, 그렇지 않은 경우도 있으니, 좀 더 구체화 시켜보자.
위의 행렬의 경우 랭크는 2이다. 왜냐하면, 첫 번째와 두 번째 열은 서로 선형 독립 관계에 있다고 볼 수 있다. 하지만, 세 번째 열의 경우에는 첫 번째 열에서 두 번째 열을 빼주게 되면 세 번째 열이 된다. 즉, 선형적으로 의존적인 관계가 성립한다. 따라서, 이 행렬의 Rank는 2가 된다.
이 경우에도 마찬가지로, 행이든 열이든 하나만 보면 된다. 왜냐하면 이 둘의 랭크는 같은 값을 가질 것이기 때문이다. 위의 행렬의 경우에는 0을 제외 하고 나머지들은 서로 모두 의존적이다. 첫 번째 열은 정확히
두 번째 열과 같고, 네 번째 열은 첫 번째 열의 두 배와 정확히 같기 때문이다. 그런데 세 번째 열이 0의 값을 가지므로, 랭크에서는 제외되지만, 결국 세 번째 열을 제외한 나머지 세 개의 열들은 하나의 기저로 역할을 할 수 있으므로, 하나의 랭크를 가진다고 볼 수 있겠다. 따라서, 위의 행렬의 랭크는 1이다.
이제는 앞의 A행렬의 전치 행렬에 대해서 랭크를 구해보자. 여기서 보면, 열만 보게 되면 두 열은 서로 의존적이라는 것을 쉽게 알 수 있다. 왜냐하면 첫 번째 열에 마이너스 1을 곱하게 되면 두 번째 열이 되기때문이다. 그러므로, 결국 이 벡터 공간을 지배하는 기저는 하나라고 볼 수 있다. 비록 서로 의존적이지만, 이 두 벡터가 하나의 기저로서 작용할 수 있기 때문이다. 따라서, 앞에서 말한 법칙은 진실이라는 것을 확인하였다. 행과 열의 랭크는 서로 같다는 법칙 말이다. 0. 차례 1. 들어가기 2. 행렬의 계수(Rank)란? 3. 가우스 소거법을 이용한 행렬의 계수(Rank) 구하기 4. R에서 행렬의 계수(Rank) 구하기 : Matrix 패키지의 rankMatrix() 함수 5. 요약 6. 참고자료(Reference) 1. 들어가기 이번 포스팅에서는 선형대수학에서 핵심부분 중 하나인 행렬의 계수(Rank)를 R에서 구하는 방법에 대해 알아보도록 하겠습니다. 2. 행렬의 계수(Rank)란? 행렬 A의 계수는 행공간과 열공간의 차원을 말합니다3). 즉 행렬 A의 계수(rank(A))는 아래와 같이 표현할 수 있습니다. 여기서 row(), col() 은 행렬 A의 행공간, 열공간을 말하며 dim()은 각 공간의 차원(기저 갯수)을 의미합니다. 그렇다면 행렬 A의 행공간과 열공간은 무엇일까요? 행렬 A가 m by n 행렬이라고 할때 , A의 행공간은 행에 의해 생성된 Rn의 부분공간을 말하며 A의 열공간은 열에 의해 생성된 Rm의 부분공간을 말합니다.4) 예를 들어 아래와 같은 A 행렬이 있을 떄, 있을 떄, 행 공간을 구성하는 벡터는 {(1, -1), (0, 1), (3, -3)} 이 되며, 열 공간을 구성하는 벡터는 {(1, 0, 3), (-1, 1, -3)}을 들 수 있습니다. 여기서 행, 열공간의 차원을 구하기 위해서는 공간을 생성하는 일차독립(선형독립)의 기저(basis)를 확인해야 합니다. 일차독립은 n개의 벡터 v1,...,vn가 있을 때, 아래와 같이 정의됩니다.2) 의 선형연립방정식을 만족하는 해가 유일하게 존재하는 경우(c1,...cn이 모두 0)에 벡터 v1,...vn는 선형독립 및 1차독립합니다. 반면에 해가 유일하지 않는 경우(c1,...cn 중 1개라도 0이 아니면) 선형종속 혹은 1차종속이라고 합니다. 위에서 A 행렬의 행공간은 3(1, -1)+0(0, 1)+(3,-3)=0 임으로 일차종속이며 따라서 이 3개의 벡터는 행공간의 기저가 될 수 없습니다. 하지만 c1(1,-1)+c2(0, 1)=0은 반드시 c1=c2=0 이어야 함으로 1차독립이며 행공간에 대한 기저가 됩니다. 따라서 A 행렬의 행공간의 차원은 기저의 갯수인 2가 되며 이는 A행렬의 계수를 의미합니다. 3. 가우스 소거법을 이용한 행렬의 계수(Rank) 구하기 행렬의 계수는 가우스 소거법으로 기약행사다리꼴 행렬을 구하고 난 후, 모든 성분이 0인 행을 제외하고 나머지 행의 갯수 세어주면 됩니다. 그럼 예시로 아래 행렬 A에 대해 행렬의 계수를 구해보도록 합시다. i번째 행을 Ri 라고 할 때, 기본 행연산을 통해 행렬 A를 기약행사다리꼴로 나타낼 수 있습니다. 위의 A 행렬의 기약행사디리꼴의 3행의 모든 성분이 0임으로 계수는 2임을 확인할 수 있습니다. 4. R에서 행렬의 계수(Rank) 구하기 : Matrix 패키지의 rankMatrix() 함수 R에서 행렬의 계수를 구하는 함수는 Matrix 패키지의 rankMatrix() 함수가 있으며 입력인자는 다음과 같습니다.
그럼 2절에서 살펴보았던 행렬을 R에 입력하여 행렬의 계수를 구해보도록 합시다. #행렬의 계수(Rank) 구하기 > A <- matrix(c(2, 1, -4, + -4, -1, 6, + -2, 2, -2), byrow= TRUE, nrow =3) > library(Matrix) > rankMatrix(A) [1] 2 attr(,"method") [1] "tolNorm2" attr(,"useGrad") [1] FALSE attr(,"tol") [1] 6.661338e-16 행렬 A의 계수는 위에서 보는 것처럼 "2"임을 확인할 수 있습니다. 5. 요약 - 행렬 A의 계수(Rank)는 행공간과 열공간의 차원을 말함. 행렬 A가 m by n 행렬이라고 할때 , A의 행공간은 행에 의해 생성된 Rn의 부분공간을 말하며 A의 열공간은 열에 의해 생성된 Rm의 부분공간을 말함. - R에서 Matrix 패키지의 rankMatrix() 함수를 이용하여 행렬의 계수(Rank)을 구할 수 있음. 6. 참고자료(Reference) 1) https://stat.ethz.ch/R-manual/R-devel/library/Matrix/html/rankMatrix.html 2) https://rfriend.tistory.com/176 3) 선형대수학, 경문사, p.198, 208, 4) https://ko.wikipedia.org/wiki/%EA%B3%84%EC%88%98_(%EC%84%A0%ED%98%95%EB%8C%80%EC%88%98%ED%95%99) |