1) 삭제
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로 만듦(정규분포 가정을 사용하는 알고리즘)
정상 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. 🔗 상관관계 (서로 너무 비슷하면 하나만 남기자!)
ex)
“방이 많으면 집도 크겠지?”
“집이 크면 방도 많겠지?”
→ 같은 말이지?
→ 이런 식으로 비슷한 정보가 두 번 들어가면, 컴퓨터는 헷갈림
→ 그래서 둘 중 하나만 골라서 남기는 게 좋아!
이렇게 비슷한 변수들 중 하나만 남기는 걸 "다중공선성" 문제 해결
🧮 VIF (비슷한 정보인지 숫자로 확인하기)
"Variance Inflation Factor"
이 변수가 다른 변수들이랑 얼마나 겹치냐? 를 숫자로 알려주는 도구
ex)
"VIF = 12" 이러면? → 너무 겹침! → 제거하는 게 좋아
"VIF = 2" 이러면? → 괜찮아! → 그냥 써도 돼
🌳 중요도(Feature Importance)
• 나무(트리) 모델 같은 똑똑한 모델을 잠깐 써보는 거야!
• 모델이 알려줘:
“이 변수는 정말 쓸모 있어요!”
“이건 별로 영향 없어요…”
→ 그래서 중요한 변수만 남기고, 별로인 건 버리는 방법
• 예: 나이 * 운동량 같이 두 변수의 곱이나 조합이 예측에 도움 될 때
• 이건 보통 기본 피처들을 만든 후, 그걸 바탕으로 새 조합을 만드는 작업이기 때문에 뒤에 위치하는 경우가 많음