티스토리 뷰

NMF는 Truncated SVD와 같이 낮은 랭크를 통한 행렬 근사 방식의 변형입니다. NMF는 원본 행렬 내의 모든 원소 값이 양수(0 이상)이라는 게 보장되면 아래와 같이 좀 더 간단하게 두 개의 기반 양수 행렬로 분해하는 기법입니다.

 

 

 

 

 

 

 

행렬 $X$는 $W$와 $H$ 행렬로 분해됩니다. $W$는 일반적으로 원본 행렬의 행 크기와 같고 열 크기보다 작은 행렬(즉, 행이 열보다 김)이며, $H$는 원본 행렬의 행 크기보다 작고 열 크기와 같은 행렬(즉, 열이 행보다 김)입니다. 분해된 행렬을 잠재 요소를 특성으로 가지게 됩니다. 분해 행렬 $W$는 원본 행에 대해서 이 잠재 요소의 값이 얼마나 되는지에 대응하며, $H$는 이 잠재 요소가 원본 열(피처)로 어떻게 구성됐는지를 나타냅니다.

 

 

 

 

 

 

NMF는 SVD와 유사하게 차원 축소를 통한 잠재 요소 도출로 이미지 변환 및 압축, 텍스트의 토픽 도출 등의 영역에서 사용되고 있습니다. SVD는 영화 추천과 같은 추천 영역에서도 활발하게 사용됩니다. 사용자의 상품(예 : 영화) 평가 데이터 세트인 사용자-평가 순위(user-rating) 데이터 세트를 행렬 분해하여 사용자가 평가하지 않은 상품에 대한 잠재적인 요소를 추출해 이를 통해 평가 순위(rating)을 예측하고, 높은 순위로 예측된 상품을 추천해주는 방식입니다. 이를 잠재 요소(Latent Factoring) 기반의 추천 방식이라고 부릅니다.

 

 

 

 

 

사이킷런에서 NMF는 NMF 클래스로 지원됩니다. 붓꽃 데이터를 NMF를 이용하여 2개의 피처로 압축해보고 이를 시각화해봅시다.

 

 

 

 

 

 

 

 

 

 

 

지금까지 대표적인 차원 축소 알고리즘인 PCA, LDA, SVD, NMF에 대해 알아봤습니다. 많은 피처로 이루어진 데이터 세트의 차원을 축소하여 데이터를 더욱 직관적으로 이해할 수 있습니다. 무엇보다도 차원 축소는 단순히 피처의 개수를 줄이는 개념보다는 이를 통해 데이터를 더 잘 설명할 수 있는 잠재적인 요소를 추출하는 데 큰 의미가 있습니다. 이 때문에 많은 차원을 가지는 이미지와 텍스트에서 PCA, SVD 등의 차원 축소 알고리즘이 매우 활발하게 사용됩니다.

 

 

 

 

 

PCA는 데이터의 변동성이 가장 큰 축을 구하고, 이 축에 직각인 축을 축소하려는 차원 개수만큼 구한 뒤 입력 데이터를 해당 축에 투영하여 차원을 축소하는 방식입니다. LDA는 PCA와 유사하지만, 데이터의 결정 값 클래스를 최대한으로 분리할 수 있는 축으로 차원을 축소합니다.

 

 

SVD와 NMF는 매우 많은 피처를 가지는 고차원 행렬을 두 개의 저 차원 행렬로 분리하는 행렬 분해 기법입니다. 특히 이러한 행렬 분해를 수행하면서 원본 행렬에 잠재된 요소를 추출하기 때문에 토픽 모델링이나 추천 시스템에서 활발하게 사용됩니다.

 

 

 

 

 

 

«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31