Matip.png


반갑습니다. 교주 LGS입니다. 

오늘은 Pseudoinverse(수도인버얼스^^ p가 묵음입니다.)에 대해서 이야기해보도록 하죠~ o(^o^)o


익히 아시다시피 연립방정식을 풀때 inverse matrix(역행렬)을 구해서 양변에 곱하면 간단히 해(solution)을 구할 수 있습니다.


pseudoinverse02.png

그런데요~ 혹시 Square matrix가 아닌 row와 column의 숫자가 다른 직사각형 matrix의 inverse는 어떻게 구하는지 아시나요? ^^

다시~ 직사각형 matrix의 inverse matrix가 존재하나요?

정답은 직사각형 matrix도 inverse matrix가 존재 하고 아주 간단하게 계산할 수 있습니다.


직사각형의 matrix에 자신의 transpose를 곱해(AAT or ATA) 정사각형 matrix로 만든 다음 역행렬을 구하고

다시 transpose matrix를 곱해 원래의 직사각형 행렬로 돌아오면 됩니다.

세로로 길쭉한 행렬과 가로로 길쭉한 행렬을 처리하는 방법이 조금 다릅니다.


pseudoinverse01.png 


위와 같이 left inverse와 right inverse로 구분하는 것은 rank 때문에 그렇습니다.

matrix A의 크기는 m x n이구요 A'의 크기는 n x m이죠? 그리고 크기가 n x n인 square matrix의 역행렬의 크기는 역시 n x n입니다.

Left inverse의 경우 (ATA)-1ATA의 rank를 구해보면 (n x m)(m x n)(n x m)(m x n) 으로 가운데 겹지는 dimension을 다 제거해주면

matrix size가  n x n으로 rank가 n이 나옵니다.

반대로 Right inverse을 계산해보면 (m x n)(n x m)(m x n)(n x m) => m x m 으로 rank가 m이 나오구요~

Left와 Right를 구분해주시 싫으시면 SVD(Singular Value Decomposition)를 이용하시면 됩니다요~ ^^


실전 연습해보죠~ o(^o^)o 자~ 실험실에 실험을 통해 얻은 데이터가 아래와 같다고 합시다.


pseudoinverse03.png


위의 데이터를 가장 잘 나타내는 직선을 찾으려면 데이터를 1차연립 방정식으로 나타낸 다음 inverse를 곱하면 되는데

역행렬을 구하고자 하는 행렬이 square matrix가 아니므로 pseudoinverse로 역행렬을 구해야 합니다.

우선  데이터와 계수(coefficients)의 관계를 matrix form으로ㄷ나타내면 아래와 같이 될 거구요~


pseudoinverse04.png  


양변에 Left inverse를 곱해주면 바로 [a b]' 계수를 찾을 수 있습니다.


pseudoinverse05.png

MATLAB에서 계산을 해보면

pseudoinverse06.png

a와 b가 각각 1.0182와 1.158이 나오내요

계산 되어진 계수를 가지고 직선을 그어보면 아래와 같이 그릴 수 있습니다.


pseudoinverse07.png


주어진 data를 가장 잘 표현하는 직선을 찾는 것이 curve fitting이죠 뭐~ ㅋ

2차 3차 다항식도 같은 방법으로 pseudoinverse를 적용하시면 계수를 찾을 수 있습니다.


위와 같이 Left/Right Inverse 직접 적어주셔도 되구요 아니면 MATLAB에서 제공하고 있는 pinv 함수를 사용하셔도 같은 결과를 얻을 수 있습니다.

만약 주어진 data에 맞는 다항식의 계수를 찾는 linear regression(선형회귀분석)이 주 목적이시라면

간단하게 polyfit 함수를 사용하셔도 되구요~ ^^

pseudoinverse08.png

(엽력변수 1은 1차 다항식(polynomial)으로 fitting 하겠다는 말입니다.)

같은 데이터에 대해서 여러가지로 fitting한 그래프를 첨부할테니 참고하세요


onezero01.png 


Pseudoinverse에 대한 자세한 내용은 스트랑느님의 강좌를 참조하시기 바랍니다.

MIT OCW - Linear Algebra: Lecture 33: Left and right inverses; pseudoinverse 




오늘의 MATip 끝~ o(^o^)o

즐거운 하루 보내세요~

profile