코딩하는 해맑은 거북이

[머신러닝] PCA, SVD, LDA, LSA 본문

AI

[머신러닝] PCA, SVD, LDA, LSA

#CJE 2022. 7. 18.
해당 글은 아래의 5가지를 다룬다.
1. PCA (Principle Component Analysis, 주성분 분석)
2. SVD (Singular Value Decomposition, 특이값 분해)
3. LDA (Linear Discriminant Analysis, 선형판별분석)
4. LSA (Latent Semantic Analysis, 잠재의미분석)
5. LDA (Latent Dirichlet Allocation, 잠재 디리클레 할당)

 

Check.

Q. PCA는 차원 축소 기법이면서, 데이터 압축 기법이기도 하고, 노이즈 제거 기법이기도 합니다. 왜 그런지 설명해주실 수 있나요?

더보기

PCA(Principle Component Analysis)는 입력 데이터의 공분산 행렬을 기반으로 고유벡터를 생성하고 이렇게 구한 고유 벡터에 입력 데이터를 선형 변환하여 차원을 축소하는 방법이다. 차원은 곧 입력 데이터의 피처를 뜻하므로 데이터 압축 기법으로 볼 수도 있다.


또한 PCA는 고유값이 가장 큰, 즉 데이터의 분산이 가장 큰 순으로 주성분 벡터를 추출하는데, 가장 나중에 뽑힌 벡터보다 가장 먼저 뽑힌 벡터가 데이터를 더 잘 설명할 수 있기 때문에 노이즈 제거 기법이라고도 불린다.

 

Q. LSA, LDA, SVD 등의 약자들이 어떤 뜻이고 서로 어떤 관계를 가지는지 설명할 수 있나요?

더보기

PCA는 Principle Component Analysis의 약자로 데이터의 공분산 행렬을 기반으로 고유벡터를 생성하고 이렇게 구한 고유 벡터에 입력 데이터를 선형 변환하여 차원을 축소하는 방법이다. SVD는 Singular Value Decomposition의 약자로 PCA와 유사한 행렬 분해 기법을 사용하나 정방 행렬(square matrix)를 분해하는 PCA와 달리 행과 열의 크기가 다른 행렬에도 적용할 수 있다.


LSA는 Latent Semantic Analysis의 약자로 잠재 의미 분석을 말하며, 주로 토픽 모델링에 자주 사용되는 기법이다. LSA는 DTM(Document-Term Matrix)이나 TF-IDF(Term Frequency-Inverse Document Frequency) 행렬에 Truncated SVD를 적용하여 차원을 축소시키고, 단어들의 잠재적인 의미를 이끌어낸다. Truncated SVD는 SVD와 똑같으나 상위 n개의 특이값만 사용하는 축소 방법이다. 이 방법을 쓸 경우 원 행렬로 복원할 수 없다.


LDA는 Latent Dirichlet Allocation 혹은 Linear Discriminant Analysis의 약자이다. 전자는 토픽모델링에 사용되는 기법 중 하나로 LSA와는 달리 단어가 특정 토픽에 존재할 확률과 문서에 특정 토픽이 존재할 확률을 결합확률로 추정하여 토픽을 추정하는 기법을 말한다. 후자는 차원축소기법 중 하나로 분류하기 쉽도록 클래스 간 분산을 최대화하고 클래스 내부의 분산은 최소화하는 방식을 말한다.

 

Q. 텍스트 더미에서 주제를 추출해야 합니다. 어떤 방식으로 접근해 나가시겠나요?

더보기

잠재 디리클레 할당(Latent Dirichlet Allocation, LDA)
잠재 디리클레 할당(LDA)이란 문서의 집합에서 토픽을 찾아내는 프로세스를 뜻하는 토픽 모델링의 대표적인 알고리즘을 말한다. LDA는 "문서들은 토픽들의 혼합으로 구성되어져 있으며, 토픽들은 확률 분포에 기반하여 단어들을 생성한다"고 가정하며, 데이터가 주어지면 LDA는 토픽을 문서가 생성되던 과정을 역추적한다.


예를 들어, 다음과 같은 예시 문장 3개가 있다고 가정하자.

문서1 : 저는 사과랑 바나나를 먹어요
문서2 : 우리는 귀여운 강아지가 좋아요
문서3 : 저의 깜찍하고 귀여운 강아지가 바나나를 먹어요

LDA를 통해 각 문서의 토픽 분포각 토픽 내의 단어 분포를 추정할 수 있다.

각 문서의 토픽 분포
- 문서1 : 토픽 A 100%
- 문서2 : 토픽 B 100%
- 문서3 : 토픽 B 60%, 토픽 A 40%


각 토픽의 단어 분포
- 토픽A : 사과 20%, 바나나 40%, 먹어요 40%, 귀여운 0%, 강아지 0%, 깜찍하고 0%, 좋아요 0%
- 토픽B : 사과 0%, 바나나 0%, 먹어요 0%, 귀여운 33%, 강아지 33%, 깜찍하고 16%, 좋아요 16%

 

LDA는 토픽의 제목을 정해주지 않지만, 이 시점에서 알고리즘의 사용자는 위 결과로부터 두 토픽이 각각 과일에 대한 토픽과 강아지에 대한 토픽이라고 판단해볼 수 있다.

 

1. PCA (Principle Component Analysis, 주성분 분석)

PCA의 기본적인 개념은 차원이 큰 벡터에서 선형독립하는 고유 벡터만을 남겨두고 차원 축소하는 것이다.

이때 상관성이 높은 독립 변수들을 N개의 선형조합으로 만들며 변수의 개수를 요약, 압축해내는 기법이다.

그리고 이 압축된 각각의 독립 변수들은 선형독립, 즉 직교하며 낮은 상관성을 보이게 된다.

 

PCA는 데이터의 분포에 대한 주성분 즉, 최적의 Feature 조합을 찾기 위한 방법이다. 여기서 주성분이란 '새로운 축(관점)'으로 데이터를 바라보는 것이다. PCA를 하는 목적은 최적은 Feature를 선택한다고 해서 'Feature Selection(피쳐선택)'이라 하거나 n개의 Feature를 n-1개 이하의 Feature로 감소시킨다하여 'Feature Dimention Reduction(차원축소기법)'이라고도 한다.

 

 

PCA는 고유값 분해(Eigen  Value Decomposition)을 통해 새로 만든 '축(관점)'으로 데이터를 바라보는 것이다. 위 왼쪽 그림처럼 청록색 축이였다가, 오른쪽 그림처럼 노란색 축으로 데이터를 바라보는 것이다.

 

가령 500차원의 벡터를 주성분 분석한다는 것은 각 차원의 분산을 최대로 갖는 분포를 설명할 수 있는 대표축을 뽑는 과정이다. 주성분 분석결과 나오는 매트릭스에서 PC1은 각 칼럼에 대한 정보 설명력이 PC5~6에 비해 높다. 이처럼 높은 주성분들만 선택하면서 정보 설명력이 낮은, 노이즈로 구성된 칼럼들은 배제하기 때문에 노이즈 제거 기법이라고 불리기도 한다.

 

- PCA 구하는 방법

  1) 데이터들의 '평균' (중심)으로 원점을 가정한다.

  2) 고유값 분해 (Eigen  Value Decomposition)를 통해 공분산 행렬, 고유값, 고유벡터를 구한다.

  3) 새로운 다양한 축(고유벡터) 관점에서 가장 큰 분산을 가질 때의 축을 기준으로 데이터를 바라본다.

 

 

2. SVD (Singular Value Decomposition, 특이값 분해)

정방행렬이 아닌 직사각행렬(mxn) 형태의 다양한 행렬을 분해하며, 이를 특이값 분해라고 한다.

이때 분해되는 행렬은 두 개의 직교행렬과 하나의 대각행렬이며, 두 직교행렬에 담긴 벡터가 특이벡터이다.

가장 중요한 포인트는 직사각행렬 mxn의 임의의 행렬 A라는 연산을 취했을 때 벡터의 방향만 변하고 크기(길이)는 절대 변하지 않는다는 것이다. SVD의 종류는 Full SVD, Thin SVD, Compact SVD, Truncated SVD가 있다.

 

- SVD 구하는 방법

  1) 직사각행렬(mxn)의 차원을 하나 올린 행렬(mxm)과 차원을 하나 내린 행렬(nxn)을 구한다.

  2) 이를  √λ (루트람다)로 이루어진 직사각 대각행렬을 아래 그림과 같은 순서로 곱해준다.

- SVD의 종류

1) Full SVD

행렬 A를 m x m 크기인 U, m x n 크기인 ∑, n x n 크기인 Vt 로 특이값 분해(SVD)하는 것을 의미한다.

2) Thin SVD

Σ 행렬의 아랫부분(비대각 파트, 모두 0)과 U 에서 여기에 해당하는 부분을 모두 제거하는 것을 의미한다.

이렇게 U 와 Σ 를 줄여도 Us Σs VT 로 A 를 복원가능하다.

 

3) Compact SVD

Σ 행렬에서 비대각파트뿐 아니라 대각원소(특이값)가 0인 부분도 모두 제거하는 것을 의미한다. 여기에 대응하는 U 와 V 의 요소 또한 제거한다. 특이값이 양수인 부분만 골라낸다.
이렇게 U 와 Σ, V 를 줄여도 Ur Σr VT 로 A 를 복원 가능하다.

 

4) Truncated SVD

Σ 행렬의 대각원소(특이값) 가운데 상위 t 개만 고르고, 여기에 대응하는 U 와 V 의 요소 또한 제거한다.
이렇게 하면 행렬 A 를 복원 할 수 없게 되지만, 데이터 정보를 상당히 압축했음에도 행렬 A 를 근사하게는 일치할 수 있다.

t가 클수록 원래의 행렬 A와 가까워지며, t가 작아질수록 원본 행렬 A와 차이가 많이 난다.
잠재의미분석(Latent Semantic Analysis)은 바로 이 방법을 사용합니다

 

 

3. LDA (Linear Discriminant Analysis, 선형판별분석)

LDA는 지도학습에서 작용하는 차원 축소 기법으로 기본적으로 클래스를 가장 잘 구분할 수 있는 새로운 축을 찾아주는 기법이다. 즉, 입력 데이터의 클래스(정답)을 최대한 분리할 수 있는 축을 찾는 기법이다.

 

기본적으로 어떤 축이 더 잘 구분했는지에 대한 척도를 측정하기 위한 목적함수는 다음의 2가지 기준으로 구성한다.

  • 두 클래스의 중심간의 간격
  • 각 클래스 내의 데이터들의 분산값

LDA의 목적함수 = 두 클래스간 중심간의 거리 / 각 클래스 내 분산의 합

 

LDA의 용도는 분류 문제(이진 분류 이상 가능)에 적용된다. 또한 새로운 축을 구한 것이므로 Feature Selection의 기능도 가지고 있다. 하지만, 각 클래스의 중심에 데이터가 몰려있음을 가정하므로 비선형 분포 데이터에는 부적합하다.

 

* PCA vs LDA

PCA : 데이터가 넓게 분포(분산이 큼)되어 있도록 하는 새로운 축을 찾는다.
LDA : 클래스들을 가장 잘 구분할 수 있는 새로운 축을 찾는다.

 

 


 

 

* 토픽 모델링(Topic Modeling)이란 기계학습 및 자연어 처리 분야에서 문서 집합에 추상적인 '주제'를 찾아내는 통계적 모델 중 하나로, 텍스트 본문에 숨겨진 의미 구조를 발견하기 위해 사용되는 텍스트마이닝 기법 중 하나이다. 

 

* BoW(Bag of Words)

문서 내에 등장하는 단어들의 순서를 전혀 고려하지 않고 오직 빈도수에 중점을 두는 표현방법이다.

 

* DTM(Document-Term Matrix, 문서 단위 행렬)의 표기법

DTM이란 다수의 문서에서 등장하는 각 단어들의 빈도를 행렬로 표현한 것을 말한다. 쉽게 생각하면 각 문서에 대한 BoW를 하나의 행렬로 만든 것으로 생각할 수 있으며, BoW와 다른 표현 방법이 아니라 BoW 표현을 다수의 문서에 대해서 행렬로 표현하고 부르는 용어이다. 행과 열을 바꾼 것을 TDM(Term-Document Matrix)라고 부른다.

문서1 : I like dog
문서2 : I like cat
문서3 : I like cat I like cat

* DTM의 한계점 2가지

1) DTM에서 문서와 단어의 수가 늘어나면 행과 열은 대부분 0이 된다. 이는 저장 공간 차원에서 낭비이며, 차원의 저주라는 문제를 일으킨다.
2) 단어의 빈도에만 집중하기 때문에 중요한 단어와 중요하지 않은 단어의 구분이 어렵다.

(예: 불용어 'the'는 어느 문서에도 자주 등장한다. 그렇다면 모든 문서가 유사한가? NO!)

 

 

4. LSA (Latent Semantic Analysis, 잠재의미분석)

LSA는 정확히는 토픽 모델링을 위해 최적화 된 알고리즘을 아니지만, 토픽 모델링이라는 분야에 아이디어를 제공한 알고리즘이다. 특이값 분해(SVD)를 활용하여 문서에 함축된 주제를 찾아내는 방법이다. 데이터가 큰 경우에는 차원 축소의 효과가 커진다.

 

장점

잠재의미분석은 입력데이터의 크기가 mxn이고 문서당 평균 단어수가 c일 경우, 계산복잡도가 O(mnc)이어서 그다지 무거운 알고리즘이 아니며, 쉽고 빠르게 구현 가능하다.

 

단점

- 문서에 포함된 단어가 정규 분포를 따라야 LSA 적용 가능하다.

- 새로운 문서나 단어가 추가되면 처음부터 작업을 새로 시작해야 한다.

 

 

5. LDA (Latent Dirichlet Allocation, 잠재 디리클레 할당)

LDA는 문서들은 토픽들의 혼합으로 구성되어져 있으며, 토픽들을 확률 분포에 기반하여 다어들을 생성한다고 가정한다. 데이터가 주어지면, LDA는 문서가 생성되던 과정을 역추척한다.

 

예를 들어, 다음과 같은 예시 문장 3개가 있다고 가정하자.

문서1 : 저는 사과랑 바나나를 먹어요
문서2 : 우리는 귀여운 강아지가 좋아요
문서3 : 저의 깜찍하고 귀여운 강아지가 바나나를 먹어요

LDA를 통해 각 문서의 토픽 분포 각 토픽 내의 단어 분포를 추정할 수 있다.

각 문서의 토픽 분포
- 문서1 : 토픽 A 100%
- 문서2 : 토픽 B 100%
- 문서3 : 토픽 B 60%, 토픽 A 40%


각 토픽의 단어 분포
- 토픽A : 사과 20%, 바나나 40%, 먹어요 40%, 귀여운 0%, 강아지 0%, 깜찍하고 0%, 좋아요 0%
- 토픽B : 사과 0%, 바나나 0%, 먹어요 0%, 귀여운 33%, 강아지 33%, 깜찍하고 16%, 좋아요 16%

 

LDA는 토픽의 제목을 정해주지 않지만, 이 시점에서 알고리즘의 사용자는 위 결과로부터 두 토픽이 각각 과일에 대한 토픽과 강아지에 대한 토픽이라고 판단해볼 수 있다.

 

- LDA 수행

1) 사용자는 알고리즘에게 토픽의 개수 k를 알려준다.

2) 모든 단어를 k개 중 하나의 토픽에 할당한다.

3) 이제 모든 문서의 모든 단어에 대해서 아래의 사항을 반복 진행한다. (iterative)

3-1) 어떤 문서의 각 단어 w는 자신은 잘못된 토픽에 할당되어져 있지만, 다른 단어들은 전부 올바른 토픽에 할당되어져 있는 상태라고 가정한다. 이에 따라 단어 w는 아래의 두 가지 기준에 따라서 토픽이 재할당된다.

p(topic t | document d) : 문서 d의 단어들 중 토픽 t에 해당하는 단어들의 비율
p(word w | topic t) : 각 토픽들 t에서 해당 단어 w의 분포

 

 

* LSA vs LDA

LSA : DTM을 차원 축소하여 축소 차원에서 근접 단어들을 토픽으로 묶는다.
LDA : 단어가 특정 토픽에 존재할 확률과 문서에 특정 토픽이 존재할 확률을 결합확률로 추정하여 토픽을 추출한다.

 

 

 

 

<더 찾아볼것>

* 고유값 분해 (Eigen  Value Decomposition)

 

 

[참고자료]

https://huidea.tistory.com/126

 

[Machine learning] 차원축소, PCA, SVD, LSA, LDA, MF 간단정리 (day1 / 201009)

Q. 차원의 저주에 대해 설명해주세요. dimension reduction 기법으로 보통 어떤 것들이 있나요? # 차원의 저주 - Curse of dimension 입력된 데이터의 수보다 데이터의 차원이 더 큰 경우 발생하는 문제를 차

huidea.tistory.com

https://techblog-history-younghunjo1.tistory.com/66

 

[ML] PCA(주성분분석), SVD, LDA by Fisher

※해당 게시물에 사용된 일부 자료는 순천향대학교 빅데이터공학과 정영섭 교수님의 머신러닝 전공수업 자료에 기반하였음을 알려드립니다. 이번 포스팅에서는 선형대수의 벡터를 기반으로

techblog-history-younghunjo1.tistory.com

https://bkshin.tistory.com/entry/%EB%A8%B8%EC%8B%A0%EB%9F%AC%EB%8B%9D-20-%ED%8A%B9%EC%9D%B4%EA%B0%92-%EB%B6%84%ED%95%B4Singular-Value-Decomposition

 

머신러닝 - 20. 특이값 분해(SVD)

이번 장에서는 특이값 분해(SVD)에 대해 알아보겠습니다. 고유값 분해에 대해 알고 있어야 특이값 분해를 이해할 수 있습니다. 고유값 분해를 잘 모르시는 분은 이전 장을 참고해주시기 바랍니다

bkshin.tistory.com

https://velog.io/@guide333/GD-L2%EB%8B%A8%EC%96%B4-%EB%B9%88%EB%8F%84-%EC%9D%B4%EC%9A%A9%ED%95%9C-%EB%B2%A1%ED%84%B0%ED%99%94BoW-DTM-TF-IDF

 

[GD-L2]단어 빈도 이용한 벡터화(BoW, DTM, TF-IDF)

텍스트를 숫자 벡터로 변환(전처리 과정 중 하나)벡터화의 방법 (1) 통계와 머신 러닝을 활용한 방법(오늘 배울 것)(2) 인공 신경망을 활용하는 방법벡터화 (Vectorization): 텍스트를 숫자 벡터로 변

velog.io

https://5bluewhale.tistory.com/14

 

토픽모델링(Topic Modeling)-잠재의미분석(Latent Semantic Analysis, LSA)

<!DOCTYPE html> LSA.utf8 토픽 모델링(Topic Modeling) 기계 학습 및 자연어 처리 분야에서 토픽(주제)이라는 문서 집합의 추상적인 주제를 발견하기 위한 통계적 모델 중 하나 텍스트 본문의 숨겨진 의미

5bluewhale.tistory.com

 

Comments