차원의 저주란?
[원인]
데이터를 더 잘, 조금은 세세하게 표현하기 위해 변수의 개수를 늘리는 경우가 있다.
이 변수의 개수를 늘리는 것은 거의 문제가 되진 않는데, 특히 학습 데이터의 수가 변수의 개수보다 작아지면 차원의 저주가 발생한다.
[개념]
차원이 증가하면서 학습 data 수 < dim 으로 성능이 저하되는 현상.
즉, 관측된 데이터보다 변수의 개수가 많아지면.. 변수로 데이터를 표현하는 데에 어려움이 있는데, 이 현상을 말함.
각 차원에 있는 데이터를 학습해야 하는데, 그 데이터의 수가 적어지기에 오버피팅될 가능성이 생김.
[해결방법 종류]
# train data < # dim 인 문제이므로, 이를 해결하려면
#train data를 늘리거나,
#dim을 줄이면 된다.
[해결방법 특징]
1. #train data 늘리기
차원의 증가에 따라 필요한 데이터의 수가 엄청나게 증가하기 때문에, 이미 dim이 큰 상황에서 이를 뛰어넘는 데이터 수를 만드는 것은 어렵다고 볼 수 있다.
2. #dim 줄이기
즉, 차원축소 기법이다. 이는 선형축소인 PCA와 비선형 축소인 t-SNE가 있는데, 이에 대해서는 밑에서 설명하겠다.
[PCA]
차원을 낮추려면, 그래도 낮춰진 차원에서도 데이터가 잘 표현돼야 한다.
예를 들어, 습도-강수량 같이 비슷한 류의 변수로 데이터가 표현돼있다면,
이 중 하나의 변수만 사용해도 데이터를 잘 나타낼 수 있을 것이다.
비슷한 변수끼리는 분포가 비슷할 것이고, 따라서 그사이 분산이 작을 것이다.
이를 이용해, 차원축소를 했을 때의 목표가 !!분산이 큰 것!!이다.
예를 들어, 2차원 데이터를 1차원으로 차원축소할 때,
우선 2차원 평면에 나타내진 데이터들을 모아 평균을 구하고, 이를 원점으로 잡는다.
원점을 지나는 직선은 무한하게 그릴 수 있을 텐데, 그 직선 중 데이터를 넘어가지 않는 한, 각 데이터에서 이 직선에 수선의 발을 내렸을 때 그 각각의 길이가 최대가 되는 직선을 고르면 된다.
이 직선을 x축, 그리고 x축과 직교하는 또다른 직선을 y축이라고 생각하고 그림을 그린다.
그럼 모든 데이터를 x축에 수선의 발을 내려 놓고, 그 데이터의 값을 y축 값으로 생각할 수 있게 된다.
차원 축소 완성!
그래서.. 만약 평균을 구하고 그 평균을 원점으로 봤을 때 데이터들이 원점 기준 사방 대칭적으로 나타나있다면..
차원축소를 하면 안 될 것. 그 데이터가 특정 방향으로 선을 그을 수 있을 것 같이 생기면 PCA가 가능한데, 원~정사각형 형태로 생겼다면 그 2차원으로 표현했을 때가 가장 잘 표현한 것일 거임. 더 축소하면 안됨. 축소할 수 없음.
* 여기서 저 x축과 평행한 벡터가 eigen vector.
이 eigen vector는 데이터가 어떤 방향으로 퍼져있는지를 뜻함.
[t-SNE]
우선 이를 위해서는 통계학의 t-분포를 이해해야 하는데,
보통 데이터에서 표본이 적은 경우에(n<30), 모집단이 만약 정규분포와 유사하다는 사실을 알고 있지만~ 모 표준편차를 모른다면 사용하는 분포이다.
표본이 크면(n>30) 정규분포를 사용하곤 하는데, 이 정규분포는 종모양으로, y축 기준 좌우대칭이다. t-분포도 이와 마찬가지로 좌우대칭 형태이다.
이 t-SNE는 t분포 stochastic neighbor embedding의 약어이다.
개념은.. 담에~!!
'스터디' 카테고리의 다른 글
2주차 미션 - 용어정리, matplotlib, norm (0) | 2024.06.02 |
---|---|
Pandas - 파이썬으로 데이터 처리 (0) | 2024.06.01 |