상세 컨텐츠

본문 제목

Feature Engineering and the Curse of Dimensionality

AWS Certified Machine Learning Specialty

by Taeyoon.Kim.DS 2023. 11. 1. 22:52

본문

Feature Engineering in Machine Learning is the process of enhancing, selecting, and transforming the attributes (features) of the training data to improve model accuracy and efficiency. Features are the attributes used to train the model, such as a person's age, weight, or address when predicting their income. Not all features are equally relevant, so part of Feature Engineering is selecting and sometimes transforming these features to be more suitable for a given model. This process helps combat the "Curse of Dimensionality", which refers to the problems that arise when working with a high number of features. This curse can lead to sparse data, making it challenging to find optimal solutions, and requiring much larger neural networks to capture relationships between features. Techniques like Principal Component Analysis (PCA) and K-Means clustering can help in reducing dimensionality in a more structured way.

1. which features should I use?
2. Do I need to transform these features in some way?
3. How do I handle missing data?
4. Should I create new features from the existing ones?
Andrew Ng said that Applied ML is about feature engineering.

 

차원의 저주 (Curse of Dimensionality)
차원의 저주는 데이터의 차원이 증가함에 따라 특징 공간이 희소해지는 현상을 나타냅니다. 즉, 차원이 증가할수록 데이터 포인트 간의 거리가 멀어지게 되어, 모델 학습에 필요한 데이터 양도 기하급수적으로 증가하게 됩니다. 이로 인해 과적합(overfitting)의 위험이 커지고, 일반화 성능이 저하될 수 있습니다.

주성분 분석 (PCA: Principal Component Analysis)
PCA는 고차원 데이터에서 가장 큰 분산을 가진 방향(주성분)을 찾아, 그 방향으로 데이터를 투영시켜 차원을 축소하는 기법입니다. 이를 통해 원래 데이터의 분산을 최대한 보존하면서 차원을 줄일 수 있습니다. PCA는 정보 손실을 최소화하면서 데이터를 압축하는 데 효과적입니다.

K-means와 차원 축소
K-means 자체는 클러스터링 알고리즘이지만 차원 축소와 관련된 기법으로 사용될 수 있습니다. K-means를 사용하여 데이터를 여러 클러스터로 나눈 후, 각 클러스터의 중심(centroid)을 사용하여 데이터를 대표할 수 있습니다. 예를 들어, 1000개의 데이터 포인트가 있고 K-means를 사용하여 10개의 클러스터로 나누었다면, 이 10개의 클러스터 중심으로 1000개의 데이터 포인트를 대표할 수 있습니다. 이렇게 되면, 데이터의 차원이 아니라 클러스터의 수로 데이터를 표현할 수 있게 되어 차원이 줄어듭니다. 그러나 이 방법은 실제 차원을 줄이는 것이 아니라 데이터를 압축하는 형태로 차원 축소의 효과를 가져옵니다 
(이러면 실제 데이터 포인트가 삭제되고 새로운 데이터 포인트가 만들어 지는 것이라서 거부감이 든다.)

 

관련글 더보기