인프런 커뮤니티 질문&답변

김남욱님의 프로필 이미지
김남욱

작성한 질문수

[개정판] 파이썬 머신러닝 완벽 가이드

SVD를 이용한 행렬 분해 실습 및 NMF(Non Negative Matrix Factorization)의 이해

데이터 의존성 / NMF와 SVD

작성

·

464

0

수강 후 두 가지 궁금한 점이 생겨 질문 드립니다.

1. 데이터 의존성이 관련성?과 비슷한 의미인가요?

정확히 어떠한 의미인지 궁금합니다.

2. NMF와 SVD의 차이에 대해서 궁금합니다

두 가지 기법 모두 하나의 원본행렬을 분해하여 잠재 요소를 추출해 내는 것으로, NMF는 두 개의 행렬로 SVD는 세 개의 행렬로 분해한다는 것은 알겠으나 그 차이에서 발생하는 다른 점이 무엇인지 궁금합니다.

예를 들어 NMF가 아닌 SVD로 세 개의 행렬로 분해하는 것의 목적과 효과는 무엇인지, 어떠한 경우에는 NMF를 사용하고 어떠한 경우는 SVD를 사용하는 것인지 알고 싶습니다.

답변 4

0

권 철민님의 프로필 이미지
권 철민
지식공유자

PCA, NMF 모두 SVD를 응용합니다. Topic 추출, 이미지 압축을 통한 분류(이미지의 핵심만 추출하여 이를 기반으로 얼굴들을 분류)하는 용도로 NMF, SVD모두 사용됩니다. 다만 어떤 차원 축소를 했느냐에 따라 조금씩 결과가 달라집니다. 추천 시스템에서는 보통 SVD를 적용합니다. 토픽 추출의 경우 SVD기반의 LSA방식 보다는 NMF 기반으로 추출하는 경향이 더 많습니다. 

0

권 철민님의 프로필 이미지
권 철민
지식공유자

1. 데이터 의존성이 높다는 것은 행렬간 데이터들이 특정 값에 기반해서 만들어지는 경우가 있다는 것입니다.  행렬 안에 10개의 벡터가 있을 때 특정 벡터가 다른 벡터를 기반으로 만들어 질 수 있다면 서로 독립적인 벡터가 아니라 매우 종속적인 벡터입니다.

SVD는 독립적인 특이 벡터를 추출합니다.  때문에 특정 벡터가 다른 벡터를 기반으로 만들어지면 분해되는 특이 벡터 갯수가 상대적으로 적습니다

이를 시뮬레이션 하기 위해서 행렬의 3번째 로우를 첫번째 + 두번째 로우로, 4번째 로우는 첫번째 로우와 같도록 구성해서 행렬 내에 3번째 로우와 4번째 로우는 1, 2번째 로우와 데이터 의존성이 높게 구성한 것입니다.

2. NMF, SVD 모두 차원 축소에 사용되며, 이들을 응용한 기법으로 NMF의 경우 보통은 텍스트에서 Topic를 추출하는데  많이 사용됩니다. 보통 텍스트를 vectorization하게 되면  굉장히 많은 차원(많은 피처들로 구성)으로 구성되게 되는데 이때 NMF를 적용해서 텍스트 내에 Topic을 추출하는데 사용됩니다. 또한 이미지의 압축에도 사용이 됩니다.  보통은 Eigen-face라고 해서 PCA 압축된 Face 변환으로 얼굴 인식기법을 적용하지만, NMF로 압축된 Face 변환으로 얼굴 인식기법을 적용하기도 합니다.

SVD는 행렬 분해의 중요한 뼈대입니다. 머신러닝에서는 주로 추천 시스템을 구성할때 SVD를 통한 행렬 분해를 통해서 사용자가 사지 않은 물품중에 최적 물품을 추천합니다.(물론 이미지 압축 기반의 패턴 인식과 LSA 토픽 모델링 기법에도 사용됩니다)

감사합니다.

김남욱님의 프로필 이미지
김남욱
질문자

답변 감사드립니다.

그렇다면 topic추출이나 추천시스템과 같이 상황에 따라 NMF와 SVD 중 어떠한 것을 쓸지 구분하고 결정하는 것인가요?

즉, NMF와 SVD의 기능은 큰 차이가 없으나 상황에 따라 무엇을 쓸 지 결정하는 것인가요?

0

김남욱님의 프로필 이미지
김남욱
질문자

3분 25초 경에 '데이터 의존도가 높은 원본 데이터 행렬 생성' 부분입니다.

질문이 추가되어 수정한 부분도 확인하여 답변해주시면 정말 감사하겠습니다!!

0

권 철민님의 프로필 이미지
권 철민
지식공유자

강의의 몇분 몇초에 나오는 멘트인지 말씀해 주시겠습니까?

김남욱님의 프로필 이미지
김남욱

작성한 질문수

질문하기