• Feed
  • Explore
  • Ranking
/

    주성분 분석(PCA)

    j
    jjjooo
    2025.08.31
    ·
    7 min read

    빅분기 필기 시험 준비 중 주성분 분석 관련 문제만 나오면 틀려서 정리해본다.

    알아도 아는 게 아닌 주성분 분석,,,,,,,,, 한번 파헤쳐 보자

    일단 정의

    PCA (Principal Component Analysis, 주성분 분석)는 차원 축소(dimensionality reduction) 기법 중 하나로, 고차원의 데이터를 보다 간단한 저차원으로 변환하면서도 데이터의 정보(분산)를 최대한 보존하려는 방법이다"

    그러하다..

    주성분 분석은 차원 축소를 하되, 분산을 최대한 보존하려고 하는 방법인 것이다..

    데이터 생초보인 나는 분산이 큰게 왜 좋은 건지도 몰랐다..
    분산이 크다는 건 데이터가 많이 퍼져있다는 거고, 그렇기에 정보가 많이 담겨있다는 뜻이기에 큰게 좋고, 반대로 분산이 작은 것은 값이 다 비슷하기 때문에 큰 의미없이 중복된 정보일 가능성이 높다

    다시 돌아가자면~~
    보통의 데이터는 서로 상관관계가 높은, 즉 중복된 데이터가 많은데
    PCA를 사용하면 변수를 새로운 축(이걸 주성분이라고 부른다)으로 변환하고 이 새로운 축에 중복되지 않고 독립적인 정보가 담기도록 만들어 주면서 데이터를 가장 잘 대표할 수 있는 특징성을 찾는 활동인 것이다 ~~~


    그럼 우뜨케 PCA 하는디

    일단 첫번째 단계는 데이터 표준화이다
    이건 .. 뭐 다른 분석 기법에서도 하는 거다. 변수마다 단위가 다르면 결과가 왜곡될 수 있기 때문에
    평균울 0, 분산을 1로 맞춰 모든 변수를 같은 스케일로 만들어준다.

    그 다음~~ 공분산 행렬 계산을 한다
    여기서,,,,, 공분산이 뭐냐 면!!
    두 변수 (x,y)가 얼마나 같이 움직이는 지 보는 거다
    둘다 커지거나 작아지면 공분산이 양수가 되고, 한쪽만 커지고 다른쪽이 작다면 공분산은 음수가 된다
    서로 아예 상관 없으면 공분산은 0이다
    그러면 공분산 행렬 계산을 한다면! 변수들 간의 관계를 파악할 수 있을 것이돠

    그렇게 공분산을 통해 변수들 간의 관계를 확인 했다면!
    이제 공분산 행렬을 고유 분해(Eigendecomposition) 한다
    고유 분해는 별건 없고 공분산 행렬을 분석해서 데이터가 가장 많이 퍼져있는 방향과, 정보량을 뽑아내는 과정이다
    그래서 이러한 고유분해를 하면 고유 벡터와, 고유값이 나오게 되는데,
    고유 벡터 == 새로운 축, 즉 주성분 방향
    고유값 == 그 축에서 데이터가 얼마나 퍼져있는지, 즉 정보량

    이다

    오홍 이제 그럼 어디를 주성분으로 할지 대충 감이 오져
    고유값이 큰 순서대로 K개의 주성분을 선택하면 된다
    여기서 K 값은 차원에 따라 결정되는데, 만약 2차원 데이터로 줄이려면 고유값이 큰 상위 2개를 고르면 된다
    (3차원으로 줄이려면 k=3 ....)

    특징

    여러가지 특징을 가지고 있겠지만.. 나는 시험이 얼마 안남았으니,, 기출에 나온 특징들을 기준으로 정리해보겠다..

    변수들이 꼭 정규분포일 필요는 없다
    → PCA는 분산과 상관관계에 집중하는 방법이라, 데이터가 정규분포를 따르지 않아도 적용할 수 있다.
    즉, "데이터가 반드시 예쁘게 종 모양일 필요는 없다"는 뜻!

    차원 축소는 변수들 간의 상관관계 기반으로 한다
    → 결국 변수들끼리 얼마나 비슷하게 움직이는지(상관성)를 보는 거다.
    서로 상관관계가 높은 변수들은 중복된 정보가 많으니, PCA로 묶어서 간단히 만들 수 있다.

    정방행렬인 음상관행렬(correlation matrix)의 곱으로 바꿔 활용하기도 한다
    → 데이터 그대로 공분산을 쓰지 않고, 상관계수를 기반으로 PCA를 하기도 한다.
    이렇게 하면 스케일이 다른 변수들(예: 키 vs 몸무게 vs 수입)도 비교 가능해진다.

    데이터 행렬을 비음수(Non-negative)라고 가정하는 경우도 있다
    → 특히 이미지나 문서 분석 같은 데서는 값이 음수가 될 수 없으니까, 데이터를 전부 0 이상이라고 두고 PCA를 변형해서 쓰기도 한다.

    활용 분야는 매우 다양하다

    • 차원 축소: 쓸데없는 변수 줄여서 깔끔하게

    • 데이터 시각화: 고차원 데이터를 2D나 3D로 줄여서 그림으로 보기

    • 변수 선택: 꼭 필요한 정보만 뽑아내기

    • 잡음 제거: 작은 고유값(분산이 거의 없는 축)은 노이즈일 확률이 높아서 버리면 데이터가 더 깔끔해진다