Notice
Recent Posts
Recent Comments
Link
«   2026/05   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31
Tags
more
Archives
Today
Total
관리 메뉴

bonggyulim 님의 블로그

추가로 알아두면 좋은 전처리: PCA, Vectorization, SMOTE 본문

AI dev/Machine Learning

추가로 알아두면 좋은 전처리: PCA, Vectorization, SMOTE

bonggyulim 2026. 4. 7. 15:56

전처리를 하다 보면 결측치 처리, 인코딩, 스케일링만으로 끝나지 않는 경우도 많다.
데이터 형태와 문제 유형에 따라 차원축소, 벡터화, 클래스 불균형 처리까지 함께 고려할 수 있다.

다만 이 기법들은 모든 문제에 무조건 사용하는 것이 아니라,
데이터 특성과 모델 목적에 맞게 선택적으로 적용해야 한다.

1. PCA

차원축소는 feature 수가 많을 때 정보를 최대한 유지하면서 차원을 줄이는 방법이다.
컬럼이 너무 많으면 학습 속도가 느려지고, 불필요한 노이즈가 많아질 수 있다.
이럴 때 대표적으로 PCA(Principal Component Analysis) 를 사용할 수 있다.

from sklearn.decomposition import PCA

pca = PCA(n_components=2)

X_train_pca = pca.fit_transform(X_train_standard)
X_test_pca = pca.transform(X_test_standard)

print("원본 shape:", X_train_standard.shape)
print("축소 후 shape:", X_train_pca.shape)

2. TF-IDF 벡터화

벡터화는 텍스트 데이터를 숫자 형태로 바꾸는 작업이다.
머신러닝 모델은 문자열 자체를 직접 처리하지 못하기 때문에,
문장을 단어 빈도나 중요도 기반의 숫자 벡터로 변환한 뒤 사용한다.

from sklearn.feature_extraction.text import TfidfVectorizer

tfidf_vectorizer = TfidfVectorizer()
X_train_tfidf = tfidf_vectorizer.fit_transform(X_train_text)
X_test_tfidf = tfidf_vectorizer.transform(X_test_text)

3. SMOTE

SMOTE는 클래스 불균형이 있는 분류 문제에서 소수 클래스를 늘려 학습 균형을 맞추는 방법이다.
예를 들어 정상 데이터는 많고 이상 데이터는 적다면, 모델이 다수 클래스를 중심으로만 학습할 가능성이 커진다.

이럴 때 SMOTE를 사용하면 소수 클래스를 보강할 수 있다.

from imblearn.over_sampling import SMOTE
from sklearn.model_selection import train_test_split

X_train_cls, X_test_cls, y_train_cls, y_test_cls = train_test_split(
    X, y, test_size=0.2, random_state=42, stratify=y
)

smote = SMOTE(random_state=42)
X_train_smote, y_train_smote = smote.fit_resample(X_train_cls, y_train_cls)

print("원본 학습 데이터 분포:")
print(y_train_cls.value_counts())

print("SMOTE 적용 후 분포:")
print(y_train_smote.value_counts())

 


주의할 점

  • 차원축소(PCA), 벡터화(TF-IDF/CountVectorizer)
    학습 데이터로만 fit 하고,
    → 테스트 데이터에는 transform만 한다.
  • SMOTE
    학습 데이터에만 적용해서 resample 한다.
    → 테스트 데이터에는 적용하지 않는다.

 

'AI dev > Machine Learning' 카테고리의 다른 글

ML - 모델 학습 및 평가  (0) 2026.04.04
ML - 데이터 전처리  (0) 2026.04.04