✅ 오늘 한 것
머신러닝 기초, 스탠다드
✏️ 오늘 배운 점
실무에 바로 쓰는 머신러닝 기초
1-4. 회귀 분석
1. 회귀분석
회귀분석이란?
- 종속변수(Y)와 하나 이상의 독립변수(X) 간의 관계를 추정하여 연속형 종속변수를 예측하는 통계/머신러닝 기법
- 지도학습에서의 분류(Classification)와 회귀(Regression)의 차이
- 분류: 결과값이 이산형(클래스 라벨)
- 회귀: 결과값이 연속형(숫자 값)
회귀모델을 사용하는 이유
- 미래 값 예측: 판매량, 주가, 온도 등 실수값 예측에 사용
- 인과 관계 해석(통계적 관점): 특정 독립변수가 종속변수에 미치는 영향력을 해석하기 위해
- 데이터 기반 의사결정: 추세(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)
스탠다드
이상치 탐지 유형
- Point Anomalies (포인트 이상치)
- 정의
- 단일 센서 값 또는 측정값이 다른 정상 데이터와 비교했을 때 급격히 벗어난 경우
즉, 오직 하나의 데이터에만 이상이 발생한 것
- 단일 센서 값 또는 측정값이 다른 정상 데이터와 비교했을 때 급격히 벗어난 경우
- 정의
- Contextual Anomalies (문맥적 이상치)
- 정의
- 값 자체는 정상 범위에 있지만 특정 조건이나 문맥에서 비정상적인 경우
즉, 데이터의 맥락(Contextual)을 고려했을 때 생긴 이상이 발생한 것
- 값 자체는 정상 범위에 있지만 특정 조건이나 문맥에서 비정상적인 경우
- 정의
- Collective Anomalies (집단적 이상치)
- 정의
- 개별 값들은 정상 범위 내에 있지만 여러 값이 특정한 패턴을 이루며 비정상적인 경우
즉, 복수의 데이터 포인터들에게서 이상이 발생한 것 (연속적)
- 개별 값들은 정상 범위 내에 있지만 여러 값이 특정한 패턴을 이루며 비정상적인 경우
- 정의
이상치 탐지에서 주의할 점
- 다변수 시계열 데이터를 그룹화해야 하는 이유
- 모든 변수를 하나의 그룹으로 처리한다면 어느 부분에서 문제가 발생했는지 알 수가 없어 대응이 어려움.
- 변수들을 유사한 그룹으로 나누어 독립적인 이상 감지 모델을 운영한다면 각 그룹에서 이상 감지가 발생하면 바로 인지하고 대응이 가능
- 이상 감지의 정확도 향상 -> 서로 다른 패턴을 가진 변수들을 하나의 모델에서 학습하는 것이 아니라 유사한 변수끼리 학습하므로 모델이 더 잘 학습할 수 있음.
- 문제 발생 시 즉각적인 원인 분석 가능 -> 특정 그룹에서 이상 발생 시 해당 시스템의 문제임을 빠르게 판단 가능.
- 운영 및 유지보수 용이 -> 한 그룹의 모델을 수정해도 다른 그룹에는 영향을 미치지 않음.
- 실제 운영에서 그룹을 나누는 것이 중요한 이유
- 다변수 시계열 데이터에서는 일부 변수들 간에 서로 연관이 깊고 유사한 움직임을 보이는 변수들이 존재함.
- 서로 밀접한 관계가 있는 변수들을 같은 그룹으로 묶고, 독립적으로 학습하는 것이 바람직.
- 다변수 시계열 이상 감지 시스템 구축 방법
- 변수 그룹화
- 도메인 지식을 활용하여 유사한 변수들을 그룹으로 묶음.
- 각 그룹별 독립적인 이상 감지 모델 구축
- 각 그룹에 맞는 이상 감지 모델을 개별적으로 학습 (Isolation Forest 등).
- 그룹별 데이터의 특성을 반영하여 최적화.
- 이상 감지 후 세부적인 원인 분석 가능하도록 설계
- 어느 그룹에서 이상이 발생하였는지 즉각적인 확인이 가능하도록 설계
- 운영 및 유지보수의 용이성 확보
- 특정 그룹의 데이터 특성이 변경되더라도 다른 그룹의 모델에는 영향을 주지 않음.
- 유지보수 및 개선이 더 쉬워짐.
- 변수 그룹화
그룹 기반 이상 감지 시스템은 필수적이다.
- 유사한 변수들끼리 그룹을 묶어 각각의 독립적인 모델을 운영하면 정확한 감지 및 빠른 대응 가능
- 각 그룹의 변수 특성을 반영한 모델 학습이 가능하여 이상 탐지의 성능이 향상됨.
- 운영 및 유지보수가 용이하며 실시간 대응이 수월해짐.
--> 다변수 시계열 데이터의 이상 감지에는 "변수 그룹화 및 독립 모델 운영"이 핵심 전략
이상치 모델
- Elliptic Envelope (타원형 경계 기반 이상치 탐지)
- 개념
- 데이터가 정규 분포를 따른다고 가정, 타원형 경계를 생성하여 이상치 탐지
- 다변수 데이터에서 중심에서 멀리 떨어진 데이터를 이상치로 간주

- 특징
- 통계적 접근법: 데이터의 평균과 공분산을 기반으로 이상 탐지
- 정규 분포 가정: 데이터가 정규 분포를 따를 때 효과적
- 고속 연산 가능: 다른 이상치 탐지 알고리즘보다 빠르게 동작
- 선형적인 경계: 이상치를 결정하는 기준이 타원형 경계로 단순함.
- 개념
- Isolation Forest (격리 기반 이상치 탐지)
- 개념
- 트리 구조를 사용하여 데이터를 무작위로 분할하며 이상치는 정상 데이터보다 더 빠르게 격리되는 특성을 이용한 방법
- 이상치는 다른 데이터보다 고립되기 쉬우므로 이상으로 판단

- 특징
- 비지도 학습
- 빠른 연산 속도
- 정규 분포가 아닌 데이터에도 적합
- 고차원 데이터에서도 효과적
- 개념
- Local Outlier Factor (LOF, 지역적 밀도 기반 이상치 탐지)
- 개념
- 데이터의 밀도를 계산하여 이웃 데이터들과의 상대적인 차이를 분석(KNN)하여 이상치를 탐지하는 방법.
- 이상치의 특징: 주변 밀도가 낮고, 정상 데이터와의 밀도 차이가 클 경우 이상치로 판별.

- 특징
- 밀도 기반 이상치 탐지 -> 데이터 분포가 균일하지 않아도 탐지 가능
- 지역적(Local) 패턴을 반영 -> 특정 영역에서의 이상치 감지 가능
- 비정규 분포 데이터에서도 효과적
- 개념
✏️ 오늘의 질문
1. 앙상블 기법은 항상 선형 회귀보다 좋은가?
대부분의 경우에 앙상블 기법이 예측 성능이 좋지만 데이터의 규모나 특징, 문제의 복잡도에 따라 다르다.
또한, 하이퍼파라미터 튜닝이 까다롭고 계산 비용이 큰 단점이 있기에 상황에 맞춰 선택한다.
2. Lasso와 Ridge 중 어느 규제 기법을 사용해야 하는가?
Lasso: 변수 선택(가중치를 0으로 만들어 불필요한 변수 제거)에 유리
Ridge: 모든 가중치를 부드럽게 줄여 모델 안정성을 높이는 데 유리
📌추가로 해야 할 점
머신러닝 기초, 베이직, AI 서비스 개발
'품질관리(QAQC) 데이터 부트캠프(본캠프)' 카테고리의 다른 글
| 본캠프_15주차(화)_TIL(앙상블 기법, 베이직, 스탠다드) (0) | 2025.12.23 |
|---|---|
| 본캠프_15주차(월)_TIL(분류, 베이직) (0) | 2025.12.22 |
| 본캠프_14주차(목)_TIL(머신러닝 기초) (0) | 2025.12.18 |
| 본캠프_14주차(수)_TIL(실전 프로젝트) (0) | 2025.12.17 |
| 본캠프_14주차(화)_TIL(실전 프로젝트) (0) | 2025.12.16 |