Session Review

Vector Transformation

벡터의 변환(선형 변환) = 임의의 두 벡터를 더하기 하거나 스칼라 곱 하는 것

❓ 벡터가 변형된다는 것이 어떤 의미?
벡터(데이터)를 다른 위치로 옮긴다는 의미

고유벡터(Eigenvection)

transformaton에 영향을 받지 않는 회전축 (혹은 벡터) -> 공간의 고유벡터
-> 크기만 변하고 방향은 변화하지 않음

e.g. x,y축 위에 있는 벡터, diagonal vectors
즉, 변형해도 span위에 있는 벡터들 (회전하거나 하지 않음)

👀 diagonal matrix: 모든 기저 벡터는 고유 벡터이고, 대각선의 값이 고유값이 됨

❗️고유벡터가 왜 중요해?
벡터를 변환할 때, 어떠한 기준을 가지고 변환해야 하는가를 볼 때, 고유벡터가 변하지 않는 하나의 축이 될 수 있음

고유값 (Eigenvalue)

고유벡터는 크기만 변화하는데 이 때, 이 변화는 스칼라 곱으로 표현
이 때, 이 스칼라 값고유값

λ\lambda 로 표현되는 고유값 찾는 방법:
행렬식이 0인 영벡터가 아닌 고유값 찾기(2차원의 경우, 차원 축소해서 선으로 만들면 행렬식 0)
-> 실수해가 없는 경우에는 고유값도 없음 (e.g. 90도 회전 - 모든 벡터가 span 벗어남)

고차원의 문제 (The Curse of Dimensionality)

사람의 뇌는 3차원 이상의 정보를 시각적으로 이해하기 어려움 -> 여러 차원의 데이터셋의 경우 시각화가 거의 불가능
-> 특히 feature 수가 많은 빅데이터를 다룰 때는 문제 많음

feature 수가 많다고 무조건 좋은 것일까?

feature 수가 많으면 시각화하는 과정에서 불필요한 plot 많이 존재하게 됨 + overfitting 발생

데이터를 약간 제한하더라도 insight를 얻는데 문제가 없다면, feature를 추가하지 않는 것이 효율적

Dimension Reduction

불필요한 데이터 feature 줄이는 것을 통해 효율적인 분석 가능하게 함

Feature Selection

데이터셋에서 덜 중요한 feature 제거

장점 : 선택된 feature 해석이 쉽다
단점 : feature들 간의 연관성을 고려해야 함
예시 : LASSO, Genetic algorithm 등

Feature Extraction

similar to Feature engineering
기존에 있는 feature이를 바탕으로 조합된 feature 사용하는 것

장점 : feature 들 간의 연관성이 고려됨 + feature수 많이 줄일 수 있음
단점 : feature 해석이 어려움
예시 : PCA, Auto-encoder 등

PCA: Principal Component Analysis

feature extraction의 일종으로, 고차원의 데이터를 낮은 차원으로 차원축소 함으로써 효과적으로 분석하기 위한 기법
-> 원래 고차원 데이터의 정보(분산)을 최대한 유지하는 벡터 찾고, 해당 벡터에 대해 데이터를 (Linear)Projection 함

PCA의 특징

  • 데이터에 대해 독립적인 축을 찾는데 사용할 수 있음
  • 데이터의 분포가 정규성을 띄지 않는 경우, 적용이 어려움 (이 경우 커널 PCA 사용)
  • 분류 / 예측 문제에 대해 데이터의 라벨을 고려하지 않기 때문에 효과적 분리가 어려움 (주로 clustering과 같은 비지도학습과 연관되어 있음)

👀 고유값과 PCA
분산을 가장 크게하는 축(가장 독립적인 축)을 기준으로 어떤 feature(PC)를 고를지 선택할 때, 고유값이 등장 -> 분산을 크게하는 축을 설정하고 이를 기준으로 데이터 변환
= 데이터의 분산-공분산 매트릭스 계산하여 여기에서 분산 값을 가장 크게 하는 고유벡터와 고유값 찾아냄 -> 데이터를 이 고유벡터에 projection
-> 분산을 잘 유지할 수 있는 (잘 반영할 수 있는) 벡터들: 직교 관계

👀 분산이 크다의 의미
데이터와 축 간의 차이가 아니라 0점에서 데이터 간의 차이가 크다는 뜻
축과 데이터 간의 거리는 피타고라스 정리로 설명됨 -> 0점에서 데이터까지의 거리가 길어지면, 축과 데이터 간의 거리는 짧아짐
=> 분산을 계산하는 것이 더 쉽기 때문에 0점에서 데이터 간의 차이를 기준으로 PCA 진행

PCA 과정
1. 데이터셋 정규화
2. 정규화된 데이터셋 기반으로 공분산 구함
3. 구한 공분산의 행렬을 기준으로 고유값, 고유벡터 구함
4. 구한 고유벡터(그 데이터셋의 독립적인 축)에 정규화한 데이터셋을 투영

Food for Thought

❓ PCA에서 원래의 분산을 유지하는 것이 정보를 유지하는 것과 어떤 관련?
분산은 해당 변수의 변화에 따라 데이터가 흩어져있다는 뜻 -> 분산을 유지해야 변수가 target value에 끼치는 영향이 최대한 변하지 않고 반영됨
+) PCA에서 중요한 것은 데이터에 가장 가까운 초평면을 정의하는 것 이 때, 분산을 최대로 유지하는 축을 찾아야 원본 데이터셋과의 평균 제곱 거리 최소화 = 정보의 손실 최소화

데이터 스케일링

데이터 스케일링하는 이유? (PCA 말고도 데이터 정규화 하는 경우 많음)
스케일링을 통해 단위로 인한 데이터 왜곡 방지하고, 모델의 정확성 높이기 위해

❗️ PCA관점에서의 데이터 스케일링
PCA는 분산을 최대화 하는 것에 관심 있음
만약 단위에 의해서만 분포가 다른 두 벡터가 있다면, normalized 되지 않은 데이터의 경우 PCA는 단순히 분산이 큰 쪽으로 고유벡터를 설정할 것 -> 왜곡 발생

정규화(Normalization)와 표준화(Standardization)

  • 정규화: 한 특성 내에서 가장 큰 값은 1, 가장 작은 값은 0으로 변환
  • 표준화: 정규분포에 따르도록 변환 - 0의 평균을 기준으로 얼마나 떨어져있는지 확인 = 각기 다른 평균과 표준편차를 가지고 있는 값들을 표준정규분포를 따르는 분포로 바꾸는 것

정규화와 표준화의 차이: 드라마틱한 차이는 없음(둘 다 사용하기도 함) -> 목적이 비슷(단위가 다름으로써 발생하는 에러를 줄이는 것)

profile
Always stay confident

0개의 댓글