다중선형회귀
다중선형회귀란?
- 두 개 이상의 독립 변수(X1,X2,X3,n..)와 하나의 종속변수(Y)간의 관계를 모델링.

회귀식
- Y = β0 + β1X1 + β2X2 + ... + βnXn
특징
- 여러 독립 변수의 변화를 고려, 종속 변수를 설명하고 예측.
- 종속변수에 영향을 미치는 여러 독립변수가 있을 때 사용.
- 여러 변수의 영향을 동시에 분석
- 변수들 간의 다중공선성 문제가 발생
다중공선성이란?
- 다중공선성(Multicollinearity)은 회귀분석에서 독립 변수들 간에 높은 상관관계가 있는 경우
- 이는 회귀분석 모델의 성능과 해석에 여러 문제를 일으킴.
- 독립 변수들이 서로 강하게 상관되어 있으면, 걱 변수의 개별적인 효과를 분리해내기 어려워져 회귀의 해석을 어렵게 함.
- 다중공선성으로 인해 중요한 변수가 통계적으로 유의하지 않게 나타날 수 있음.
- 진단하는 방법?
- 가장 간단한 방법으로 상관계수를 계산, 상관계수가 높은(0.07) 변수들이 있는지 확인해 볼 수 있음.
- 더 정확한 방법으로 분산 팽창 계수(VIF)를 계산하여 VIF값이 10이 높은지 확인하여 다중공선성이 높다고 판단함.
- 다중공선성 해결 방법
- 가장 간단한 방법은 높은 게수를 가진 변수 중 하나를 제거
- 주성분 분석(PCA)과 같은 변수들을 효과적으로 줄이는 차원 분석 방법을 적용해 해결할 수도 있다.
다중선형회귀는 언제 사용하나
두개 이상의 독립 변수와 종속변수와의 관계를 분석 및 예측
- 다양한 광고비(TV,Radio, Newspaper)과 매출 간의 관계 분석.
- 현재의 광고비(TV,Radio, Newspaper)를 바탕으로 예상되는 매출 분석 가능.
data = {'TV': np.random.rand(100) * 100,
'Radio': np.random.rand(100) * 50,
'Newspaper': np.random.rand(100) * 30,
'Sales': np.random.rand(100) * 100}
df = pd.DataFrame(data)
X = df[['TV', 'Radio', 'Newspaper']]
y = df['Sales']
X_train, X_test, y_train, y_test = train_test_split(X, y,test_size=0.2,
random_state=42)
model = LinearRegression()
model.fit(X_train, y_train)
y_pred = model.predict(X_test)
print("회귀 계수:", model.coef_)
print("절편:", model.intercept_)
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print("평균 제곱 오차(MSE):", mse)
print("결정 계수(R2):", r2)
