Skip to content

darkpgmr 선형대수학

WooKyoung Noh edited this page Dec 4, 2015 · 2 revisions

[선형대수학 #1] 주요용어 및 기본공식

http://darkpgmr.tistory.com/103

  • identity matrix
julia> eye(3)
3x3 Array{Float64,2}:
 1.0  0.0  0.0
 0.0  1.0  0.0
 0.0  0.0  1.0
julia> A = [1 -1; -2 1]
2x2 Array{Int64,2}:
  1  -1
 -2   1
  • transpose of a matrix
julia> transpose(A)
2x2 Array{Int64,2}:
  1  -2
 -1   1

julia> A'
2x2 Array{Int64,2}:
  1  -2
 -1   1
  • determinant
julia> det(A)
-1.0
  • trace
julia> trace(A)
2
  • diagonal matrix
julia> diag(A)
2-element Array{Int64,1}:
 1
 1
  • eigenvalue, eigenvector
julia> D,V = eig(A)
([2.414213562373095,-0.4142135623730949],
2x2 Array{Float64,2}:
  0.57735   0.57735
 -0.816497  0.816497)
julia> D,V = eigvals(A), eigvecs(A)
([2.414213562373095,-0.4142135623730949],
2x2 Array{Float64,2}:
  0.57735   0.57735
 -0.816497  0.816497)
  • singular value decomposition
julia> U,S,V = svd(A)
(
2x2 Array{Float64,2}:
 -0.525731  0.850651
  0.850651  0.525731,

[2.6180339887498945,0.381966011250105],
2x2 Array{Float64,2}:
 -0.850651  -0.525731
  0.525731  -0.850651)

[선형대수학 #2] 역행렬과 행렬식(determinant)

http://darkpgmr.tistory.com/104

  • 행렬 A의 행렬식 값 det(A) = 0이면 행렬 A는 역행렬을 갖지 않고 det(A)≠0이면 A의 역행렬이 존재
  • det(A)는 선형변환의 스케일(scale) 성분을 나타내는 값
  • det(A)>0이면 도형의 방향(orientation)이 보존되고 det(A)<0이면 도형의 방향이 보존되지 않는다
julia> A = [1 2; -1 3]
2x2 Array{Int64,2}:
  1  2
 -1  3

julia> det(A)
5.0

julia> A = [1 -1; -2 1]
2x2 Array{Int64,2}:
  1  -1
 -2   1

julia> det(A)
-1.0
  • det(A) = 0이면 직선(선분)으로 변환됨
julia> A = [-2 -1; 2 1]
2x2 Array{Int64,2}:
 -2  -1
  2   1

julia> det(A)
0.0

julia> A = [2 -1; -2 1]
2x2 Array{Int64,2}:
  2  -1
 -2   1

julia> det(A)
0.0
  • 길이 1인 정육면체를 변환시키면 부피가 7인 평행육면체로 변환
julia> A = [2 2 1; -1 1 0; 3 0 -1]
3x3 Array{Int64,2}:
  2  2   1
 -1  1   0
  3  0  -1

julia> det(A)
-7.0
  • 3차원의 경우에는 det(A) = 0이면 동일 평면상의 점들로 변환됨
julia> A = [2 2 1; -1 1 0; 0 0 0]
3x3 Array{Int64,2}:
  2  2  1
 -1  1  0
  0  0  0

julia> det(A)
0.0

[선형대수학 #3] 고유값과 고유벡터 (eigenvalue & eigenvector)

http://darkpgmr.tistory.com/105

  • 어떤 행렬에 대해 고유값은 유일하게 결정되지만 고유벡터는 유일하지 않기 때문
  • 정방행렬 중에서도 일부 행렬에 대해서만 적용 가능한 대각화 방법
  • symmetric matrix (대칭행렬)
  • 항상 고유값 대각화가 가능
  • 직교행렬(orthogonal matrix)로 대각화가 가능
  • 특이값분해(SVD), 주성분분석(PCA) 등에서 가장 기본이 되는 성질로 활용
  • orthogonal matrix (직교행렬)
  • 자신의 전치행렬(transpose)를 역행렬로 갖는 정방행렬
  • 열벡터들은 서로 orthonomal(정규직교)

[선형대수학 #4] 특이값 분해(Singular Value Decomposition, SVD)의 활용

http://darkpgmr.tistory.com/106

  • SVD
    • 행렬을 대각화하는 한 방법
    • 모든 m x n 행렬에 대해 적용 가능
    • pseudo inverse를 계산하는 가장 효율적인 방법 중 하나
  • singular matrix (특이행렬)
    • det(A) = 0인 정방행렬
  • full SVD
    • 행렬 m×n 행렬 A를 SVD로 분해 (m > n)
  • reduced SVD
    • thin SVD, compact SVD, truncated SVD
  • pseudo inverse
    • 임의의 m x n 행렬에 대해서 정의
  • least square method
    • pseudo inverse를 이용하여 해를 구함

[선형대수학 #5] 선형연립방정식 풀이

http://darkpgmr.tistory.com/108

julia> A = [1 3.5 1; 2 4.3 1; 3 7.2 1; 4 8.0 1]
4x3 Array{Float64,2}:
 1.0  3.5  1.0
 2.0  4.3  1.0
 3.0  7.2  1.0
 4.0  8.0  1.0

julia> U,S,V = svd(A)
(
4x3 Array{Float64,2}:
 -0.276574   0.82045    -0.0191787
 -0.360731   0.200903    0.761256
 -0.586348   0.0923116  -0.630615
 -0.670505  -0.527236    0.14982  ,

[13.405223731206739,0.8653898605797355,0.3620457229374691],
3x3 Array{Float64,2}:
 -0.405745  -0.704598   0.582162
 -0.902998   0.21056   -0.374511
 -0.1413     0.677647   0.721684)

julia> S
3-element Array{Float64,1}:
 13.4052
  0.86539
  0.362046

[선형대수학 #6] 주성분분석(PCA)의 이해와 활용

http://darkpgmr.tistory.com/110

  • Principal Component Analysis
  • n 개의 벡터로 데이터 분포를 설명
  • 벡터의 방향과 크기를 알면 이 데이터 분포가 어떤 형태인지를 가장 단순하면서도 효과적으로 파악할 수 있다.
  • 여러 데이터들이 모여 하나의 분포를 이룰 때 이 분포의 주 성분을 분석해 주는 방법
  • 데이터들의 분산(흩어진 정도)이 가장 큰 방향벡터
  • 차원감소라 함은 n차원의 데이터를 xk = c1e1 + ... + ckek로 표현했을 때 e1, ..., ek를 새로운 좌표축으로 하는 공간에서 x를 (c1, c2, ..., ck)와 같이 k차원의 점으로 표현한다는 의미
  • 데이터 압축의 의미는 {x}들을 그대로 저장하지 않고 k개의 주성분 벡터들과 계수 (c1, .., ck)들만을 저장하면 저장용량을 크게 줄일 수 있다는 의미이다. 참고로 SVD(특이값분해)를 이용한 데이터 압축은 데이터를 개별적으로 압축하지만 PCA는 데이터를 집합적으로 압축한다는 점이 다르다.
  • 노이즈 제거란 의미는 k개의 주성분만을 이용해서 데이터를 복원함으로써 의미없는 노이즈 부분을 날린다는 의미

<< darkpgmr