3탄: 차원의 저주 해결법! 고차원 문제를 극복하는 방법
자, 이제 차원의 저주에 대해서도 알아보았으니 차원의 저주 해결 방법에 대해서도 알아보도록 하자.
혹시나 차원의 저주에 대해서 보지 않은 분은 아래 링크로 GoGo~~
https://jerrykim91.tistory.com/65
2탄: 차원의 저주란? 고차원 데이터에서 발생하는 문제
자, 이제 진짜 차원의 저주에 대해서 설명하고자 한다. 차원의 저주저차원과는 달리 고차원의 경우 우리가 직관적으로 이해하는 저차원 공간과 매우 다른 성질*을 나타내는데 이걸 차원의 저주
jerrykim91.tistory.com
차원의 저주 해결 방법
차원의 저주를 해결하는 방법에는 다양한 방법이 있다.
차원 축소, 특성선택 등 여러방법이 있다. 가볍게 살펴보도록 하자.
차원 축소 (Dimensionality Reduction)
차원이 많으면 복잡해지니 불필요한 차원을 제거하는 방법 중 하나인 차원 축소 기법이다. 주성분 분석, T-SNE, UMAP, 선형 판별 분석 등이 있다.
주성분 분석(PCA, Principal Component Analysis)
주성분 분석은 고차원 데이터를 저차원으로 투영하면서 정보 손실을 최소화하는 방법이다. 쉽게 말해 데이터를 가장 잘 사용하는 새로운 축(주성분)을 찾아서 차원을 줄이는 방법이다. 장점은 데이터의 중요한 정보를 최대한 유지하면서 차원을 줄일 수 있다.
T-SNE, UMAP
데이터의 구조를 유지하면서 고차원의 데이터를 2D, 3D 같은 저차원 데이터로 줄이는 방법으로 주로 시각화를 위해 사용된다.(PCA보다 비선형적인 구조를 잘 반영함)
선형 판별 분석(LDA)
클래스 간 분리를 최적화하면서 차원을 줄이는 방법이다.
특징 선택 (Feature Selection)
차원을 줄이는 또 다른 방법은 중요한 특성만 골라서 사용하는 방법인데 이것을 우리는 특징 선택 (Feature Selection)이라고 한다.
1. 필터 방법(Filter Method) – 상관관계 분석, 분산이 낮은 특성 제거
2. 랩퍼 방법(Wrapper Method) – 모델을 학습하면서 중요한 특성을 선택 (예: RFE)
3. 임베디드 방법(Embedded Method) – 알고리즘 자체가 중요한 특성을 선택 (예: L1 정규화(Lasso), 랜덤포레스트, 변수 중요도(Feature Importance))
참고로 Feature Selection(특성 선택)과 Feature Engineering(특성 엔지니어링) 은 연관은 있으나 다르다.
구분 | Feature Selection (특성 선택) | Feature Engineering (특성 엔지니어링) |
목적 | 불필요한 특성을 제거 | 새로운 특성을 생성 |
방법 | 상관관계 분석, 모델 기반 선택, Lasso | 변환, 조합, 인코딩, 도메인 지식 활용 |
예제 | 혈액형은 필요 없으니 삭제 | 키와 몸무게로 BMI 계산해서 추가 |
한마디로
- Feature Selection → "쓸데없는 걸 버려서 더 간결하게!"
- Feature Engineering → "새로운 걸 만들어서 더 똑똑하게!"
정규화 & 거리 재설정
고차원에서는 거리 개념이 깨지기 때문에 데이터 정규화라던지 여러가지 기법을 사용해서 이를 보완하는 방법도 있다.
아래에서 간략하게 보고 넘어가자.
데이터 정규화 (Normalization & Standardization)
차원마다 값의 범위가 다르면, 특정 차원이 모델에 너무 큰 영향을 줄 수 있다. 예를 들어보면 "키(170cm)"와 "연봉(5000만원)"을 비교할 때, 연봉이 너무 크면 키의 영향이 무시될 수도 있다. 그래서 모든 값을 비슷한 범위로 조정하면 거리 계산이 더 정확해진다. 이때 사용가능 한 기법이 정규화이다.
- Min-Max 정규화(최소-최대 정규화) : 데이터를 0~1 범위로 변환
- Z-score 정규화(Z-점수 정규화): 평균을 0, 표준편차를 1로 변환
거리 척도 변경
유클리드 거리(Euclidean Distance)는 고차원에서 의미를 잃어버리기 때문에 대신 코사인 유사도(Cosine Similarity) 나 맨해튼 거리(Manhattan Distance)를 사용할 수도 있음
고차원에서도 강한 알고리즘 사용
차원의 저주에 강한 알고리즘을 사용하는 것도 방법이다. 고차원에서도 강한 알고리즘으로는...
- 트리 기반 모델 (랜덤 포레스트, XGBoost)
거리 기반이 아니라 분할(가지치기) 방식이므로 차원의 영향을 덜 받는다.
- 딥러닝 (CNN, Autoencoder 등)
딥러닝은 자동으로 중요한 특성을 학습해서 차원 문제를 어느 정도 해결할 수 있다.
등이 있다.
위에서 언급한 차원의 저주를 해결하는 방법들을 표로 정리해 보았다.
방법 | Point |
차원 축소 (PCA, t-SNE, UMAP) | 데이터의 중요한 부분만 남겨서 차원 줄이기 |
특성 선택 (Feature Selection) | 꼭 필요한 특성만 골라서 사용 |
정규화 & 거리 변경 | 데이터 범위를 맞추고, 거리 계산 방식 바꾸기 |
고차원에서도 강한 알고리즘 사용 | 랜덤 포레스트 등 차원에 강한 알고리즘 사용 |
즉, 불필요한 차원을 줄이고, 데이터 정리를 잘하면 차원의 저주 문제를 해결할 수 있다.
이렇게 차원의 저주와 그 해결 방법에 대해 정리해 보았다.
예상했던 것보다 내용이 꽤 길어서 3개의 포스팅으로 나누어 진행했는데, 작은 도움이라도 되었으면 한다.
차원의 저주는 데이터 분석에서 중요한 문제지만, 적절한 해결 방법을 통해 충분히 극복할 수 있다.
각 방법을 상황에 맞게 잘 활용한다면, 고차원 데이터에서도 효과적인 분석이 가능할 거라고 생각한다. 😊
그럼, 다른 포스팅으로 또 만나요~ 안뇽~~~
'AI' 카테고리의 다른 글
2탄: 차원의 저주란? 고차원 데이터에서 발생하는 문제 (0) | 2025.02.27 |
---|---|
1탄 : 차원이란 무엇인가? 차원의 저주를 보기전 차원의 개념부터 이해하기 (0) | 2025.02.27 |
[AI] Generalization / Overfitting / Underfitting (7) | 2025.01.09 |
[AI] machine learning_회귀 분석 모델 (0) | 2025.01.09 |
[AI] machine learning_오차 측정 지표 (0) | 2025.01.08 |