1. 데이터셋의 차원 축소의 주요 목적과 단점
잡음과 특성의 중복을 제거함으로 알고리즘의 속도를 높이고, 데이터 시각화를 가능하게하고, 메모리 공간을 절약하기 위해 사용한다.
그런데 계산 비용이높고, 파이프라인의 복잡도를 증가시키고, 높은 차원의 데이터를 낮게 변환했을때 데이터를 이해하기 힘들다.
2. 차원의 저주란?
저차원 공간에는 없는 많은 문제가 고차원에서는 발생할 가능성이 생긴다. 머신러닝의 높은 차원 데이터는 희소해서 과대적합 위험이 크고, 패턴을 잡아내기 위해 많은 데이터를 필요로 한다.
3. 데이터셋의 차원을 축소시키고 이 작업을 원복할 수 있는지
데이터셋을 축소시키고 다시 완벽하게 복원하는 것은 불가능하다. 차원이 축소되면 일부 정보가 사라지기 때문이다.
그리고 복원하는 것 자체가 어려운 알고리즘도 있다.
4. 매우 비선형적인 데이터셋의 차원 축소에 PCA 가 쓸만할까?
비선형적인 데이터셋에 불필요한 차원이 있다면 PCA를 써도 좋지만, 스위스 롤과 같은 불필요한 차원이 하나도 없을 경우에는 잃어버리는 정보가 너무 크다. 그냥 초평면에다가 투영해버리기 때문에.
5. 설명된 분산을 95%로 지정한 PCA를 1000개의 차원을 가진 데이터셋에 적용한다고 가정할 때, 결과 차원은?
PCA의 분산을 95%로 정한다 하더라도, 데이터셋의 분산에 따라서 결과 차원이 달라진다. 분산을 유지하기 위해서 무작위로 퍼져있는 데이터셋은 더 많은 차원을 요구한다.
6. 기본 PCA, 점진적 PCA, 랜덤 PCA, 커널 PCA는 어느 경우에 사용되나?
기본 PCA는 데이터셋이 메모리에 맞을때,
점진적 PCA는 데이터셋이 너무 커서 메모리에 전부 적재가 안될때, 조금씩 적재해서 축소하고, 느리다.
랜덤 PCA는 차원을 크게 축소시킬때, 빠르다.
커널 PCA는 비선형 데이터셋에
7. 차원 축소의 성능평가
데이터셋의 정보를 잃지 않으면서, 차원을 많이 축소시킬 수록 좋다고 볼수 있다.
이에 역변환을 통해서 재구성오차를 구해 잃은 정보의 양을 측정한다.
또는 차원 축소후 사용하는 알고리즘의 성능과 기존 데이터셋의 알고리즘 성능을 비교한다.
8. 두개의 차원축소 알고리즘을 연결할 수 있나?
각각의 알고리즘이 독립적이기 때문에, 당연히 당연하다.
예를들어 많은 차원을 축소시키는 PCA를 수행하고, LLE를 수행하는것과 LLE를 수행하는것과 성능은 비슷한데 시간은 전자가 훨씬 빠르다.
9. MNIST 데이터셋에 랜덤 포레스트 분류기훈련->PCA데이터셋 분류기 훈련 비교
10. t-SNE알고리즘으로 MNIST 을 2차원으로 축소후 시각화, PCA, LLE, MDS 적용후 시각화
https://github.com/kimhwijin/HandsOnMachineLearing/blob/main/HOML_Exercise_8.ipynb
GitHub - kimhwijin/HandsOnMachineLearing
Contribute to kimhwijin/HandsOnMachineLearing development by creating an account on GitHub.
github.com