[혼공머신]3-3 다중회귀
[혼공머신]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())
위 코드에서는 pandas
의 read_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-learn
의 LinearRegression
클래스를 사용하여 모델을 훈련합니다.
from sklearn.linear_model import LinearRegression
# 모델 훈련
model = LinearRegression()
model.fit(X_poly, y)
# 예측
y_pred = model.predict(X_poly)
위 코드에서는 LinearRegression
객체를 생성하고 fit
메서드를 사용하여 모델을 훈련합니다. 훈련된 모델을 사용하여 예측을 수행합니다.
규제
규제는 모델의 복잡도를 조절하여 과대적합을 방지하는 방법입니다. 대표적인 규제 기법으로 릿지 회귀와 라쏘 회귀가 있습니다.
릿지 회귀
릿지 회귀는 선형 회귀 모델의 계수를 작게 만들어 과대적합을 완화하는 방법입니다. scikit-learn
의 Ridge
클래스를 사용하여 릿지 회귀 모델을 훈련할 수 있습니다.
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
매개변수를 통해 규제 강도를 조절할 수 있으며, solver
와 random_state
를 통해 최적화 방법과 난수 시드값을 설정할 수 있습니다.
라쏘 회귀
라쏘 회귀는 일부 계수를 0으로 만들어 특성 선택의 효과도 제공합니다. scikit-learn
의 Lasso
클래스를 사용하여 라쏘 회귀 모델을 훈련할 수 있습니다.
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)
alpha
와 random_state
매개변수는 릿지와 동일하며, max_iter
를 통해 알고리즘의 반복 횟수를 지정할 수 있습니다.
댓글남기기