1 분 소요

[혼공머신]3-3 다중회귀

다중 회귀는 여러 개의 특성을 사용하는 회귀 모델입니다. 단순 회귀가 하나의 특성만을 사용하는 반면, 다중 회귀는 여러 개의 특성을 동시에 고려하여 종속 변수에 대한 예측을 수행합니다. 이는 예측의 정확도를 높일 수 있으며, 다양한 실제 문제에서 유용하게 사용됩니다.

데이터 준비

데이터를 준비하는 과정은 머신러닝 모델의 성능에 큰 영향을 미칩니다. 여기서는 pandas 라이브러리를 사용하여 CSV 파일을 로드하고, 필요한 전처리 과정을 수행합니다.

import pandas as pd

# CSV 파일 로드
data = pd.read_csv('data.csv', sep=',', header=0, skiprows=0, nrows=100)
print(data.head())

위 코드에서는 pandasread_csv 함수를 사용하여 데이터를 로드합니다. sep, header, skiprows, nrows 등의 매개변수를 통해 CSV 파일의 형식에 맞게 데이터를 읽을 수 있습니다.

사이킷런의 변환기

사이킷런의 PolynomialFeatures 변환기를 사용하여 특성 공학을 수행할 수 있습니다. 이를 통해 주어진 특성들을 조합하여 새로운 특성들을 생성할 수 있습니다.

from sklearn.preprocessing import PolynomialFeatures

# 특성 공학
poly = PolynomialFeatures(degree=2, interaction_only=False, include_bias=True)
X_poly = poly.fit_transform(X)
print(X_poly)

여기서 PolynomialFeatures를 사용하여 기존 특성의 2차 항을 포함한 새로운 특성을 생성합니다. degree, interaction_only, include_bias 매개변수를 통해 세부 설정이 가능합니다.

다중회귀 모델 훈련하기

다중회귀 모델을 훈련하는 과정은 간단합니다. scikit-learnLinearRegression 클래스를 사용하여 모델을 훈련합니다.

from sklearn.linear_model import LinearRegression

# 모델 훈련
model = LinearRegression()
model.fit(X_poly, y)

# 예측
y_pred = model.predict(X_poly)

위 코드에서는 LinearRegression 객체를 생성하고 fit 메서드를 사용하여 모델을 훈련합니다. 훈련된 모델을 사용하여 예측을 수행합니다.

규제

규제는 모델의 복잡도를 조절하여 과대적합을 방지하는 방법입니다. 대표적인 규제 기법으로 릿지 회귀와 라쏘 회귀가 있습니다.

릿지 회귀

릿지 회귀는 선형 회귀 모델의 계수를 작게 만들어 과대적합을 완화하는 방법입니다. scikit-learnRidge 클래스를 사용하여 릿지 회귀 모델을 훈련할 수 있습니다.

from sklearn.linear_model import Ridge

# 릿지 회귀 모델 훈련
ridge = Ridge(alpha=1.0, solver='auto', random_state=42)
ridge.fit(X_poly, y)

# 예측
y_pred_ridge = ridge.predict(X_poly)

alpha 매개변수를 통해 규제 강도를 조절할 수 있으며, solverrandom_state를 통해 최적화 방법과 난수 시드값을 설정할 수 있습니다.

라쏘 회귀

라쏘 회귀는 일부 계수를 0으로 만들어 특성 선택의 효과도 제공합니다. scikit-learnLasso 클래스를 사용하여 라쏘 회귀 모델을 훈련할 수 있습니다.

from sklearn.linear_model import Lasso

# 라쏘 회귀 모델 훈련
lasso = Lasso(alpha=1.0, max_iter=1000, random_state=42)
lasso.fit(X_poly, y)

## 예측
y_pred_lasso = lasso.predict(X_poly)

alpharandom_state 매개변수는 릿지와 동일하며, max_iter를 통해 알고리즘의 반복 횟수를 지정할 수 있습니다.

댓글남기기