개발공부/SK Networks Family AI bootcamp 강의노트

20일차 [ 비지도 학습 (데이터 차원 축소 및 행렬 분해) ]

HyunJung_Jo 2025. 2. 12. 16:51
 

Google Colab Notebook

Run, share, and edit Python notebooks

colab.research.google.com

 

간단 설명

  1. 차원의 저주 (Curse of Dimensionality):
    • 데이터의 차원이 높아질수록, 필요한 데이터 양이 기하급수적으로 증가하게 됩니다. 예를 들어, 2차원에서는 데이터 포인트들이 서로 가깝게 있지만, 10차원에 가면 데이터 포인트들이 훨씬 멀어지게 되어, 서로의 유사성을 파악하기 어려워지는 현상을 말합니다. 이로 인해 머신러닝 모델의 성능이 저하될 수 있습니다.
  2. 주성분 분석 (PCA, Principal Component Analysis):
    • 데이터의 차원을 축소하는 방법으로, 데이터의 변동성이 가장 큰 방향으로 새로운 축을 찾아내는 기법입니다. 주성분 분석을 통해 데이터의 차원을 줄이면서도 정보의 손실을 최소화할 수 있습니다. 즉, 중요한 특성만 남기고 불필요한 잡음을 제거하는 과정이라고 할 수 있습니다.
  3. 특이값 분해 (SVD, Singular Value Decomposition):
    • 행렬을 분해하여 구조를 이해하고, 차원 축소 또는 데이터 압축에 활용하는 방법입니다. 어떤 행렬을 세 개의 행렬(특이값, 왼쪽 특이벡터, 오른쪽 특이벡터)로 나누어 표현합니다. 텍스트 데이터나 이미지 처리에서 자주 사용되며, 데이터의 근본적인 패턴을 파악하는 데 도움을 줍니다.
  4. 비음수 행렬 분해 (NMF, Non-negative Matrix Factorization):
    • 비음수 행렬을 두 개의 비음수 행렬로 분해하는 방법입니다. 주로 이미지나 텍스트의 주제 모델링에 사용되며, 해석이 용이하다는 장점이 있습니다. 예를 들어, 이미지에서 특정 특징을 추출하거나 문서의 주제를 찾는 데 효과적입니다.

요리에 비유

차원의 저주

상상해 보세요. 여러분은 요리를 잘하는 셰프입니다. 그런데 너무 많은 재료를 가지고 요리를 하려고 합니다. 예를 들어, 100가지의 재료가 있다면, 모든 재료를 조합하는 방법이 100! (100 팩토리얼) 가지입니다. 이렇게 되면 요리법을 찾기가 너무 복잡해지고 어려워져요. 이처럼 ‘차원의 저주’는 데이터가 너무 많아질수록 분석이 어려워지는 현상을 말합니다. 재료가 많을수록 조작하는 것이 힘들어지는 것이죠.

주성분 분석 (PCA)

이제, 그 많은 재료들 가운데 필요한 것만 추려내기로 합시다. 여러분은 요리에서 가장 중요한 3가지 재료를 선택합니다. 이재료들이 요리의 맛을 결정짓는 주성분이 되는 셈이죠. 주성분 분석(PCA)은 이렇게 데이터의 차원을 줄여서 가장 중요한 정보만을 남기는 기법입니다. 요리에 비유하자면, 필수적인 재료 3가지를 골라 내는 과정이라 할 수 있습니다.

특이값 분해 (SVD)

특이값 분해(SVD)는 이처럼 주요 재료들을 어떻게 사용할지를 분석하는 과정입니다. 각 재료의 특성에 따라 다르게 요리하는 방법을 찾는 것이죠. 예를 들어, 감자는 삶아야 하고, 고기는 구워야 할 수도 있어요. 이렇게 각 재료의 '특이값'을 살펴보면서 가장 맛있는 조합을 찾아내는 것입니다. SVD를 이용하면 데이터를 숨겨진 구조로 분해하여, 어떤 재료가 얼마나 중요한지를 파악할 수 있습니다.

비음수 행렬 분해 (NMF)

마지막으로, 비음수 행렬 분해(NMF)는 요리를 할 때 어떤 재료는 반드시 양념과 함께 섞어야 하는 경우에 해당합니다. 예를 들어, 간장과 설탕을 함께 넣어야 단맛과 짠맛이 조화를 이루지요. 이 방법은 모든 재료가 양수여야 하며, 맛의 조합을 통해 새로운 요리를 만들어내는 방식입니다. 즉, 각 개수와 조합이 서로 긍정적이어야 하는 것이죠. NMF는 데이터에서 각 요소의 긍정적인 조합을 찾는 데 유용합니다.

수학 들어가니까 너무 어렵다...ㅠㅠ 이렇게라도 해서 알아먹어야지 뭐...

 

  • 비지도 학습은 features만 학습 진행한다.
  • encoding= str to float
  • scaling = 선형회귀일 땐 무조건 해야 한다.피쳐간의 데이터 사이즈가 일정해야 성능도 잘 나온다.
  • min max scaling은 원복이 가능해서 좋다.
  • 군집은 대충만 하면 된다....

overfitting, underfitting

  • overfitting: 학습이 과대하게 됨 / early stop 필
  • underfitting: 학습이 안 됨