본문 바로가기

python & DS

t-sne 정형데이터/분류시 사용

반응형

t-분포 확률적 임베딩은 데이터의 차원 축소에 사용되는 기계 학습 알고리즘 중 하나로, 2002년 샘 로이스Sam Rowise와 제프리 힌턴에 의해 개발되었다. t-SNE는 비선형 차원 축소 기법으로, 고차원 데이터를 특히 2, 3차원 등으로 줄여 가시화하는데에 유용하게 사용된다.

feature개수는 몇 천개고, train,test데이터 불균형은 심할 때, 어느 부분이 얼마나 다른지 확인해야될 때가 있다. 이때 사용하면 유용하다. 모 대회에서는 train 데이터 셋과 test 데이터 셋의 차이가 심하고, 심지어 test의 특정 class가 train에 거의 없는 것만 들어간 적이 있었다. 일반적인 분류알고리즘으로 성능이 너무 안나와서 t-sne를 그려보니, test의 데이터셋에 알 수 없는 class가 뭉쳐있었다. 아래 그림에서 빈 부분이 tr에는 없고 test에는 있는 데이터의 분포이다. t-sne장점은 여기서 이렇게 비주얼적으로 비교로 그치는 것이 아니라 해당 영역에 해당하는 data들을 뽑아서 볼 수도 있다. 물론 컬럼이 몇 천개라 바로 볼 수 있다고 해서 차이점이 바로 나오는 건 아니지만, 단계별로 조사하다 보면 찾을 수 있다.

 

cmap대신 실제 class개수분포를 그대로 활용하여 색으로 target class를 표현해봄.
tr-test간 distance>2 떨어진 점들

 

같은 데이터, 2차원 PCA로만 그린 경우

 

같은 train데이터를 LDA로 분류한 것을 차트로 그린 경우

train데이터와 test데이터의 개수 불균형 및 데이터 품질 차이가 클 경우, PCA, LDA, t-sne등 다양하게 조사하고 접근할 필요가 있다. 같은 데이터여도 이렇게 다른 분포와 다른 내용을 가질 수 있기 때문이다.

반응형

'python & DS' 카테고리의 다른 글

시험 DP-900: Microsoft Azure  (0) 2024.03.16
python 실행시간 측정 및 디버깅  (0) 2024.01.09
데이터 분석 - 회귀 계수 축소 모델  (1) 2024.01.07
RandomForestClassifier  (1) 2023.11.18
pandas AI  (0) 2023.11.18