안녕하세요! 이번 블로그 포스트에서는 특이값 분해
1. 특이값 분해
특이값 분해는 임의의 행렬을 세 개의 행렬의 곱으로 분해하는 것을 의미합니다. 이때, 분해되는 세 개의 행렬은 다음과 같습니다:
여기서, A는 임의의 m x n 행렬이며, U는 m x m 직교 행렬,
이때, U와
예시를 들어보겠습니다. 다음과 같은 3x2 행렬 A가 주어졌다고 가정합니다:
이제 이 행렬 A의 SVD를 구해보겠습니다.
- 고유값과 고유벡터 계산:
먼저, A와 A^T의 고유값과 고유벡터를 구합니다. A^T는 다음과 같습니다:
이제 각 행렬의 고유값과 고유벡터를 계산합니다. 고유값과 고유벡터는 다음과 같습니다:
- A의 고유값λ1 = 0.168, 고유벡터v1 =
- A의 고유값λ2 = 7.530, 고유벡터v2 =
- 특이값과 대각행렬 \Sigma 구성:
특이값은 고유값의 제곱근으로 구합니다. 이때, 특이값은 내림차순으로 정렬합니다. 따라서, 특이값과 대각행렬
- U와 V^T 행렬 구성:
U와 V^T는 각각 A와 A^T의 고유벡터들로 이루어진 행렬입니다. 이를 이용하여 U와 V^T를 구합니다.
2. 특이값 분해
SVD는 다양한 분야에서 활용됩니다. 주요한 응용 분야는 다음과 같습니다:
- 이미지 압축: SVD를 이용하여 이미지를 주요한 정보와 잡음으로 분리하여 이미지 압축을 수행할 수 있습니다.
예시를 들어보겠습니다. 다음과 같은 4x4 흑백 이미지 행렬 I가 주어졌다고 가정합니다:
이제 이 이미지 행렬 I의 SVD를 구해보겠습니다.
SVD는 다음과 같이 행렬 A를 세 개의 행렬의 곱으로 분해합니다:
여기서, U는 4x4 직교 행렬,
1. 공분산 행렬 계산:
먼저, 이미지 행렬 I를 중앙값 0으로 정규화하여 공분산 행렬 C를 계산합니다.
2. C의 고유값과 고유벡터 계산:
공분산 행렬 C의 고유값과 고유벡터를 계산합니다.
3. 특이값과 대각행렬
특이값은 공분산 행렬 C의 고유값의 제곱근으로 구합니다. 이때, 특이값은 내림차순으로 정렬합니다.
4. U와 V^T 행렬 구성:
U와 V^T는 각각 C의 고유벡터들로 이루어진 행렬입니다.
이제 순서대로 진행하여 이미지 행렬 I의 SVD를 구해봅니다.
1. 공분산 행렬 계산:
이미지 행렬 I를 중앙값 0으로 정규화하여 공분산 행렬 C를 계산합니다.
2. C의 고유값과 고유벡터 계산:
공분산 행렬 C의 고유값과 고유벡터를 계산합니다.
3. 특이값과 대각행렬
특이값은 공분산 행렬 C의 고유값의 제곱근으로 구합니다. 이때, 특이값은 내림차순으로 정렬합니다.
4. U와 V^T 행렬 구성:
U와 V^T는 각각 C의 고유벡터들로 이루어진 행렬입니다.
이제 순서대로 진행하여 이미지 행렬 I의 SVD를 구해봅니다.
여기서 특이값은
이와 같이 SVD를 활용하여 이미지를 압축하면서도 원래 이미지의 주요한 정보를 유지할 수 있습니다.
- 차원 축소: 고차원 데이터의 차원을 축소하여 데이터의 구조를 유지하면서 계산 비용을 줄일 수 있습니다.
- 추천 시스템: 사용자-아이템 행렬을 분해하여 사용자와 아이템 간의 상관 관계를 파악하고 추천 시스템에 활용할 수 있습니다.
- 자연어 처리: 문서-단어 행렬의 특이값 분해를 통해 단어들 간의 의미적 관계를 분석하고 토픽 모델링에 사용됩니다.
3. 특이값 분해
특이값 분해는 일반적인 행렬에 대해서도 가능하지만, 계산적으로 비용이 크기 때문에 주로 절단된
예시를 들어보겠습니다. 다음과 같은 5x3 행렬 B가 주어졌다고 가정합니다:
이제 이 행렬 B의 절단된 SVD를 구해보겠습니다.
1. B의 공분산 행렬 C를 계산합니다.
2. C의 고유값과 고유벡터를 계산합니다.
3. 가장 큰 k개의 고유값과 해당하는 고유벡터들을 선택합니다.
4. U와 V^T 행렬을 구성합니다.
5. 행렬 B를 근사적으로 복원합니다.
이제 순서대로 진행하여 행렬 B의 절단된 SVD를 구해보겠습니다.
1. 공분산 행렬 계산:
이미지 행렬 B를 중앙값 0으로 정규화하여 공분산 행렬 C를 계산합니다.
2. C의 고유값과 고유벡터 계산:
공분산 행렬 C의 고유값과 고유벡터를 계산합니다.
3. 가장 큰 k개의 고유값과 고유벡터 선택:
가장 큰 k개의 고유값과 해당하는 고유벡터를 선택합니다. 이때, k는 절단할 차원의 수를 나타냅니다.
4. U와 V^T 행렬 구성:
U와 V^T는 각각 C의 고유벡터들로 이루어진 행렬입니다.
이제 순서대로 진행하여 행렬 B의 절단된 SVD를 구해봅니다.
여기서 특이값은
이와 같이 절단된 SVD를 활용하여 데이터의 차원을 축소함으로써, 데이터 분석과 해석을 더욱 효율적으로 수행할 수 있습니다.
특이값 분해
'수학 > 선형대수학' 카테고리의 다른 글
[선형대수학] 선형대수와 머신 러닝 1 [선형 회귀와 최소제곱법] 0 | 2023.08.04 |
---|---|
[선형대수학] 선형대수와 머신 러닝 0 0 | 2023.08.04 |
[선형대수학] 고유값과 고유벡터, 대각화 5 0 | 2023.08.02 |
[선형대수학] 선형 변환 4 0 | 2023.08.02 |