품질관리(QAQC) 데이터 부트캠프(본캠프)

본캠프_14주차(금)_TIL(회귀, 스탠다드)

Wat_zy 2025. 12. 19. 08:38

✅ 오늘 한 것

머신러닝 기초, 스탠다드


✏️ 오늘 배운 점

실무에 바로 쓰는 머신러닝 기초

1-4. 회귀 분석

1. 회귀분석

회귀분석이란? 

  • 종속변수(Y)와 하나 이상의 독립변수(X) 간의 관계를 추정하여 연속형 종속변수를 예측하는 통계/머신러닝 기법
  • 지도학습에서의 분류(Classification)와 회귀(Regression)의 차이
    • 분류: 결과값이 이산형(클래스 라벨)
    • 회귀: 결과값이 연속형(숫자 값)

회귀모델을 사용하는 이유

  1. 미래 값 예측: 판매량, 주가, 온도 등 실수값 예측에 사용
  2. 인과 관계 해석(통계적 관점): 특정 독립변수가 종속변수에 미치는 영향력을 해석하기 위해
  3. 데이터 기반 의사결정: 추세(Trend) 파악, 자원 배분 등

2. 선형 회귀(Linear Regression)

개념

  • 가정
    • 독립변수(X)와 종속변수(Y)가 선형적(일차 방정식 형태)으로 관계를 맺고 있다고 가정
  • 회귀식
    •  
    • β0: 절편(intercept)
    • βi: 각 독립변수의 회귀계수(coefficient)
  • 장점
    • 해석이 간단, 구현이 쉬움
  • 단점
    • 데이터가 선형성이 아닐 경우 예측력이 떨어짐
import pandas as pd
import numpy as np
from sklearn.linear_model import LinearRegression, SGDRegressor
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error, r2_score

# LinearRegression(정규 방정식)
X = df.drop('타겟 변수', axis=1)
y = df['타겟 변수']

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state=42)

linear = LinearRegression()
linear.fit(X_train, y_train)

y_pred = linear.predict(X_test)

mse_lin = mean_squared_error(y_test, y_pred)
r2_lin = r2_score(y_test, y_pred)

# SGDRegressor(경사 하강법)
sgd_reg = SGDRegressor(max_iter=6000, random_state=42)
sgd_reg.fit(X_train, y_train)

y_pred = sgd_reg.predict(X_test)

mse_sgd = mean_squared_error(y_test, y_pred)
r2_sgd = r2_score(y_test, y_pred)

 

3. 다항 회귀(Polynomial Regression)

개념

  • 비선형적인 관계를 다항식 형태로 모델링
  • n차 다항식(n≥2)
  • 단순 선형항(X)뿐만 아니라 X2, X3,... 같은 고차항을 추가해 비선형 패턴을 학습할 수 있음

주의점

  • 고차항을 무작정 늘리면 훈련 데이터에 과도하게 맞춰져 과적합(overfitting) 문제가 발생할 수 있음
  • 모델 복잡도와 일반화 성능 간의 균형을 맞춰야 함
import pandas as pd
import numpy as np
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
from sklearn.pipeline import Pipeline

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

lin_reg = LinearRegression()
lin_reg.fit(X_train, y_train)
y_pred = lin_reg.predict(X_test)

mse_lin = mean_squared_error(y_test, y_pred)
r2_lin = r2_score(y_test, y_pred)

poly_model = Pipeline([
    ("poly", PolynomialFeatures(degree=2, include_bias=False)),
    ("lin_reg", LinearRegression())
])
poly_model.fit(X_train, y_train)
y_pred = poly_model.predict(X_test)

 

4. 회귀 모델 평가 방법

MSE(Mean Squared Error)

  • 예측값과 실제값의 차이를 제곱하여 평균
  • 오차가 클수록 제곱에 의해 더 큰 벌점이 매겨지므로 큰 오차에 특히 민감

MAE(Mean Absolute Error)

  • 예측값과 실제값의 차이를 절댓값으로 측정한 후 평균
  • 예측이 평균적으로 실제값에서 얼마나 벗어났는지 직관적으로 표현

RMSE(Root Mean Squared Error)

  • MAE와 달리 제곱을 통해 큰 오차에 가중치를 더 주는 특징
  • 오차가 클수록 패널티가 커지므로 큰 오차가 중요한 문제에서 자주 사용

R2(결정 계수)

  • 값의 범위
    • 0 ~ 1 
  • 해석
    • 1에 가까울수록 학습된 모델이 데이터를 잘 설명한다고 봄
    • 0이라면 모델이 종속변수를 전혀 설명하지 못한다는 의미

 

5. 고급 회귀 기법 - Lasso & Ridge Regression

Ridge(릿지) 회귀

  • 가중치 제곱합(L2 Norm)을 페널티로 추가
  • 효과: 가중치가 너무 커지지 않도록 방지(가중치 값을 부드럽게 줄임)

Lasso(라쏘) 회귀

  • 가중치 절대값합(L1 Norm)을 페널티로 추가
  • 효과: 가중치를 0으로 만들어 변수 선택(Feature Selection) 효과
import pandas as pd
import numpy as np
from sklearn.datasets import fetch_california_housing
from sklearn.model_selection import train_test_split
from sklearn.linear_model import Ridge, Lasso
from sklearn.metrics import mean_squared_error, r2_score

X = 타겟을 제외한 변수
y = 타겟 변수

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

ridge_reg = Ridge(alpha=1.0, random_state=42)
ridge_reg.fit(X_train, y_train)

y_pred = ridge_reg.predict(X_test)

mse_ridge = mean_squared_error(y_test, y_pred)
r2_ridge = r2_score(y_test, y_pred)

lasso_reg = Lasso(alpha=1.0, random_state=42, max_iter=10000)
lasso_reg.fit(X_train, y_train)

y_pred = lasso_reg.predict(X_test)

mse_lasso = mean_squared_error(y_test, y_pred)
r2_lasso = r2_score(y_test, y_pred)

스탠다드

이상치 탐지 유형

  1. Point Anomalies (포인트 이상치)
    • 정의
      • 단일 센서 값 또는 측정값이 다른 정상 데이터와 비교했을 때 급격히 벗어난 경우
        즉, 오직 하나의 데이터에만 이상이 발생한 것
  2. Contextual Anomalies (문맥적 이상치)
    • 정의
      • 값 자체는 정상 범위에 있지만 특정 조건이나 문맥에서 비정상적인 경우
        즉, 데이터의 맥락(Contextual)을 고려했을 때 생긴 이상이 발생한 것
  3. Collective Anomalies (집단적 이상치)
    • 정의
      • 개별 값들은 정상 범위 내에 있지만 여러 값이 특정한 패턴을 이루며 비정상적인 경우
        즉, 복수의 데이터 포인터들에게서 이상이 발생한 것 (연속적)

 

이상치 탐지에서 주의할 점

  1. 다변수 시계열 데이터를 그룹화해야 하는 이유
    • 모든 변수를 하나의 그룹으로 처리한다면 어느 부분에서 문제가 발생했는지 알 수가 없어 대응이 어려움.
    • 변수들을 유사한 그룹으로 나누어 독립적인 이상 감지 모델을 운영한다면 각 그룹에서 이상 감지가 발생하면 바로 인지하고 대응이 가능
    • 이상 감지의 정확도 향상 -> 서로 다른 패턴을 가진 변수들을 하나의 모델에서 학습하는 것이 아니라 유사한 변수끼리 학습하므로 모델이 더 잘 학습할 수 있음.
    • 문제 발생 시 즉각적인 원인 분석 가능 -> 특정 그룹에서 이상 발생 시 해당 시스템의 문제임을 빠르게 판단 가능.
    • 운영 및 유지보수 용이 -> 한 그룹의 모델을 수정해도 다른 그룹에는 영향을 미치지 않음.
  2. 실제 운영에서 그룹을 나누는 것이 중요한 이유
    • 다변수 시계열 데이터에서는 일부 변수들 간에 서로 연관이 깊고 유사한 움직임을 보이는 변수들이 존재함.
    • 서로 밀접한 관계가 있는 변수들을 같은 그룹으로 묶고, 독립적으로 학습하는 것이 바람직.
  3. 다변수 시계열 이상 감지 시스템 구축 방법
    1. 변수 그룹화
      • 도메인 지식을 활용하여 유사한 변수들을 그룹으로 묶음.
    2. 각 그룹별 독립적인 이상 감지 모델 구축
      • 각 그룹에 맞는 이상 감지 모델을 개별적으로 학습 (Isolation Forest 등).
      • 그룹별 데이터의 특성을 반영하여 최적화.
    3. 이상 감지 후 세부적인 원인 분석 가능하도록 설계
      • 어느 그룹에서 이상이 발생하였는지 즉각적인 확인이 가능하도록 설계
    4. 운영 및 유지보수의 용이성 확보
      • 특정 그룹의 데이터 특성이 변경되더라도 다른 그룹의 모델에는 영향을 주지 않음. 
      • 유지보수 및 개선이 더 쉬워짐.

그룹 기반 이상 감지 시스템은 필수적이다.

  • 유사한 변수들끼리 그룹을 묶어 각각의 독립적인 모델을 운영하면 정확한 감지 및 빠른 대응 가능
  • 각 그룹의 변수 특성을 반영한 모델 학습이 가능하여 이상 탐지의 성능이 향상됨.
  • 운영 및 유지보수가 용이하며 실시간 대응이 수월해짐.

--> 다변수 시계열 데이터의 이상 감지에는 "변수 그룹화 및 독립 모델 운영"이 핵심 전략

 

이상치 모델

  1. Elliptic Envelope (타원형 경계 기반 이상치 탐지)
    • 개념
      • 데이터가 정규 분포를 따른다고 가정, 타원형 경계를 생성하여 이상치 탐지
      • 다변수 데이터에서 중심에서 멀리 떨어진 데이터를 이상치로 간주
    • 특징
      • 통계적 접근법: 데이터의 평균과 공분산을 기반으로 이상 탐지
      • 정규 분포 가정: 데이터가 정규 분포를 따를 때 효과적 
      • 고속 연산 가능: 다른 이상치 탐지 알고리즘보다 빠르게 동작
      • 선형적인 경계: 이상치를 결정하는 기준이 타원형 경계로 단순함.
  2. Isolation Forest (격리 기반 이상치 탐지)
    • 개념
      • 트리 구조를 사용하여 데이터를 무작위로 분할하며 이상치는 정상 데이터보다 더 빠르게 격리되는 특성을 이용한 방법
      • 이상치는 다른 데이터보다 고립되기 쉬우므로 이상으로 판단
    • 특징
      • 비지도 학습
      • 빠른 연산 속도
      • 정규 분포가 아닌 데이터에도 적합
      • 고차원 데이터에서도 효과적
  3. Local Outlier Factor (LOF, 지역적 밀도 기반 이상치 탐지)
    • 개념
      • 데이터의 밀도를 계산하여 이웃 데이터들과의 상대적인 차이를 분석(KNN)하여 이상치를 탐지하는 방법.
      • 이상치의 특징: 주변 밀도가 낮고, 정상 데이터와의 밀도 차이가 클 경우 이상치로 판별.
    • 특징
      • 밀도 기반 이상치 탐지 -> 데이터 분포가 균일하지 않아도 탐지 가능
      • 지역적(Local) 패턴을 반영 -> 특정 영역에서의 이상치 감지 가능
      • 비정규 분포 데이터에서도 효과적 

✏️ 오늘의 질문

1. 앙상블 기법은 항상 선형 회귀보다 좋은가?

대부분의 경우에 앙상블 기법이 예측 성능이 좋지만 데이터의 규모나 특징, 문제의 복잡도에 따라 다르다.

또한, 하이퍼파라미터 튜닝이 까다롭고 계산 비용이 큰 단점이 있기에 상황에 맞춰 선택한다.

 

2. Lasso와 Ridge 중 어느 규제 기법을 사용해야 하는가?

Lasso: 변수 선택(가중치를 0으로 만들어 불필요한 변수 제거)에 유리

Ridge: 모든 가중치를 부드럽게 줄여 모델 안정성을 높이는 데 유리


📌추가로 해야 할 점

머신러닝 기초, 베이직, AI 서비스 개발