퍼포먼스 마케터 부트캠프 8주 2일차(참여 31일차)

MIN BAEK·2025년 7월 3일
0

데이터 전처리 정리

결측치(빈값) 처리

1) 삭제

  • 행또는 열 제거 df_drop = df.dropna(axis=1) 열 날림
    2) 대체
  • 평균 또는 중앙값으로 대체(수치형)
    df_mean = df_mean.fillna(df_mean.mean(numeric_only=True숫자형 데이터에서만 넣고 싶을때))
  • 최빈값으로 대체(범주형)
    Mode_values = df.mode().iloc[0]
    Df.fillna(mode_values)
    인덱싱(=행이나 열을 선택)
    iloc(숫자위치 기반) loc(라벨이름 기반-끝도 포함)
  • 예측 모델로 대체(회귀/분류 모델을 이용해 결측값 예측)

이상치(정상 범주에서 크게 벗어나는 값) 처리

1) 통계적 기법(3𝜎 Rule)
데이터가 정규분포 따른다고 가정, 평균에서 +-3𝜎(표준편차) 범위를 벗어나는 값을 이상치로 간주
2) 박스플롯 기준
사분위수(IQR = Q3 - Q1) 이용해 ‘Q1 - 1.5×IQR’, ‘Q3 + 1.5×IQR’ 벗어나는 데이터 이상치로 간주
Q1 = df['sensor_value'].quantile(0.25) Q3 = df['sensor_value'].quantile(0.75) IQR = Q3 - Q1 lower_bound = Q1 - 1.5 IQR upper_bound = Q3 + 1.5 IQR df = df[(df['sensor_value'] >= lower_bound) & (df['sensor_value'] <= upper_bound)] df
3) 머신러닝 기반
이상치 탐지 알고리즘

단순 제거하거나, 클리핑하거나, 별도로 구분하여 모델에서 제외하거나 다른 모델로 활용

정규화/표준화 (스케일링)

Minmaxscaler정규화: 모든 값을 0과 1 사이로 매핑
standardscaler표준화 : 평균을 0, 표준편차 1로 만듦(정규분포 가정을 사용하는 알고리즘)

불균형 데이터 처리 class imbalance

정상 99,불량 1처럼 한 클래스가 극도로 적은 경우
해결방법
1) Oversampling
2) Smote (소수 클래스의 다양한 예시를 가상으로 늘리는 기법)
from imblearn.over_sampling import SMOTE # 불균형 데이터 처리 (SMOTE) X = df.drop('defect', axis=1) # 결측치 처리, 이상치 제거, 인코딩 등 사전 처리 후 y = df['defect'] smote = SMOTE(random_state=42) X_res, y_res = smote.fit_resample(X, y)
3) Undersampling(다수 클래스 데이터 줄임)
4) 혼합기법 (smote + undersampling)

범주형 데이터 변환(둘다 텍스트 숫자로 변환)

1) 원핫인코딩
df = pd.get_dummies(df, columns=['label'])
2) 레이블 인코딩
from sklearn.preprocessing import LabelEncoder encoder = LabelEncoder() df["label"] = encoder.fit_transform(df["label"]) df

피처 엔지니어링

모델 성능 향상을 위해, 기존 데이터를 변형, 조합해서 새로운 특성(피처)을 만드는 작업
피처 엔지니어링(Feature Engineering)은 머신러닝에서 모델의 성능을 높이기 위해 데이터를 더 잘 다듬는 과정
쉽게 말하면, "데이터를 모델이 더 똑똑하게 이해할 수 있도록 가공해주는 작업"

✅ 1. 파생변수 생성 (Feature Generation)

• 먼저 원래 데이터에서 숨어 있는 정보를 끌어내는 작업
• 예: 날짜 → 요일 / 시간대 / 주말 여부
• 이게 먼저인 이유?
→ 좋은 피처가 많아야 그다음 뭐가 쓸모 있는지(선택) 판단할 수 있음

✅ 2. 변수 선택 (Feature Selection)

• 만든 피처가 많아졌으니, 이제는 모델에 진짜 필요한 변수만 추려냄
• 예: 상관관계 높은 변수 제거, 중요도 낮은 변수 제거

🎯 변수 선택 방법들
1. 🔗 상관관계 (서로 너무 비슷하면 하나만 남기자!)
ex)
“방이 많으면 집도 크겠지?”
“집이 크면 방도 많겠지?”
→ 같은 말이지?
→ 이런 식으로 비슷한 정보가 두 번 들어가면, 컴퓨터는 헷갈림
→ 그래서 둘 중 하나만 골라서 남기는 게 좋아!
이렇게 비슷한 변수들 중 하나만 남기는 걸 "다중공선성" 문제 해결

  1. 🧮 VIF (비슷한 정보인지 숫자로 확인하기)
    "Variance Inflation Factor"
    이 변수가 다른 변수들이랑 얼마나 겹치냐? 를 숫자로 알려주는 도구
    ex)
    "VIF = 12" 이러면? → 너무 겹침! → 제거하는 게 좋아
    "VIF = 2" 이러면? → 괜찮아! → 그냥 써도 돼

  2. 🌳 중요도(Feature Importance)
    • 나무(트리) 모델 같은 똑똑한 모델을 잠깐 써보는 거야!
    • 모델이 알려줘:
    “이 변수는 정말 쓸모 있어요!”
    “이건 별로 영향 없어요…”
    → 그래서 중요한 변수만 남기고, 별로인 건 버리는 방법

✅ 3. 변수 간 상호작용 추가 (Interaction Term)

• 예: 나이 * 운동량 같이 두 변수의 곱이나 조합이 예측에 도움 될 때
• 이건 보통 기본 피처들을 만든 후, 그걸 바탕으로 새 조합을 만드는 작업이기 때문에 뒤에 위치하는 경우가 많음

profile
안녕하세요 백민입니다:)

0개의 댓글