[선형대수] CH 3. 선형대수학 (11) : 특이값 분해(SVD, Singular Value Decomposition)

이진호·2024년 10월 21일
0

특이값 분해, 왜 필요할까?

  • 대칭행렬의 대각화 이론은 행렬 A를 PDP(^-1)로 분해하는 이론이었음
  • 하지만, 모든 행렬에 적용되지 못함.
  • 왜냐하면 D는 대각행렬이기 때문에, 행렬 A가 (mxm) 정사각 행렬이어야 함.
  • 특이값 분해는 행렬의 크기와 상관 없이 대각화가 가능함

MxN 행렬의 특이값

  • mxn 크기의 행렬 A의 특이값은 A(T) x A의 고유값에 루트를 씌운 값
    (A(T)와 A의 곱은, (mxn)과 (nxm)의 곱이고, 결과값은 (nxn)이 된다고 함)
  • A(T)와 A의 곱은 대각행렬
  • 대각 행렬은 전치(Transpose)를 해도 원래 행렬이 됨
  • 대각 행렬은 직교 대각화가 가능함

즉,

A(T)xA 행렬을 직교대각화한 뒤, 고유값을 구하고, 고유값에 루트를 취하면 행렬 A의 특이값이 됨

구한 특이값 = 벡터의 크기 가 된다고 함.

예시

행렬 A가 있고, Ax의 길이가 최대가 되는 벡터 x와 A의 특이값을 찾자.


SVD 분해 과정

먼저, SVD 분해는 행렬을 U, 시그마, V(T)의 곱으로 나타냅니다.

시그마, V(T) 구하기

(2x3) 크기의 행렬 A가 있다고 가정합니다.

1️⃣ : A와 A의 전치행렬(T)을 곱하여 3x3 행렬을 만듭니다.
2️⃣ : 3x3 행렬의 대각 성분에 루트를 씌워 A의 특이값(그림의 o처럼 생긴 기호)을 구합니다.
3️⃣ : V는 A의 고유벡터로 만든 행렬, D는 A의 특이값으로 만든 대각행렬, 시그마는 행렬 D에 빈 값을 추가하여 행렬 A의 형태에 맞춘 값 이라고 보면 됩니다.

U 구하기

U는 A와 V의 곱에 특이값의 역수를 곱한 값입니다.


궁금해서 찾아본 SVD 분해의 쓰임새와 LU 분해의 쓰임새

SVD 분해 사용 예시

(1) 주성분 분석(PCA):
목적: 데이터의 차원을 축소하고, 데이터의 분산을 최대한 유지하기 위해 사용합니다.
예시: 대규모 이미지 데이터 세트에서 PCA를 적용하여 주요한 특징(주성분)만 추출하고, 이로써 이미지의 차원을 줄이며 계산 효율성을 높일 수 있습니다. 예를 들어, 얼굴 인식 알고리즘에서 PCA를 사용하여 고차원 이미지 데이터를 저차원 공간으로 변환하여 인식 성능을 향상시킬 수 있습니다.

(2) 추천 시스템:
목적: 사용자-아이템 매트릭스를 분석하여 유사한 사용자나 아이템을 찾고 추천하는 데 사용됩니다.
예시: Netflix와 같은 영화 추천 시스템에서 SVD를 사용하여 사용자와 영화 간의 관계를 모델링하고, 유사한 취향을 가진 사용자들이 선호하는 영화를 추천하는 방식으로 활용됩니다.

(3) 노이즈 제거:
목적: 데이터에서 노이즈를 줄이고 중요한 패턴을 강조합니다.
예시: 측정 데이터나 이미지에서 SVD를 사용하여 작은 특이값에 해당하는 성분을 제거함으로써 노이즈를 줄이고, 신호를 더욱 명확하게 추출할 수 있습니다.

LU 분해 사용 예시

(1) 선형 회귀 분석:
목적: 회귀 계수를 구하는 과정에서 효율성을 높입니다.
예시: 다중 선형 회귀에서, 독립 변수의 수가 많을 경우 행렬의 계수를 계산하는 데 LU 분해를 활용하여 선형 시스템을 효율적으로 해결할 수 있습니다. 예를 들어, 회귀 모델의 파라미터를 계산할 때, AT x A 행렬을 LU 분해하여 보다 빠르게 해를 구할 수 있습니다.


다음 포스팅에 이어서...

0개의 댓글