Devxplorer – 세상을 분석하는 개발자의 탐험기

IT, 경제, 인물, 건강 – All Explored

Devxplorere 자세히보기

IT (IT)🤖🧠/AI

머신러닝 회귀 알고리즘 완전 정리: 선형, 로지스틱, 다항, 다중, K-NN까지 한눈에

데브엑스플로러 2025. 4. 3. 13:11
728x90
반응형

머신러닝에서 회귀 알고리즘은 가장 기본이면서도 가장 널리 사용되는 모델이다. 이 글에서는 대표적인 회귀 알고리즘 5가지에 대해 개념, 수학식, 실생활 예제, Python 코드, 장단점을 정리한다.


1. K-최근접 이웃 (K-Nearest Neighbors, K-NN)

K-NN은 주변에 있는 K개의 데이터를 찾아 그 평균 또는 다수결로 결과를 예측한다. 직관적인 알고리즘으로, 데이터의 패턴이 명확할 때 효과적이다.

✔️ 수학식

새로운 데이터 xx에 대해, 가장 가까운 KK개의 샘플의 평균으로 예측:

✔️ 실생활 예제

  • 추천 시스템: 비슷한 사용자가 좋아한 영화를 추천
  • 부동산 가격 예측: 주변 유사 매물 기준 가격 산정

✔️ Python 예제

from sklearn.neighbors import KNeighborsRegressor
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split

X, y = load_boston(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)

model = KNeighborsRegressor(n_neighbors=5)
model.fit(X_train, y_train)
print(model.score(X_test, y_test))

2. 선형 회귀 (Linear Regression)

입력값과 출력값 사이가 직선 관계일 때 가장 잘 작동하는 기본 회귀 알고리즘이다.

✔️ 수학식

입력 xx와 출력 yy의 선형 관계:

✔️ 실생활 예제

  • 광고비와 매출 예측: 광고 지출이 증가할수록 매출이 선형적으로 증가하는 경우
  • 시간에 따른 온도 변화: 일정한 경향이 있을 때

✔️ Python 예제

from sklearn.linear_model import LinearRegression
from sklearn.datasets import make_regression
from sklearn.model_selection import train_test_split

X, y = make_regression(n_samples=100, n_features=1, noise=10, random_state=1)
X_train, X_test, y_train, y_test = train_test_split(X, y)

model = LinearRegression()
model.fit(X_train, y_train)
print(model.score(X_test, y_test))

3. 로지스틱 회귀 (Logistic Regression)

이진 분류 문제에 사용하는 알고리즘으로, 특정 사건이 발생할 확률을 예측한다.

✔️ 수학식

선형 결과를 시그모이드 함수에 넣어 확률로 변환:

결정 기준은 보통 0.5를 기준으로 한다.

✔️ 실생활 예제

  • 이메일 스팸 필터링: 스팸일 확률 예측
  • 고객 이탈 예측: 이탈 여부를 확률로 판단

✔️ Python 예제

from sklearn.linear_model import LogisticRegression
from sklearn.datasets import load_breast_cancer
from sklearn.model_selection import train_test_split

X, y = load_breast_cancer(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=42)

model = LogisticRegression(max_iter=10000)
model.fit(X_train, y_train)
print(model.score(X_test, y_test))

4. 다항 회귀 (Polynomial Regression)

데이터가 곡선 형태를 따를 때 사용하는 회귀 방식으로, 비선형 패턴을 설명할 수 있다.

✔️ 수학식

입력 xx에 대해 고차항을 포함한 회귀식:

이 수식은 곡선 형태의 데이터를 학습할 수 있게 해준다.

✔️ 실생활 예제

  • 자동차 속도와 제동 거리 관계: 제곱에 비례해 증가
  • 전력 사용량 예측: 날씨와 사용량 간 비선형 관계

✔️ Python 예제

from sklearn.linear_model import LinearRegression
from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import make_pipeline
import numpy as np

X = np.arange(10).reshape(-1, 1)
y = X.flatten() ** 2 + 3 * X.flatten() + 5

model = make_pipeline(PolynomialFeatures(degree=2), LinearRegression())
model.fit(X, y)
print(model.predict([[5]]))

5. 다중 회귀 (Multiple Linear Regression)

하나의 결과값을 여러 변수로 예측할 때 사용하는 방식이다. 현실 세계의 대부분 문제는 이와 유사하다.

✔️ 수학식

✔️ 실생활 예제

  • 집값 예측: 면적, 방 개수, 위치 등 다양한 요인 고려
  • 학생 성적 예측: 출석률, 공부 시간, 수면 시간 등

✔️ Python 예제

from sklearn.linear_model import LinearRegression
from sklearn.datasets import load_diabetes
from sklearn.model_selection import train_test_split

X, y = load_diabetes(return_X_y=True)
X_train, X_test, y_train, y_test = train_test_split(X, y, random_state=0)

model = LinearRegression()
model.fit(X_train, y_train)
print(model.score(X_test, y_test))

✅ 알고리즘별 장단점 요약

알고리즘장점단점
K-NN 이해 쉬움, 성능 괜찮음 속도 느림, 고차원에 약함
선형 회귀 해석 용이, 빠름 이상치에 민감, 비선형 관계 처리 못함
로지스틱 회귀 확률 예측, 단순함 복잡한 분류에 부적합
다항 회귀 비선형 데이터 대응 차수 높으면 과적합 위험
다중 회귀 현실 문제 반영에 적합 변수 간 다중공선성 위험

마무리

머신러닝 회귀 알고리즘은 각각의 특성에 따라 적절히 적용할 때 큰 효과를 발휘한다. 단순한 분석부터 복잡한 예측까지, 목적에 맞는 알고리즘을 선택하고 실습해보는 것이 중요하다. 위에 소개한 예제 코드를 직접 실행해보면서 차이를 체감해보는 것도 추천한다.

반응형