머신러닝 실습 3회차

3eo·2026년 2월 19일

전처리

인코딩 방법

범주형 데이터를 숫자로 번역.
레이블 인코딩 : 주로 타깃 y 라벨, 순서형을 임시로 코드화 / 트리 모델(가능하긴 한데 원-핫 권장함)
원-핫 인코딩 : 순서 없는 명목형 X / 선형 모델
오디널 인코딩 : 순서가 의미 있는 경우

텍스트 인코딩

CountVectorizer로 문장을 숫자로 바꿈
-> 문장에 단어가 몇 번 나왔는지를 세어 벡터로 변환
e.g. 라벨: 1= 긍정, 0 = 부정
texts = ["재밌다", '완전 감동적이다', "지루하고 별로였다"] -> labels = [1, 1, 0]

스케일링

값의 크기가 다르면 공정한 비교가 안 됨 -> 크기 맞추기
cf. 1000원 vs 150cm 에서 키 값은 상대적으로 너무 작아서 무시하게 됨. 값이 큰 것만 중요한 정보라고 착각할 수 있기 때문.

StandardScaler 로 단위 맞춤 (평균0, 표준편차 1 ; -1~1)--- z-score 표준화

RobustScaler : 중앙값/사분위 범위(IQR)로 스케일링 -> 평균/표준편차 대신 통계량 사용 --- 이상치에 강함

MinMaxScaler : [0, 1] 구간으로 맞춤 (최솟값/최댓값 기반 : 최소 0, 최대 1, 나머지는 비율로 스케일링) --- 값의 범위가 중요할 때 사용. 단, 이상치에 민감함.

정규화

벡터

  • 길이(크기) : 얼마나 많이/크게
  • 방향(패턴) : 어떤 조합/비율인가

정규화의 목적 : 길이 영향은 지우고, 방향(패턴)만 비교.
-> Normalizer 각 데이터 벡터의 길이를 1로 맞춤

※ 스케일링은 피쳐(열) 간 공정함을, 정규화는 샘플(행) 기준 방향 비교가 핵심

코사인 유사도

두 벡터의 방향(각도)이 얼마나 비슷한지 보는 지표.

같은 방향이면 1, 직각에 가까우면 0, 반대 방향이면 -1

데이터 누수

커닝한 것. 데이터 누수로 인해 성능 뻥튀기 되는 문제 발생.
학습/훈련할 때 fit 메소드를 사용하는데
전처리를 언제 어디에 fit 했는지가 중요.
train 데이터와 test 데이터가 같이 있으면 안 되는데
섞여버리면 평균과 표준표차, 단어사전, 카테고리 등 미리 다 알게 됨
전처리는 반드시 train셋으로만 --> Pipeline

정리

0개의 댓글