2024 ADsP 데이터분석 준전문가 시험공부 11일차/20
03 회귀분석 ★★★
1. 회귀분석 개요
(1) 회귀분석의 개념
① 회귀분석 ★★
: 하나 이상의 독립변수(x1, x2, ...)들이 종속변수(y)에 얼마나 영향을 미치는지 추정하는 통계기법
- 기본적으로 변수가 연속형 변수일 때 사용하며, 범주형 변수일 경우 이를 파생변수로 변환하여 사용
- IF 종속변수가 범주형일 경우 로지스틱 회귀분석 사용
- "독립변수와 종속변수 간에 인관관계가 있다!"
=> 독립변수가 원인이 되어 종속변수에 영향을 미친다는 뜻 (= 변수들이 일정한 경향성을 띤다)
- 독립변수 = 원인변수(혹은 설명 변수)
- 종속변수 = 결과변수(혹은 반응 변수)
- 독립변수가 하나면 단순선형회귀분석, 2개 이상이면 다중선형회귀분석으로 분석
② 회귀분석의 종류
종류 | 식 | 모형 |
단순회귀 | ![]() |
1개의 독립변수와 반응변수가 직선(선형) 관계 |
다중회귀 | ![]() |
k개의 독립변수와 반응변수가 선형 관계 |
다항회귀 | ![]() |
k개의 독립변수와 반응변수가 2차함수 이상의 관계 |
비선형회귀 | ![]() |
회귀식이 미지의 모수들과 선형관계가 아닌 경우 (지수함수, 로그함수, 삼각함수 등) |
(2) 회귀분석의 가정 ★★★
선형성 | - 독립변수와 종속변수가 선형적이어야 함 - 예외적으로 2차함수 회귀선을 갖는 다항회귀분석의 경우에는 선형성을 갖지 않아도 됨 - 산점도를 통해 분석하기 전에 변수 사이의 관계를 짐작 가능해 회귀분석 하기 전 상관분석은 거의 필수적으로 수행 |
독립성 | - 단순회귀분석에서는 잔차와 독립변수의 값이 서로 독립 - 독립변수가 여러 개인 다중회귀분석의 경우에는 독립변수들 간에 상관성이 없이 독립 - IF 독립변수들 간에 상관성이 존재하는 경우, 이를 다중공선성이라 하며, 이를 제거하고 회귀분석 수행 |
등분산성 | - 등분산성 : 분산이 같다는 의미(= 잔차들이 고르게 분포하고 있다는 의미) - 잔차의 중심에서 분산이 같아야 함. 등분산성을 불만족 시 회귀선은 어떤 추세를 띠지 못하고 덩어리(뭉친) 모양이 됨 |
정규성 | - 잔차항이 정규분포 형태를 띠는 것을 정규성을 만족한다고 함 - Q-Q Plot에서 잔차가 오른쪽으로 상승하는 형태를 띠면 정규성을 만족한다고 판단 - 정규성을 검증하기 위한 방법으로는 히스토그램, QQ plot을 활용하여 시각적으로 확인 가능 - ex) 샤피로 검정, 앤더슨-달링 검정, 히르케-베라 검정 등 |
- 오차 : 모집단의 데이터를 활용하여 회귀 식을 구한 경우 예측 값과 실제 값의 차이
- 잔차 : 모집단을 특정할 수 없는 경우 모집단의 일부인 표본집단으로 회귀식으로 추정하게 되는데,
이때 표본집단에 의해 추정된 회귀식의 예측 값과 실제 값의 차이
2. 단순선형회귀분석
(1) 회귀계수의 추정
① 단순선형회귀분석
: 독립변수와 종속변수가 1개씩일 때 둘 사이의 인과관계를 분석하는 것. 두 변수의 관계 = 선형
- 최소제곱법을 활용하여 실제 데이터와 오차가 가장 작아지는 직선의 방정식을 찾음
② 최소제곱법으로 회귀계수 추정 ★★★
- 회귀분석 기본 알고리즘 : 최소제곱법을 통해 파라미터를 추정하고 추정된 파라미터를 통해 추세선을 그려 값을 예측하는 것
- 최소제곱법 : 실제 관측치와 추세선에 의해 예측된 점 사이의 거리, 즉 오차를 제곱해 더한 값을 최소화하는 것
(2) 회귀분석모형의 적합성 ★★★
① 회귀분석의 분산분석표
- [단순선형회귀분석의 분산분석표]
요인 | 제곱 합 | 자유도 | 제곱평균 | F |
회귀 | SSR | 1 | MSR = SSR | MSR / MSE |
잔차 | SSE | n - 2 | MSE = SSE / (n - 2) | |
총 | SST = SSR + SSE | n - 1 |
- [다중선형회귀분석의 분산분석표]
요인 | 제곱 합 | 자유도 | 제곱평균 | F |
회귀 | SSR | k | MSR = SSR / k | MSR / MSE |
잔차 | SSE | n - k - 1 | MSE = SSE / (n - k - 2) | |
총 | SST = SSR + SSE | n - 1 |
② 회귀모형의 통계적 유의성 검증 ★★★
- 회귀모형의 귀무가설 : '모든 회귀계수는 0이다', F-검점을 통해 확인
- F-검정은 분산의 차이를 확인 할 때 사용 : 분산의 차이가 크다는 것은 회귀모형에서 회귀계수가 크다는 의미
- F-통계량 즉, F값이 크다는 말은 회귀계수가 크고 가파르다는 말과 같음. = 변수 간에 유의미한 인과관계 존재한다고 봄
==> F값이 크면, F값이 '0'에서 얼마나 가까운지 확률적으로 측정한 값인 P값은 상대적으로 작아짐
(P값은 회귀모형에서 0.05보다 작을 경우 유의미한 인과관계가 있다고 판단하는 중요한 기준이 됨)
③ 회귀계수의 통계적 유의성 검증
- 회귀계수의 유의성은 t-검정을 통해 확인
- t-통계량 : 회귀계수를 표준오차로 나눈 값
- t-통계량이 크다는 것은 분모가 작다는 의미이므로 분모에 해당하는 표준오차가 작다고 볼 수 있음,
반대로 분자인 회귀계수가 분모보다 크다
- t-통계량 ↑ --> 회귀계수 ↑ ==> 유의미한 인과관계 검증! (+P값 ↓)
④ 모형의 설명력 ★★★
- 회귀모형의 설명력이 좋다는 의미는 데이터들의 분포가 회귀선에 밀접하게 분포하고 있다는 의미
- 회귀분석 결과를 분산분석하고, 도출된 결정계수(R^2)로 모형의 설명력 판단
- 결정계수가 1에 가깝다면 데이터들이 회귀선에 매우 밀접하게 분포, 회귀 모형의 예측력 높음, 주어진 자료를 잘 설명함
Q : 전체 데이터들의 편차들을 제곱하여 합한 값
Qe : 전체 데이터들의 잔차들을 제곱하여 합한 값
+ 수정된 결정게수
- 종속변수에 영향을 주지 않은 독립변수가 모형에 포함되어도 결정게수가 커지는 단점 보완
(3) 단순선형회귀분석의 예 ★★★
① 자동차 배기량과 연비 회귀분석
X 배기량(L) | 1 | 1.4 | 1.6 | 2 | 2.2 | 2.4 | 3 | 3.3 | 3.6 |
Y 연비(km/L) | 15 | 13 | 13 | 12 | 11 | 10.5 | 10 | 9 | 8 |
> X <- c(1, 1.4, 1.6, 2, 2.2, 2.4, 3, 3.3, 3.6)
> Y <- c(15, 13, 13, 12, 11, 10.5, 10, 9, 8)
> result <- lm(Y ~ X) #lm은 Linear Model(선형모델)의 약어
> summary(result)
Call:
lm(formula = Y ~ X)
Residuals:
Min 1Q Median 3Q Max
-0.47990 -0.41705 0.04524 0.21353 0.60809
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 16.8291 0.4142 40.63 1.43e-09 ***
X -2.4371 0.1707 -14.27 1.97e-06 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.4277 on 7 degrees of freedom
Multiple R-squared: 0.9668, Adjusted R-squared: 0.962
F-statistic: 203.7 on 1 and 7 DF, p-value: 1.97e-06
- p-value : 1.97e-06으로, 유의수준 0.05에서 회귀분석의 귀무가설 기각
- 따라서 '모든 회귀계수는 0이다'라고 할 수 없으므로 주어진 모형은 통계적으로 유의하다!
- 독립변수의 X의 회귀계수는 -2.4371일 것으로 추정 가능
- 상수항의 추정치는 16.8291
- 따라서 추정되는 회귀식은 Y(연비) = {-2.4371 * (배기량 X)} + 16.8291
② 분산분석표와 수정계수
> X <- c(1, 1.4, 1.6, 2, 2.2, 2.4, 3, 3.3, 3.6)
> Y <- c(15, 13, 13, 12, 11, 10.5, 10, 9, 8)
> result <- lm(Y ~ X) #lm은 Linear Model(선형모델)의 약어
> anova(result)
Analysis of Variance Table
Response: Y
Df Sum Sq Mean Sq F value Pr(>F)
X 1 37.275 37.275 203.73 1.97e-06 ***
Residuals 7 1.281 0.183
+ QQ-plot(Quantile-Quantile Plot)
: 모집단 또는 표본집단의 정규분포를 따르는지 시각적으로 확인하기 위한 산점도
- QQ plot의 점들이 45도에 가까운 직선의 모양을 띨수록 정규분포를 따른다고 할 수 있음
3. 다중선형회귀분석
(1) 다중선형회귀분석
- 독립변수가 2개 이상이고 종속변수가 하나일 때 사용 가능한 회귀분석으로 독립변수와 종속변수의 관계가 선형으로 표현
- 단순회귀분석이 확장된 형태, 기본적인 회귀계수 및 통계적 유의성 검증 등은 동일
- 독립변수가 여러 개이므로 회귀계수도 여러 개
(2) 다중공선성 ★★★
① 다중공선성의 개념
: 회귀분석에서 독립변수 간에 강한 상관관계가 나타나는 문제
- 다중공선성이 존재하면 회귀분석의 기본 가정인 독립성(독립변수 간에는 상관관계가 없이 독립이다)에 위배
- 독립변수가 1개인 단순선형회귀분석에서는 문제가 안되지만 독립변수가 2개 이상인 다중선형회귀분석에서는 유의!
- A, B라는 변수 사이에 다중공선성이 존재하면 A 또는 B라는 변수가 Y값에 어느 정도의 영향을 미치는지 정확하게 판단 불가능
- 다중공선성을 해결하지 않고 분석을 하면 분석 결과의 회귀계수를 신뢰할 수 없고 잘못된 결과가 나올 수 있음
② 다중공선성의 진단
- 결정계수 (R^2) 값이 커서 회귀식의 설명력은 높지만 각 독립변수의 P-value 값이 커서 개별 인자가 유의하지 않은 경우 다중공선성 의심 필요
- 독립변수 간의 상관계수를 구한다
- 분산팽창요인(VIF = 1 / 1 - R^2)을 구해 이 값이 10을 넘는다면 보통 다중공선성이 있다고 판단 가능
③ 다양한 다중공선성 문제 해결법
- 다중공선성의 문제가 발생하는 변수를 제거
- 주성분분석(PCA)을 통해 변수의 차원 축소 (변수 삭제x, 데이터가 가진 내재적 속성을 보존하면서 축소)
- R에서 '스크리 산점도(Scree plot)'를 사용해 주성분 개수 선택
- 선형판별분석(LDA)으로 차원 축소 (LDA :데이터의 분포를 학습하여 결정경계를 만들어 데이터를 분류하는 지도학습)
- t-분포 확률적 임베딩(t-SNE)으로 차원 축소
- 특잇값 분해(SVD)로 차원 축소. PCA와 유사한 행렬 분해 기법을 사용하지만, PCA와 달리 행과 열 크기를 다른 어떤 행렬에도 적용할 수 있다는 이점이 있음
(3) 다중선형회귀분석의 예 ★★★
yard | 마당 면적(㎡) | 31 | 31 | 27 | 39 | 30 | 32 | 28 | 23 | 28 | 35 |
area | 집 면적(㎡) | 58 | 51 | 47 | 35 | 48 | 42 | 43 | 56 | 41 | 41 |
park | 주차 대수(대) | 1 | 1 | 5 | 5 | 2 | 4 | 5 | 1 | 1 | 3 |
dist | 편의점까지 거리(m) | 492 | 426 | 400 | 125 | 443 | 412 | 201 | 362 | 192 | 423 |
price | 집 가격(만 원) | 12631 | 12084 | 12220 | 15649 | 11486 | 12276 | 15527 | 12666 | 13180 | 10169 |
> yard <- c(31, 31, 27, 39, 30, 32, 28, 23, 28, 35)
> area <- c(58, 51, 47, 35, 48, 42, 43, 56, 41, 41)
> park <- c(1, 1, 5 , 5, 2, 4, 5, 1, 1, 3)
> dist <- c(492, 426, 400, 125, 443, 412, 201, 362, 192, 423)
> price <- c(12631, 12084, 12220, 15649, 11486, 12276, 15527, 12666, 13180, 10169)
> result <- lm(price ~ yard + area + park + dist)
> summary(result)
Call:
lm(formula = price ~ yard + area + park + dist)
Residuals:
1 2 3 4 5 6 7 8 9 10
211.9 193.4 -451.5 -193.6 247.8 801.9 387.0 -486.6 100.3 -810.6
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3045.689 4084.218 0.746 0.48939
yard 117.922 65.779 1.793 0.13300
area 230.563 61.193 3.768 0.01305 *
park 436.801 155.508 2.809 0.03760 *
dist -16.446 2.489 -6.609 0.00119 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 645.3 on 5 degrees of freedom
Multiple R-squared: 0.9184, Adjusted R-squared: 0.8531
F-statistic: 14.07 on 4 and 5 DF, p-value: 0.006267
- p-value 값이 0.006267이므로 유의수준 0.05에서 기각 귀무가설을 기각 (유의)
- 각 독립변수에 대한 p-value 값을 유의수준 0.05 이내에서 비교해보면, yard를 제외한 나머지 변수는 통계적으로 유의
- 이러한 경우 yard를 제외한 나머지 3개를 독립변수로 회귀분석을 재수행할 것을 권장
- 유의미하지 않은 변수 yard를 제외하지 않는다면, 추정되는 회귀식은 다음과 같음
price = 3045.689 + (117.922 * yard) + (230.563 * area) + (436.801 * park) + (-16.446 * dist)
- 유의미하지 않은 변수 yard를 제외한다면 회귀분석 수행 후 위 회귀식에서 yard를 제외한 회귀식을 도출하면 됨
4. 최적 회귀방정식
(1) 최적 회귀방정식
① 최적 회귀방정식의 개념
- 종속변수에 유의미한 영향을 미칠 것으로 생각되는 독립변수를 선택하는 과정, 모델 성능 향상을 위해 사용
- 목표 : 1개의 반응변수 y를 설명하기 위한 k개의 독립변수 후보들이 있을 때 반응변수 y를 가장 잘 설명할 수 있는 회귀식을 찾는 것
- 변수가 결과에 영향을 미치는지 등의 특성을 고려해 선택하는 것이 중요!
- 결정계수 혹은 결정계수도 변수 선택에 활용 가능
② 최적의 회귀방정식을 도출하기 위한 방법 ★★
- 변수선택법 : 부분집합법, 단계적 변수선택법
- 부분집합법 : 모든 가능한 모델을 고려하여 가장 좋은 모델을 선정하는 방법(임베디드 기법)
- 장점 : 변수의 개수가 적은 경우 높은 설명력을 가진 결과를 도출해내는 데 효과적
- 단점 : 변수가 많아짐에 따라 검증해야 하는 회귀 분석도 많아짐
- ex) 라쏘, 릿지, 엘라스틱넷 등
- 단계적 변수선택법 : 일정한 단계를 거치면서 변수를 추가하거나 혹은 제거하는 방식으로 최적의 회귀방정식을 도출하는 방식
- 일반적으로 많이 사용
- ex) 전진선택법, 후진제거법, 단계선택법 등
+ 변수선택법의 작동 원리에 따른 분류
임베디드 (Embedded) |
- 부분집합의 생성 및 선택 과정이 모형학습 과정에 포함 - C4.5, LASSO |
래퍼 (Wrapper) |
- 특정 모형의 성능 향상에 가장 이상적인 변수의 조합 찾는 방법 - 회귀분석의 전진 선택법, 후진 제거법, 단계 선택법 - 장점 : 다른 방법에 비해 정확도가 높음 - 단점 : 과적합 문제와 계산 비용이 많이 듦 |
필터 (Filter) |
- 모형학습과 독립적으로 변수 집합 F에서 적합도 평가 지표를 이용하여 기준 조건을 충족하는 변수를 선택함으로써 부분 집합을 구성하는 방법 - 평가 지표로는 주로 상관계수를 사용하거나 정보이른의 엔트로피를 이용 - 장점 : 계산 시간이 적으며 과적합을 피할 수 있음 - 단점 : 래퍼 방법보다 성능이 다소 낮음 |
(2) 변수 선택에 사용되는 성능지표 ★★★
① 벌점화(penalty : 페널티) 방식의 AIC와 BIC
- 벌점화 방식 : 변수의 수가 많아 복잡해진 모형에 벌점을 주어 최적 회귀방정식을 도출(= 회귀 모형의 설명력 ↑)하고자 하는 방법
- 회귀 모형은 변수의 수가 증가할수록 편향(bias)은 작아지고 분산(variance)은 커지려는 경향이 있음
- AIC와 BIC의 두 벌점 모두 편향과 분산이 최적이 되는 균형점 제안
② AIC(Akaike Information Criteria : 아카이케 정보 기준)
: 모델의 성능지표로서 MSE에 변수 수만큼 페널티를 주는 지표
- 일반적으로 회귀분석에서 Model Selection할 때 많이 씀
③ BIC(Bayes Information Criteria : 베이즈 정보 기준)
- AIC의 단점인, 표본(n)이 커질 때 부정확하다는 단점을 보완한 지표
- AIC와 큰 차이는 없지만 BIC는 표본이 커질 경우 좀 더 정확한 결과가 나타남
- BIC의 경우 변수의 개수가 많을수록 AIC보다 더 큰 페널티를 주기 때문에 변수의 개수가 적은 모형이 우선이라면 BIC 참고 권장
④ 멜로우 Cp(Mallow's Cp)
- 멜로우가 제안한 통계량으로 Cp 값은 최소자승법으로 사용하여 추정된 회귀모형의 적합성을 평가하는 데 사용
- Cp 값은 수정된 결정계수 및 AIC와 밀접합 관련
- Cp 값은 모든 변수가 다 포함될 경우에 p값과 같아짐, 따라서 나쁜 모델의 Cp값이 p값보다 클 때이며 좋은 모델은 최소한 p값보다 작을 때임
(3) 단계적 변수 선택법 ★★★
① 전진선택법(forward selection)
- 모든 독립변수 가운데 기준 통계치에 가장 많은 영향을 줄 것으로 판단되는 변수부터 하나씩 추가하면서 모형을 선택
- 설명력이 가장 높은 설명변수(p-value가 가장 작은 변수)부터 시작해 하나씩 모형에 추가
- 단점 : 변수의 개수가 많을 때 사용할 수 있지만 변숫값이 조금만 변해도 결과에 큰 영향을 미치기 때문에 안정성이 부족함
- 상관계수의 절댓값이 가장 큰 변수에 대해 부분 F 검정으로 유의성 검정을 하고 더는 유의하지 않은 경우 해당 변수부터는 더 이상 변수를 추가하지 않음
② 후진제거법(backward elimination)
- 독립변수를 모두 포함하여 가장 적은 영향을 주는 변수부터 하나씩 제거하는 방법
- 전진선택법과 반대로 상관계수의 절댓값이 가장 작은 변수에 대해 부분 F 검정을 실시, 검정 결과가 가장 적은 영향을 주는 변수(유의하지 않는 변수 = p-value가 큰 변수)부터 하나씩 제거
- 단점 : 전체 변수의 정보를 이용한다는 장점이 있지만 변수의 개수가 너무 많은 경우 적용하기 어려움
③ 단계별 방법(stepwise method)
- 전진선택법과 후진제거법을 보완한 방법
- 전진선택법에 의해 변수를 추가하면서 추가될 때 예상되는 벌점 값과 이미 추가된 변수가 제거될 때 예상되는 벌점 값이 가장 작도록 만들어 나가는 방법
(4) 최적 회귀방정식 실습 ★★★
yard | 마당 면적(㎡) | 31 | 31 | 27 | 39 | 30 | 32 | 28 | 23 | 28 | 35 |
area | 집 면적(㎡) | 58 | 51 | 47 | 35 | 48 | 42 | 43 | 56 | 41 | 41 |
park | 주차 대수(대) | 1 | 1 | 5 | 5 | 2 | 4 | 5 | 1 | 1 | 3 |
dist | 편의점까지 거리(m) | 492 | 426 | 400 | 125 | 443 | 412 | 201 | 362 | 192 | 423 |
popul | 인구 수(명) | 4412 | 2061 | 4407 | 1933 | 4029 | 4180 | 3444 | 1683 | 3020 | 4459 |
price | 집 가격(만 원) | 12631 | 12084 | 12220 | 15649 | 11486 | 12276 | 15527 | 12666 | 13180 | 10169 |
① 전진선택법
> yard <- c(31, 31, 27, 39, 30, 32, 28, 23, 28, 35)
> area <- c(58, 51, 47, 35, 48, 42, 43, 56, 41, 41)
> park <- c(1, 1, 5 , 5, 2, 4, 5, 1, 1, 3)
> dist <- c(492, 426, 400, 125, 443, 412, 201, 362, 192, 423)
> popul <- c(4412, 2061, 4407, 1933, 4029, 4180, 3444, 1683, 3020, 4459)
> price <- c(12631, 12084, 12220, 15649, 11486, 12276, 15527, 12666, 13180, 10169)
> result <- step(lm(price~1), scope = list(lower = ~1, upper = ~yard + area + park + dist + popul),
direction = 'forward')
Start: AIC=149.52
price ~ 1 # 절편만 있는 모형에서 시작
Df Sum of Sq RSS AIC
+ dist 1 16958139 8557243 140.60
+ popul 1 5431481 20083900 149.13
+ park 1 4895399 20619982 149.39
<none> 25515382 149.52
+ area 1 2806386 22708996 150.36
+ yard 1 282704 25232677 151.41
Step: AIC=140.6
price ~ dist # dist 추가
Df Sum of Sq RSS AIC
+ area 1 2214900 6342343 139.60
<none> 8557243 140.60
+ park 1 376540 8180703 142.15
+ popul 1 90527 8466716 142.49
+ yard 1 53104 8504139 142.53
Step: AIC=139.6
price ~ dist + area # area 추가
Df Sum of Sq RSS AIC
+ park 1 2922548 3419795 135.43
<none> 6342343 139.60
+ yard 1 975693 5366650 139.93
+ popul 1 326295 6016048 141.07
Step: AIC=135.43
price ~ dist + area + park # park 추가
Df Sum of Sq RSS AIC
+ yard 1 1338046 2081748 132.46
<none> 3419795 135.43
+ popul 1 879 3418916 137.42
Step: AIC=132.46
price ~ dist + area + park + yard # yard 추가
Df Sum of Sq RSS AIC
<none> 2081748 132.46
+ popul 1 54218 2027530 134.20
# 마지막 변수 popul이 추가될 경우 벌점 증가
# 따라서 더 이상 변수 추가 x, 작업 종료
# price를 추정하기 위한 독립변수로는 dist, area, park, yard의 4개의 변수 사용
# 더 자세한 결과는 summary 함수 사용
> summary(result)
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 3045.689 4084.218 0.746 0.48939
dist -16.446 2.489 -6.609 0.00119 **
area 230.563 61.193 3.768 0.01305 *
park 436.801 155.508 2.809 0.03760 *
yard 117.922 65.779 1.793 0.13300
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 645.3 on 5 degrees of freedom
Multiple R-squared: 0.9184, Adjusted R-squared: 0.8531
F-statistic: 14.07 on 4 and 5 DF, p-value: 0.006267
# p-value < 0.05 ==> 귀무가설 기각
# 위 추정식은 통계적으로 유의
② 후진제거법
> yard <- c(31, 31, 27, 39, 30, 32, 28, 23, 28, 35)
> area <- c(58, 51, 47, 35, 48, 42, 43, 56, 41, 41)
> park <- c(1, 1, 5 , 5, 2, 4, 5, 1, 1, 3)
> dist <- c(492, 426, 400, 125, 443, 412, 201, 362, 192, 423)
> popul <- c(4412, 2061, 4407, 1933, 4029, 4180, 3444, 1683, 3020, 4459)
> price <- c(12631, 12084, 12220, 15649, 11486, 12276, 15527, 12666, 13180, 10169)
>result <- step(lm(price ~ yard + area + park + dist + popul),
scope = list(lower = ~1, upper = ~yard + area + park + dist + popul ),
direction = 'backward')
Start: AIC=134.2
price ~ yard + area + park + dist + popul
Df Sum of Sq RSS AIC
- popul 1 54218 2081748 132.46
<none> 2027530 134.20
- yard 1 1391386 3418916 137.42
- park 1 2644982 4672512 140.55
- area 1 5427894 7455424 145.22
- dist 1 10086523 12114053 150.07
Step: AIC=132.46
price ~ yard + area + park + dist
Df Sum of Sq RSS AIC
<none> 2081748 132.46
- yard 1 1338046 3419795 135.43
- park 1 3284902 5366650 139.93
- area 1 5910682 7992431 143.91
- dist 1 18183500 20265249 153.22
# 남은 변수들이 제거되는 경우 현재 모형보다 벌점 증가
# 따라서 더 이상 변수를 제거하지 않고 작업 종료
# price를 추정하기 위한 독립변수로는 dist, area, park, yard의 4개의 변수 사용
③ 단계별 방법
> yard <- c(31, 31, 27, 39, 30, 32, 28, 23, 28, 35)
> area <- c(58, 51, 47, 35, 48, 42, 43, 56, 41, 41)
> park <- c(1, 1, 5 , 5, 2, 4, 5, 1, 1, 3)
> dist <- c(492, 426, 400, 125, 443, 412, 201, 362, 192, 423)
> popul <- c(4412, 2061, 4407, 1933, 4029, 4180, 3444, 1683, 3020, 4459)
> price <- c(12631, 12084, 12220, 15649, 11486, 12276, 15527, 12666, 13180, 10169)
> result <- step(lm(price ~ 1), scope = list(lower = ~1,
upper = ~yard + area + park + dist + popul),
direction = 'both')
Start: AIC=149.52
price ~ 1
Df Sum of Sq RSS AIC
+ dist 1 16958139 8557243 140.60
+ popul 1 5431481 20083900 149.13
+ park 1 4895399 20619982 149.39
<none> 25515382 149.52
+ area 1 2806386 22708996 150.36
+ yard 1 282704 25232677 151.41
Step: AIC=140.6
price ~ dist
Df Sum of Sq RSS AIC
+ area 1 2214900 6342343 139.60
<none> 8557243 140.60
+ park 1 376540 8180703 142.15
+ popul 1 90527 8466716 142.49
+ yard 1 53104 8504139 142.53
- dist 1 16958139 25515382 149.52
Step: AIC=139.6
price ~ dist + area
Df Sum of Sq RSS AIC
+ park 1 2922548 3419795 135.43
<none> 6342343 139.60
+ yard 1 975693 5366650 139.93
- area 1 2214900 8557243 140.60
+ popul 1 326295 6016048 141.07
- dist 1 16366653 22708996 150.36
Step: AIC=135.43
price ~ dist + area + park
Df Sum of Sq RSS AIC
+ yard 1 1338046 2081748 132.46
<none> 3419795 135.43
+ popul 1 879 3418916 137.42
- park 1 2922548 6342343 139.60
- area 1 4760908 8180703 142.15
- dist 1 17088473 20508268 151.34
Step: AIC=132.46
price ~ dist + area + park + yard
Df Sum of Sq RSS AIC
<none> 2081748 132.46
+ popul 1 54218 2027530 134.20
- yard 1 1338046 3419795 135.43
- park 1 3284902 5366650 139.93
- area 1 5910682 7992431 143.91
- dist 1 18183500 20265249 153.22
# 새로운 변수를 추가 또는 기존 변수를 삭제하여 현재 벌점보다 낮출 수 없음
# price를 추정하기 위한 독립변수로는 dist, area, park, yard의 4개의 변수 사용
5. 고급 회귀분석
(1) 정규화 선형회귀
① 과적합과 과소적합 ★★★
- 과적합(overfitting) 또는 과대적합이란 모델이 학습 데이터를 과하게 학습하는 것을 의미
- 모델이 학습 데이터에 너무 과하게 맞추면 새로운 데이터에 일반화하기가 어렵기 때문에 테스트 데이터에 대한 성능은 낮게 나옴
- 과소적합(underfitting) : 반대로 모델이 너무 단순해서 학습 데이터조차 제대로 예측하지 못하는 경우
② 정규화 선형회귀
: 회귀분석에서 과적합되면 계수의 크기도 과도하게 증가하는 경향을 방지하기 위해 계수의 크기를 제한하는 방법
- ex) 릿지(Ridge), 라쏘(Lasso), 엘라스틱넷(Elastic Net)
③ 정규화 선형회귀의 종류 ★★★
1. 라쏘(Lasso Regression)
: L1 규제라고도 하며, 가중치들의 절댓값의 합을 최소화하는 것을 제약조건으로 추가하는 방법
- 일정한 상숫값이 패널티로 부여되어 일부 불필요한 가중치 파라미터를 0으로 만들어 분석에서 아예 제외
- 몇 개의 의미 있는 변수만 분석에 포함시키고 싶을 때 효과적
2. 릿지(Ridge Regression)
: L2 규제라고도 하며, 가중치들의 제곱합을 최소화하는 것을 제약조건으로 추가하는 방법
- 일부 가중치 파라미터를 제한하지만, 완전히 0으로 만들지는 않고 0에 가깝게 만듦
- 매우 크거나 작은 이상치의 가중치를 0에 가깝게 유도함으로써 선형 모델의 일반화 성능을 개선하는 데 사용
3. 엘라스틱넷(Elastic Net)
- 라쏘 + 릿지
- 가중치의 절댓값의 합과 제곱합을 동시에 제약조건으로 가짐
(2) 일반화 선형회귀(GLM, Generalized Linear Regression)
① 일반화 선형회귀의 개념
- 회귀분석은 종속변수가 정규분포를 따른다는 정규성을 전제로 함. 벗, 종속변수가 범주형 자료이거나 정규성을 만족하지 못하는 경우 -> 그 종속변수를 적절한 함수 f(x)로 정의한 다음, 이 함수와 독립변수를 선형 결합하여 회귀분석을 수행할 수 있음
② 일반화 선형회귀의 구성 요소
- 확률 요소(Random Component) : 종속변수의 확률분포를 규정하는 성분
- 선형 예측자(Linear Predictor, 혹은 체계적 성분) : 종속변수의 기댓값을 정의하는 독립변수들 간의 선형 결합
- 연결 함수(Link function) : 확률 요소와 선형예측자를 연결하는 함수
③ 일반화 선형회귀의 종류 ★★★
1. 로지스틱 회귀(Logistic regression)
- 종속변수가 범주형 변수(0 또는 1, 합격/불합격, 사망/생존 등)인 경우로 의학연구에 많이 사용
- 로지스틱 회귀 분석은 종속 변수와 독립 변수 간의 관계를 나타내어 예측 모델을 생성한다는 점에서는 선형 회귀 분석 방법과 동일
- 하지만 독립 변수(x)에 의해 종속 변수(y)의 범주로 분류한다는 측면은 '분류 분석'방법으로 분류
2. 포아송 회귀(Poisson regression)
- 종속변수가 특정 시간 동안 발생한 사건의 건수에 대한 도수 자료(count data, 음수가 아닌 정수)인 경우이면서, 종속변수가 정규분포를 따르지 않거나 등분산성을 만족하지 못하는 경우에 포아송 회귀 분석 사용
- 선형회귀모형이 최소제곱법으로 모수를 추정한다면 포아송 회귀모형은 최대 가능도 추정(MLE, Maximum Likelihood Estimation)을 통해 모수 측정
(3) 더빈 왓슨(Durbin-Watson) 검정
① 오차항의 상관관계
- 오차항이 상관관계를 갖는 경우 : 대부분 시계열 데이터의 경우
- 시계열 데이터 : 시간의 흐름대로 나열된 데이터, 연속적인 열련의 관측치들이 서로 상관됨(자기상관성)
- 자기상관성 : 하나의 잔차항의 크기가 이웃하는 다른 잔차항의 크기와 서로 일정한 관련이 있음
② 더빈 왓슨 검정
- 회귀분석에 있어서는 오차항이 서로 연관성이 없어야 함 = 회귀분석에서의 오차항의 공분산은 '0'
- IF 자기 상관성이 있다면 회귀분석이 아니라 시계열 분석이나 다른 분석방법을 수행해야함
- 더빈 왓슨 검정 : 회귀분석에 있어 이러한 자기상관성이 존재하는지(오차항이 독립성을 만족하는지 = 오차항이 서로 연관성이 없는지) 검정하는 방법
- 더빈 왓슨 검정 통계량 값이 2에 가까울수록 오차항의 자기상관이 없다는 의미. 만약 0에 가깝다면 양의 상관관계가, 4에 가깝다면 음의 상관관계가 있다고 판단
+ 회귀분석의 평가 지표 ★★