회귀모델과 예측변수 수의 관계
- 어떤 회귀분석 문제에서는 많은 변수를 예측변수로 사용할 수 있다.
- 예를 들어 주택 가치를 예측하기 위해 지하실 크기나 건축 연도와 같은 변수를 추가로 사용할 수 있다.
- R에서는 회귀식에 다음과 같이 쉽게 변수들을 추가할수 있다.
> house_full <- lm(AdjSalePrice ~ SqFtTotLiving + SqFtLot + Bathrooms + Bedrooms + BldgGrade + PropertyType + NbrLivingUnits + SqFtFinBasement + YrBuilt + YrRenovated + NewConstruction, data=house, na.action=na.omit)
- 변수가 많을 수록 더 좋은 회귀모델을 얻는 것은 아니다.
- 오컴의 면도날: 모든 것이 동일한 조건에서는 복잡한 모델보다는 단순한 모델을 우선 사용해야 한다는 원리
- 변수를 추가하면 항상 RMSE는 감소하고 \(R^2\)는 증가
- AIC(Akaike's informarion criteria) 지표: 회귀모델에 항을 추가할 수록 불이익을 주는 지표
- \(P\): 변수의 개수
- \(n\): 데이터의 개수
\begin{eqnarray}\mathop{\textrm{AIC}} = 2P + n\log \Bigg(\frac{\mathop{\textrm{RSS}}}{n}\Bigg)\end{eqnarray}
- AIC의 값이 최소가 되는 모델을 찾아야 한다!
- \(k\)개의 변수를 추가하면 \(2k\)만큼의 불이익을 받는다
AIC가 최소가 되는 모델 찾는 방법
- 부분집합회귀(all subset regression): 모든 가능한 모델을 검색하는 방법
- 변수의 모든 조합으로 구성된 회귀모델을 전부 만들어 비교해야 하므로 계산비용이 많음
- 데이터와 예측변수가 많은 경우에 적합하지 않음
- 단계적회귀(stppwise regression): 예측변수를 연속적으로 추가/삭제하면서 AIC가 낮아지는 모델을 찾는 방법
- R의 MASS 패키지는 단계적 회귀함수 stepAIC를 제공
> install.packages("MASS") > library("MASS") > step <- stepAIC(house_full, direction="both") Start: AIC=671316 AdjSalePrice ~ SqFtTotLiving + SqFtLot + Bathrooms + Bedrooms + BldgGrade + PropertyType + NbrLivingUnits + SqFtFinBasement + YrBuilt + YrRenovated + NewConstruction Df Sum of Sq RSS AIC - NbrLivingUnits 1 3.6803e+09 1.6030e+15 671314 - YrRenovated 1 1.2789e+10 1.6030e+15 671314 - SqFtLot 1 2.5471e+10 1.6030e+15 671314 - NewConstruction 1 7.1632e+10 1.6030e+15 671315 <none> 1.6030e+15 671316 - SqFtFinBasement 1 2.8579e+11 1.6033e+15 671319 - PropertyType 2 7.8637e+12 1.6108e+15 671444 - Bathrooms 1 1.0095e+13 1.6131e+15 671484 - Bedrooms 1 2.9035e+13 1.6320e+15 671800 - SqFtTotLiving 1 1.4207e+14 1.7450e+15 673612 - YrBuilt 1 1.4711e+14 1.7501e+15 673690 - BldgGrade 1 2.3338e+14 1.8364e+15 674993 Step: AIC=671314.1 AdjSalePrice ~ SqFtTotLiving + SqFtLot + Bathrooms + Bedrooms + BldgGrade + PropertyType + SqFtFinBasement + YrBuilt + YrRenovated + NewConstruction Df Sum of Sq RSS AIC - YrRenovated 1 1.2524e+10 1.6030e+15 671312 - SqFtLot 1 2.5211e+10 1.6030e+15 671313 - NewConstruction 1 7.2192e+10 1.6031e+15 671313 <none> 1.6030e+15 671314 + NbrLivingUnits 1 3.6803e+09 1.6030e+15 671316 - SqFtFinBasement 1 2.8911e+11 1.6033e+15 671317 - PropertyType 2 7.8769e+12 1.6109e+15 671443 - Bathrooms 1 1.0152e+13 1.6131e+15 671483 - Bedrooms 1 2.9229e+13 1.6322e+15 671801 - SqFtTotLiving 1 1.4222e+14 1.7452e+15 673613 - YrBuilt 1 1.4802e+14 1.7510e+15 673702 - BldgGrade 1 2.3544e+14 1.8384e+15 675021 Step: AIC=671312.3 AdjSalePrice ~ SqFtTotLiving + SqFtLot + Bathrooms + Bedrooms + BldgGrade + PropertyType + SqFtFinBasement + YrBuilt + NewConstruction Df Sum of Sq RSS AIC - SqFtLot 1 2.5083e+10 1.6030e+15 671311 - NewConstruction 1 7.1293e+10 1.6031e+15 671311 <none> 1.6030e+15 671312 + YrRenovated 1 1.2524e+10 1.6030e+15 671314 + NbrLivingUnits 1 3.4152e+09 1.6030e+15 671314 - SqFtFinBasement 1 2.9330e+11 1.6033e+15 671315 - PropertyType 2 7.8650e+12 1.6109e+15 671441 - Bathrooms 1 1.0238e+13 1.6132e+15 671483 - Bedrooms 1 2.9219e+13 1.6322e+15 671799 - SqFtTotLiving 1 1.4221e+14 1.7452e+15 673611 - YrBuilt 1 1.6196e+14 1.7650e+15 673915 - BldgGrade 1 2.3548e+14 1.8385e+15 675020 Step: AIC=671310.7 AdjSalePrice ~ SqFtTotLiving + Bathrooms + Bedrooms + BldgGrade + PropertyType + SqFtFinBasement + YrBuilt + NewConstruction Df Sum of Sq RSS AIC - NewConstruction 1 6.3500e+10 1.6031e+15 671310 <none> 1.6030e+15 671311 + SqFtLot 1 2.5083e+10 1.6030e+15 671312 + YrRenovated 1 1.2396e+10 1.6030e+15 671313 + NbrLivingUnits 1 3.1669e+09 1.6030e+15 671313 - SqFtFinBasement 1 2.8652e+11 1.6033e+15 671314 - PropertyType 2 7.8468e+12 1.6109e+15 671439 - Bathrooms 1 1.0215e+13 1.6132e+15 671481 - Bedrooms 1 2.9451e+13 1.6325e+15 671801 - SqFtTotLiving 1 1.4593e+14 1.7490e+15 673667 - YrBuilt 1 1.6199e+14 1.7650e+15 673914 - BldgGrade 1 2.3547e+14 1.8385e+15 675018 Step: AIC=671309.8 AdjSalePrice ~ SqFtTotLiving + Bathrooms + Bedrooms + BldgGrade + PropertyType + SqFtFinBasement + YrBuilt Df Sum of Sq RSS AIC <none> 1.6031e+15 671310 + NewConstruction 1 6.3500e+10 1.6030e+15 671311 + SqFtLot 1 1.7290e+10 1.6031e+15 671311 + YrRenovated 1 1.1567e+10 1.6031e+15 671312 + NbrLivingUnits 1 3.7093e+09 1.6031e+15 671312 - SqFtFinBasement 1 2.6805e+11 1.6033e+15 671312 - PropertyType 2 8.5458e+12 1.6116e+15 671450 - Bathrooms 1 1.0235e+13 1.6133e+15 671480 - Bedrooms 1 2.9483e+13 1.6326e+15 671801 - SqFtTotLiving 1 1.4722e+14 1.7503e+15 673686 - YrBuilt 1 1.7535e+14 1.7784e+15 674117 - BldgGrade 1 2.3572e+14 1.8388e+15 675020
- 함수 실행 결과 house full에서 'NewConstruction'과 'SqFtlot', 'YrRenovated', 'NbrlivingUnits' 4개 변수가 삭제된 모델이 만들어졌다.
> step
Call:
lm(formula = AdjSalePrice ~ SqFtTotLiving + Bathrooms + Bedrooms +
BldgGrade + PropertyType + SqFtFinBasement + YrBuilt, data = house,
na.action = na.omit)
Coefficients:
(Intercept) SqFtTotLiving Bathrooms Bedrooms
6227632.22 186.50 44721.72 -49807.18
BldgGrade PropertyTypeSingle Family PropertyTypeTownhouse SqFtFinBasement
139179.23 23328.69 92216.25 9.04
YrBuilt
-3592.47
- 전진선택법(forward selection method): 예측변수 없이 시작해서 각 단계에서 \(R^2\)에 가장 큰 기여도를 갖는 예측변수를 하나씩 추가하고 기여도가 통계적으로 더 이상 의미가 없을 때 중지
- 후진선택법(backward selection method) 또는 후진제거법(backward elimination method): 전체 변수를 다 사용하는 회귀모델에서 모든 예측변수가 통계적으로 의미를 갖는 모델이 될 때까지 통계적으로 의미가 없는 예측변수를 제거
벌점회귀
- 벌점회귀(penalized rcgression): AIC와 비슷한 개념
- 모델 회귀식에 많은 변수(파라미터)가 모델에 불이익을 주는제약조건을 추가
- 단계적, 전진선택, 후진선택처럼 예측변수를 완전히 제거하는 대신, 벌점회귀에서는 계수 값을 작게하거나 경우에 따라 거의 0으로 만들어 벌점을 적용
- 많이 시용되는 벌점회귀 방법으로는 능선회귀(ridge regression)와 라소회귀(lasso regression)가 있음
과적합
- 단계적 회귀분석과 모든 부분집합회귀는 모델을 평가하고 조정하는 데 표본 데이터를 사용
- 만들어진 회귀모델이 과적합(overfitting)되어 표본 데이터에는 잘 맞지만 새 데이터를 적용할 때에는잘 맞지 않을 수 있음
- 과적합을 방지하기 위해 교차타당성검사를 통해 모델의 유효성을 확인해야 한다
- 선형회귀분석에서는 회귀분석 모델이 단순한 선형 구조를 갖기 때문에 과적합 문제가 크게 발생하지는 않는다
'Predictive Analytics' 카테고리의 다른 글
회귀를 이용한 예측 (0) | 2019.09.26 |
---|---|
가중회귀 (0) | 2019.09.26 |
모델 평가 (0) | 2019.09.24 |
최소제곱법 (0) | 2019.09.24 |
단순선형회귀 (0) | 2019.09.19 |