개발자를 위한 실전 선형대수학(Practical Linear Algebra for Data Science)
11장 최소제곱법 응용: 실제 데이터를 활용한 최소제곱법
날씨에 따른 자전거 대여량 예측
데이터: 서울시 자전거 대여량 - 날씨 데이터 관계
통계 분석을 시작하기 전에, 항상 상관관계 행렬을 검사하는 것이 좋음
미리 선정한 4가지 변수의 상관관계를 확인함
## plot some results.
# predicted data
yHat = desmat@beta[0]
# model fit to data (R^2)
modelfit = np.corrcoef(y.T,yHat.T)[0,1]**2
# and plot
plt.figure(figsize=(10,6))
plt.plot(y[desmat[:,1]==0],yHat[desmat[:,1]==0],'o',markerfacecolor=(0,0,0,.1),markeredgecolor=(0,0,0,.9),label='Winter')
plt.plot(y[desmat[:,1]==1],yHat[desmat[:,1]==1],'s',markerfacecolor=(1,0,0,.1),markeredgecolor=(1,0,0,.6),label='Summer')
plt.legend()
plt.xlabel('Observed bike counts')
plt.ylabel('Predicted bike counts')
plt.title(f'Model fit ($R^2$): {modelfit:.3f}')
plt.savefig('Figure_11_04.png',dpi=300)
plt.show()
import statsmodels.api as sm
# extract data (staying with pandas dataframes)
desmat_df = data[['Rainfall(mm)','Seasons']]
obsdata_df = data['Rented Bike Count']
# create and fit the model
desmat_df = sm.add_constant(desmat_df) # must explicitly add an intercept (constant)
model = sm.OLS(obsdata_df,desmat_df).fit()
print( model.summary() )
다중공선성
다중공선성: 다중 회귀 모델에서 하나의 독립변수가 다른 독립변수로부터 상당한 정확도로 예측될 수 있는 것
이는 설계 행렬 내부에 선형 종속성이 있음을 의미함 (= 선형대수학의 관점에서 )
정규화(regularization)
- 통계 모델을 수정하는 다양한 방법을 총칭하는 포괄적인 용어
특이 행렬 또는 나쁜 상태의 행렬을 최대계수로 변환, 과적합을 줄여 일반화 가능성을 개선
(릿지, 라쏘 등등)
$$\beta = (X^T X + \gamma ||X||^2_F I)^{-1} X^T y$$
핵심 매개변수는 정규화의 양을 결정하는 $\gamma$
'Datascience > Linear Algebra' 카테고리의 다른 글
12장 고윳값 분해: 선형대수학의 진주 (0) | 2024.02.10 |
---|---|
[개발자를 위한 실전 선형대수학] 10장 일반 선형 모델 및 최소제곱법 (0) | 2024.02.06 |
[개발자를 위한 실전 선형대수학] 9장 행 축소와 LU 분해 (0) | 2024.01.28 |
[개발자를 위한 실전 선형대수학] 직교 행렬과 QR 분해 (0) | 2024.01.27 |
[개발자를 위한 실전 선형대수학] 역행렬 (0) | 2024.01.27 |