본문 바로가기
데이터 분석

이상치, 군집 vs 분류, ... 그리고 PCA

by 땅호720 2024. 3. 18.

작년에 과제로 제출했던 보고서에 대한 튜터님으로부터의 피드백이다.

  1. 결측치이상치 처리에 대한 코드가 없어요
    • 결측치란, 데이터 수집시 누락된 부분에 대한 처리입니다. 평균값 대체, 최빈값 대체, fillna(0) 등이 있겠습니다.
    • 이상치는 비정상적으로 크거나 작은 값에 대한 처리이므로, boxplot, IQR, z-score, DBscan 등으로 이상치를 제거해주세요
      • 결론적으로 전체 N 개의 데이터 중 A 개가 이상치로 판단하였습니다.
    • PCA 도 좋지만 앞단 전처리에 집중해주세요!
  2. 가설설정실험내용을 명확하게 기재해 주세요!
  3. 내용을 요약해주세요!  어뷰저 기준이 너무 많아요. 대신 다양한 피쳐에 대한 접근은 좋습니다.
  4. 데이터를 0과 1 (label)로 나누는 것은 충분한 근거가 필요해요.

이상치를 다양한 방법으로 분류해보고, 적절한 판단 근거를 두고 결론짓기!

적절한 판단 근거... 이게 어려워요....ㅜㅜ

 

  • 군집: label이 없을 때 (unsupervised), 데이터 자체의 특성에 대해 알고자 하는 목적 (ex: k-means, PCA)
  • 분류: label이 있을 때 (supervised), 새로운 데이터의 그룹을 예측하기 위한 목적 (ex: knn)

 

그러면, 의도적으로 인풋 데이터 구성을 분류가 확실하게 해놓고 클러스터링을 하면, 원하는 분류를 할 수 있지 않을까?

 

k-means는 k개 임의의 군집 중심점끼리의 거리합이 최소가 될때까지 이동하여 묶는 방법이고,

knn은 new data의 최근접 k개를 참조하여 new data의 label을 정하는 방법이다.

 

PCA

PCA 종합 점수라고 생각할 수 있으며,

분산이 최대가 되는 축 (주축)을 찾고,  축과 직교하면서 분산이 최대가 되도록 하는 축을 이어 찾아나가는 방식이다.

  • 주축: 공분산 행렬 (feature 간에 서로 함께 변하는 정도)
  • 투영 변환을 반대로 수행하면복원 가능

 

더욱 자세히 ,

입력한 데이터의 feature 간에 서로 함께 변하는 정도 (공분산 행렬) 기반으로 (특이값 분해를 수행하여) 고유 벡터를 생성한다.

이렇게 구한 고유 벡터들 중에서 고유 값이 가장 (데이터의 분산이 가장 ) 순서로 주성분 벡터를 추출한다.

더보기

고유 값이 크다. 데이터의 분산이 가장 커서 먼저 뽑힌 고유 벡터,  feature간의 관계가 데이터를 더욱  설명한다고 해석된다.

나중에 뽑힌 벡터는, 해당하는  feature간의 관계가 데이터를  설명하지 못하므로, 노이즈가 제거되는 효과가 있다.

 

데이터의 분산이 최대가 되는 (고유 벡터) 찾고, 축과 직교하면서 분산이 최대가 되도록 하는 축을 이어서 찾아나가는 방식.

나중에 뽑힌 벡터보다 가장 먼저 뽑힌 벡터가 데이터를 더욱 설명할 있기 때문에 노이즈가 제거된다.

 

  • 공분산: 2개의 확률 변수의 편차를 곱한 것의 평균값, 두 확률 변수의 상관관계 정도를 나타냄 (양 / 음)
    • 얼마나 큰 차이를 보이는지는 반영하지 못함
    • 변수의 단위 크기에 영향을 많이 받음 -> 상관계수 (공분산을 단위화 시킨 것)
  • svd, 특이값 분해: 일종의 행렬에서 이뤄지는 인수 분해 (특이값: 고유값에 루트를 씌운 값)

 

 

1. 분산 보존 : 데이터 손실을 최소화하기 위해서는, 고차원 공간을 가장 '' 표현할 있는 초평면을 찾는 것이 중요하다. PCA에서는 데이터의 분산이 최대가 되는 (원본 데이터셋과 투영된 데이터셋 간의 평균제곱거리가 최소화되는 ) 찾는다.

 

2. 성분은 고유벡터인 eigen vector 고유값 eigen value 구함.

  • 고유 벡터: 선형 변환 A 대해, 결과가 원래의 상수배가 되는 0 아닌 벡터
  • 고유 : 상수값

 

3. 이때 데이터에는 변화가 생기지 않는다. 다만 데이터의 분포를 나타내는 축만 변화