회귀식 해석 Interpreting the Regression Equation

  • 데이터 과학에서 회귀의 가장 중요한 용도
    • 일부 종속변수(결과변수)를 예측하는 것
    • 때로는 예측변수와 결과 간 관계의 본질을 이해하기 위해 방정식 자체로부터 통찰을 얻는 것


예측변수들 간의 관계

  • 상관변수(correlated variable): 예측변수들끼리 서로 높은 상관성을 갖을 때, 개별 계수를 해석하는 것은 어렵다.
  • 상관변수의 예
    • 아래 회귀식에서 Bedrooms의 계수는 음수
    • 침실의 개수를 늘릴 수록 가격이 하락하는 것을 의미
    • 예측변수들이 서로 연관되어 있어 발생하는 현상
    • 크기가 같은 2개의 집에서 침실이 여러 개 있다는 것은 침실이 작아진다는 것을 의미하므로 선호도가 떨어져 가격이 낮은 것이 일반적

> house <- read.csv('house_sales.csv', sep='\t') > house_full <- lm(AdjSalePrice ~ SqFtTotLiving + SqFtLot + Bathrooms + Bedrooms + BldgGrade + PropertyType + NbrLivingUnits + SqFtFinBasement + YrBuilt + YrRenovated + NewConstruction, data=house, na.action=na.omit) > step_lm <- stepAIC(house_full, direction="both") > step_lm 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


  • 상호 연관된 예측변수들을 사용하면 회귀계수의 부호와 값의 의미를 해석하기가 어려울 수 있다.
    • 추정값의 표준오차가 커진다
  • 침실 수, 평수 욕실 수에 대한 변수들은 모두 상관관계가 있다.
  • 방정식에서 변수 SqFtTotLiving, SqFtFinBasement, Bathrooms를 제거한 후 얻은 회귀모델을 통해 이것을 설명할 수 있다.
    • update 함수를 사용하여 모델의 변수(집의 크기인 SqFtTotLiving)를 제외한 결과 Bedrooms의 계수가 양수가 되었다
    • 침실이 많으면 집의 크기가 커지는 것이 일반적이다
> update(step_lm, . ~ . -SqFtTotLiving - SqFtFinBasement - Bathrooms)

Call:
lm(formula = AdjSalePrice ~ Bedrooms + BldgGrade + PropertyType + 
    YrBuilt, data = house, na.action = na.omit)

Coefficients:
              (Intercept)                   Bedrooms                  BldgGrade  PropertyTypeSingle Family  
                  4834680                      27657                     245709                     -17604  
    PropertyTypeTownhouse                    YrBuilt  
                   -47477                      -3161  


  • 변수 간 상관관계는 회귀계수를 해석할 때 고려해야 할 여러 문제들 가운데 한 가지
  • 모델 house_lm에는 주택의 위치를고려할 변수가 따로 없는 상태에서, 서로 다른 유형의 지역들 정보가 섞여 있다.
  • 이 경우 위치 정보는 교란변수일 수 있다.


다중공선성

  • 다중공선성(multicollinearity) 또는공선성(collinearity):  예측변수들이 완벽하거나 거의 완벽에 가까운 상관성을 갖는다고 할 때, 회귀는 불안정하며 계산이 불가능
  • 변수 상관이 극단적인 경우 다중공선성이 나타난다.
  • 이는 예측변수 사이의 중복성을 판단하는 조건이 된다.
  • 완전 디중공선성은 한 예측변수가 다른 변수들의 선형결합으로 표현된다는 것을 의미
  • 다중공선성은 다음 경우에 발생
    • 오류로 인해 한 변수가 여러 번 포함된 경우
    • 요인변수로 부터 \(P-1\)개가 아닌 \(P\)개의 가변수가 만들어진 경우
    • 두 번수가 서로 거의 완벽하게 상관성이 있는 경우
  • 회귀분석에서는 디중공선성 문제를 반드시 해결해야 한다.
    • 다중공선성이 사라질 때까지 변수를 제거
    • 완전 다중공선성이 존재하는 상황에서는 회귀를 통해 제대로 된 답을 얻을 수가 없다.
    • R을 포함한 많은 소프트웨어 패키지는 특정 유형의 다중공선성 문제를 자동으로 처리


교란변수

  • 교란변수(confounding variable): 중요한 예측변수지만 회귀식에서 누락되어 결과를 잘못되게 이끄는 변수
  • 상관변수는 응답변수와 비슷한 예측관계를 갖는 다른 변수가 포함되어 발생하는 문제
  • 교란변수는 회귀식에 중요한 변수가 포함되지 못해서 생기는 누락의 문제
    • 이 경우 방정식 계수에 대한 순진한 해석은 잘못된 결론으로 이어질수있다.
  • 킹 카운티 회귀모델 house_ lm
    • SqFtlot, Bathrooms , Bedrooms의 회귀계수는 모두 음수
> house_lm <- lm(AdjSalePrice ~ SqFtTotLiving + SqFtLot + Bathrooms + Bedrooms + BldgGrade, data=house, na.action=na.omit)
> house_lm

Call:
lm(formula = AdjSalePrice ~ SqFtTotLiving + SqFtLot + Bathrooms + 
    Bedrooms + BldgGrade, data = house, na.action = na.omit)

Coefficients:
  (Intercept)  SqFtTotLiving        SqFtLot      Bathrooms       Bedrooms      BldgGrade  
   -5.287e+05      2.127e+02     -1.430e-02     -1.823e+04     -4.657e+04      1.088e+05  

    • 위치 정보를 고려하기 위해, 우편번호를 가장 싼 지역 (1)에서 가장 비싼 지역 (5)까지 5개의 그룹으로 분류하는 새로운 변수 ZipGroup을 포함

> house <- read.csv('house_sales.csv', sep='\t') > zip_groups <- house %>% + mutate(resid = residuals(house_lm)) %>% + group_by(ZipCode) %>% + summarize(med_resid = median(resid), + cnt = n()) %>% + # sort the zip codes by the median residual + arrange(med_resid) %>% + mutate(cum_cnt = cumsum(cnt), + ZipGroup = factor(ntile(cum_cnt, 5))) > house <- house %>% + left_join(select(zip_groups, ZipCode, ZipGroup), by='ZipCode') > lm(AdjSalePrice ~ SqFtTotLiving + SqFtLot + Bathrooms + Bedrooms + BldgGrade + PropertyType + ZipGroup, data=house, na.action=na.omit) Call: lm(formula = AdjSalePrice ~ SqFtTotLiving + SqFtLot + Bathrooms + Bedrooms + BldgGrade + PropertyType + ZipGroup, data = house, na.action = na.omit) Coefficients: (Intercept) SqFtTotLiving SqFtLot Bathrooms -6.737e+05 1.938e+02 3.526e-01 8.121e+03 Bedrooms BldgGrade PropertyTypeSingle Family PropertyTypeTownhouse -3.953e+04 1.048e+05 2.827e+03 -2.126e+04 ZipGroup2 ZipGroup3 ZipGroup4 ZipGroup5 5.913e+04 1.029e+05 1.727e+05 3.340e+05



    • ZipGroup 이 분명히 중요한 변수라는 것을 알 수 있다.
    • 가장 비싼 우편번호 그룹(ZipGroup5)의 주택 가격이 약 $334,000나 더 높다.
    • SqFtLotBathrooms의 계수도 이제 양수이며, 욕실을 하나 추가하면 판매 가격이 $8,121달러 정도 증가
    • Bedrooms 에 대한 계수는 여전히 음수
    • 이 결과가 그렇게 직관적이지는 않지만, 이것은 부동산 업계에서 잘 알려진 현상
    • 살기 좋은 지역에서는 욕실 수가 같은 주택의 경우 작은 침실이 여러 개 있으면 오히려 가격이 떨어진다.

주효과와 상호작용

  • 주효과(main effect): 다른 변수들과 독립된 하나의 예측변수와 결과변수 사이의 관계
    • 회귀식에서 종종 예측변수라고도 함
    • 모델에서 주효과만 사용한다면 여기에는 예측변수와 응답변수 간의 관계가 다른 예측변수들에 대해 독립적이라는 암묵적인 가정이 있지만 종종 틀린 가정이다
  • 킹 카운티 주택 데이터의 회귀모델은 ZipCode를 비롯한 여러 변수를 주효과로 포함
    • 부동산에서 위치가 가장 중요하다는 사실은 모두 알고 있다.
    • 주택 크기와 매매 가격 간의 관계가 위치에 달려 있다고 가정하는 것은 자연스러운 일이다.
    • 임대료가싼 지역에 지어진 큰 집은 비싼 지역에 지어진 큰 집과 같은 가치를 유지하기가 어려울 것이다.

> lm(AdjSalePrice ~  SqFtTotLiving + SqFtLot + Bathrooms + Bedrooms + BldgGrade + PropertyType + ZipGroup, data=house, na.action=na.omit)

Call:
lm(formula = AdjSalePrice ~ SqFtTotLiving + SqFtLot + Bathrooms + 
    Bedrooms + BldgGrade + PropertyType + ZipGroup, data = house, 
    na.action = na.omit)

Coefficients:
              (Intercept)              SqFtTotLiving                    SqFtLot                  Bathrooms  
               -6.737e+05                  1.938e+02                  3.526e-01                  8.121e+03  
                 Bedrooms                  BldgGrade  PropertyTypeSingle Family      PropertyTypeTownhouse  
               -3.953e+04                  1.048e+05                  2.827e+03                 -2.126e+04  
                ZipGroup2                  ZipGroup3                  ZipGroup4                  ZipGroup5  
                5.913e+04                  1.029e+05                  1.727e+05                  3.340e+05  



  • 상호작용(interaction): 둘 이상의 예측변수와 응답변수 사이의 상호의존적 관계
    • R에서 * 연산지를 사용하면 모델에 변수의 상호작용을 포함시킬 수 있다.
    • 킹 카운티 데이터를 모델링할 때, SqFtTotLivingZipGroup 간의 상호작용을 고려하는 예
> lm(AdjSalePrice ~  SqFtTotLiving*ZipGroup + SqFtLot + Bathrooms + Bedrooms + BldgGrade + PropertyType, data=house, na.action=na.omit)

Call:
lm(formula = AdjSalePrice ~ SqFtTotLiving * ZipGroup + SqFtLot + 
    Bathrooms + Bedrooms + BldgGrade + PropertyType, data = house, 
    na.action = na.omit)

Coefficients:
              (Intercept)              SqFtTotLiving                  ZipGroup2                  ZipGroup3  
               -4.990e+05                  1.030e+02                 -3.794e+04                  5.436e+04  
                ZipGroup4                  ZipGroup5                    SqFtLot                  Bathrooms  
               -2.666e+03                 -1.722e+05                  5.535e-01                  4.197e+02  
                 Bedrooms                  BldgGrade  PropertyTypeSingle Family      PropertyTypeTownhouse  
               -3.919e+04                  1.086e+05                  4.530e+03                 -2.333e+04  
  SqFtTotLiving:ZipGroup2    SqFtTotLiving:ZipGroup3    SqFtTotLiving:ZipGroup4    SqFtTotLiving:ZipGroup5  
                4.999e+01                  1.599e+01                  8.230e+01                  2.356e+02  


    • 주택의 위치와 크기는 강한 상호작용이 있는 것으로 보인다.
    • 가격대가 가장 낮은 ZipGroup1 에서 집에 대한 기울기는 제곱피트당 약 $103로, 주효과 SqFtTotLiving 에 해당하는 계수와 같다
      • R이 요인변수에 대해 기준 부호화를 사용하고 있기 때문
    • 가장 비싼 ZipGroup5에 대한 계수는 이 주효과 계수에 SqFtTotLiving:ZipGroup5의 경우를 더한 합, 즉 $103 + $235.6 = $338.6와 같다.
      • 가격대가 가장 비싼 지역에서는 주택의 크기가 1제곱피트 늘어날 때 가장 낮은 지역에 비해 예상 매매가가 거의 3배가 차이 난다.


'Predictive Analytics' 카테고리의 다른 글

다항회귀  (0) 2019.09.30
회귀 진단: 가설 검정  (0) 2019.09.27
회귀에서의 요인변수  (0) 2019.09.27
회귀를 이용한 예측  (0) 2019.09.26
가중회귀  (0) 2019.09.26

요인변수

  • 요인변수(factor variable) 또는 범주형 변수(categorical data): 데이터 값의 종류가 제한되어 있는 이산값을 갖는 변수
  • 요인변수의 예
    • 대출 목적: '부채 정리', '결혼', '자동차' 등
    • 지표변수(indicator variable): 예/아니오 등 두 가지 값을 갖는 이진변수
  • 요인변수의 값은 '텍스트' 값이므로 숫자로 변환해야 데이터 분석에 활용할 수 있다


텍스트 값을 숫자로 바꾸는 방법

  • 가변수(dummy variable): 회귀모델이나 다른 모델에서 요인 데이터를 사용하기 위해 \(0\)과 \(1\)의 이진값으로 부호화한 변수
  • 기준 부호화.(reference coding) 또는 처리 부호화(tretment coding): 통계학자들이 많이 사용히는 부호화 형태로, 여기서 한 요인을 기준으로 하고 다른 요인들이 이 기준에 따라 비교할 수 있도록 부호화하는 것
  • 원-핫 인코딩(one-hot encoding): 머신러닝 분야에서 많이 사용되는 부호화. 모든 요인 수준이 계속 유지된다. 어떤 머신러닝 알고리즘에서는 유용한 반면, 다중선형회귀에는 적합하지 않다
  • 편차 부호회(deviation coding) 또는 총합 대비(sum contrast): 기준 수준과는 반대로 전체 평균에 대해 각수준을 비교하는 부호화 방법


가변수 표현 Dummy Variables Representation

  • 킹 카운티 주택 가격 데이터 중 주거 형태에 관한 요인변수는 3종류
    • Multiplex, Single Family, Townhouse

> house <- read.csv('house_sales.csv', sep='\t')
> head(house[, 'PropertyType'])
[1] Multiplex     
[2] Single Family
[3] Single Family
[4] Single Family
[5] Single Family
[6]Townhouse
Levels: Multiplex Single Family Townhouse


  • 주거 형태의 요인변수를 원-핫 인코딩을 통해 이진변수로 만들기
> prop_type_dummies <- model.matrix(~PropertyType -1, data=house)
> head(prop_type_dummies)
  PropertyTypeMultiplex PropertyTypeSingle Family PropertyTypeTownhouse
1                     1                         0                     0
2                     0                         1                     0
3                     0                         1                     0
4                     0                         1                     0
5                     0                         1                     0
6                     0                         0                     1

  • 회귀분석에서 \(P\)개의 개별 수준을 갖는 요인변수는 보통 \(P-1\)개의 열을 갖는 행렬로 표시
    • 회귀모델식에 일반적으로 절편이 포함
    • 절편이 있기 때문에 \(P-1\) 개의 이진변수의 값을 정의하고 나면, \(P\)번째 값을 알 수 있음
    • \(P\)번째 값까지 넣게 되면 이러한 중복성이 문제가 다중공선성(multicollinearity error) 오류가 발생할 수 있음
  • R에서는 첫 번째 요인 수준을 기준으로 하고 나머지 수준을 이 기준에 상대적인 것으로 해석
> prop_type_dummies <- model.matrix(~PropertyType, data=house)
> head(prop_type_dummies)
  (Intercept) PropertyTypeSingle Family PropertyTypeTownhouse
1           1                         0                     0
2           1                         1                     0
3           1                         1                     0
4           1                         1                     0
5           1                         1                     0
6           1                         0                     1


  • 회귀분석을 해보면 PropertyType에 해당하는 두 계수 PropertyTypeSingle FamilyPropertyTypeTownhouse을 볼 수 있음
    • PropertyType에는 3개의 종류가 있지만 PropertyTypeSingle Family == 0이면서  PropertyTypeTownhouse == 0인 것은 상대적으로 PropertyTypeMutiplex가 되므로 따로 계수를 설정하지 않음
    • PropertyTypeSingle Family의 계수가 -98190이므로  PropertyTypeMutiplex에 비해 약 $98,190정도 낮음
    • PropertyTypeTownhouse의 계수는 -119000이므로 PropertyTypeMutiplex에 비해 약 $119,000정도 낮음
> lm(AdjSalePrice ~ SqFtTotLiving + SqFtLot + Bathrooms + Bedrooms +  BldgGrade + PropertyType, data=house)

Call:
lm(formula = AdjSalePrice ~ SqFtTotLiving + SqFtLot + Bathrooms + 
    Bedrooms + BldgGrade + PropertyType, data = house)

Coefficients:
              (Intercept)              SqFtTotLiving                    SqFtLot                  Bathrooms  
               -4.409e+05                  2.072e+02                 -2.314e-02                 -1.500e+04  
                 Bedrooms                  BldgGrade  PropertyTypeSingle Family      PropertyTypeTownhouse  
               -4.957e+04                  1.122e+05                 -9.819e+04                 -1.189e+05  



다양한 수준을 갖는 요인변수

  • 우편번호(zip code): 미국에는 43,00개의 우편번호가 있음
  • 이런 경우 데이터와 예측변수와 결과 간의 관계를 탐색하여 유용한 정보가 범주에 포함되는지 결정
  • 모든 요소를 유지할 것인지 수준을 통합하여 처리할 것인지도 결정
  • 킹스카운티에는 82개의 우편번호가 있음
    • 주택 가격과 주택의 위치는 많은 관계가 있으므로 우편번호는 중요한 정보가 될 수 있음
    • 모든 요소를 포함하려면 81개의 계수가 필요
    • 처음에 만들었던 회귀모델식은 자유도가 5개(SqFtTotLiving, SqFtLot, Bathrooms, Bedrooms, BldgGrade)
    • 매매 가격과 같은 다른 변수에 따라 우편번호를 그룹으로 묶어서 분석
  • 초기 모델의 잔차를 사용하여 우편번호 그룹을 만드는 방법도 좋음
> house_lm <- lm(AdjSalePrice ~ SqFtTotLiving + SqFtLot + Bathrooms + Bedrooms + BldgGrade, data=house, na.action=na.omit)
> zip_groups <- house %>%
+     mutate(resid = residuals(house_lm)) %>%
+     group_by(ZipCode) %>%
+     summarize(med_resid = median(resid),
+               cnt = n()) %>%
+     # sort the zip codes by the median residual
+     arrange(med_resid) %>%
+     mutate(cum_cnt = cumsum(cnt),
+            ZipGroup = factor(ntile(cum_cnt, 5)))
> house <- house %>%
+     left_join(select(zip_groups, ZipCode, ZipGroup), by='ZipCode')
> table(house$ZipCode)

   -1  9800 89118 98001 98002 98003 98004 98005 98006 98007 98008 98010 98011 98014 98019 98022 98023 98024 
 4374     1     1   358   180   241   293   133   460   112   291    56   163    85   242   188   455    31 
98027 98028 98029 98030 98031 98032 98033 98034 98038 98039 98040 98042 98043 98045 98047 98050 98051 98052 
  366   252   475   263   308   121   517   575   788    47   244   641     1   222    48     7    32   614 
98053 98055 98056 98057 98058 98059 98065 98068 98070 98072 98074 98075 98077 98092 98102 98103 98105 98106 
  499   332   402     4   420   513   430     1    89   245   502   388   204   289   106   671   313   361 
98107 98108 98109 98112 98113 98115 98116 98117 98118 98119 98122 98125 98126 98133 98136 98144 98146 98148 
  296   155   149   357     1   620   364   619   492   260   380   409   473   465   310   332   287    40 
98155 98166 98168 98177 98178 98188 98198 98199 98224 98288 98354 
  358   193   332   216   266   101   225   393     3     4     9 
> table(house$ZipGroup)

   1    2    3    4    5 
4822 7905 3990 5259 5087 


순서가 있는 요인변수

  • 순서 요인변수(ordered factor variable) 또는 순서 범주형 변수(ordered categorical variable): 요인의 수준이 순서를 갖는 요인변수
  • 순서 요인변수의 예
    • 대출 등급: A, B, C 등으로 각 등급은 이전 등급보다 위험이 크다
  • 순서 요인변수도 숫자로 변환하여 그대로 사용
  • 킹 카운티 주택 가격 데이터 중 BldgGrade 변수가 순서 요인변수


'Predictive Analytics' 카테고리의 다른 글

회귀 진단: 가설 검정  (0) 2019.09.27
회귀식 해석  (0) 2019.09.27
회귀를 이용한 예측  (0) 2019.09.26
가중회귀  (0) 2019.09.26
모델 선택 및 단계적 회귀  (0) 2019.09.24

회귀분석의 주된 목적

  • 예측(prediction): 데이터 과학에서 회귀분석의 주된 목적
    • 전통적인 통계학에서의 회귀는 예측보다는 설명을 위한 모델링을 위주
  • 예측구간(prediction interval): 개별 예측값 주위의 불확실한 구간
  • 외삽법(extrapolation): 모델링에 사용된 데이터의 범위를 벗어난 부분까지 모델을 확장하는 것

외삽의 위험

  • 회귀모델을 데이터 범위를 초과하면서까지 외삽하는 데 사용해서는 안 된다.
  • 회귀모델은 충분한 데이터 값이 있는 예측변수에 대해서만 유효
    • 충분한 데이터가 있다 하더라도 다른 문제가 있을 수 있다.
    • 극단적으로 model_lm을 가지고 5 000제곱피트의 공터 가격을 예측하는 데 사용한다고 하자.
    • 이때 건물과 관련된 모든 예측변수의 값은 0이 되고, 회귀식의 결과는 다음과 같이 황당한 예측 결과가 나온다.
\begin{eqnarray} 521,900 + 5,000 \times - 0.0605 = -\$522 , 202\end{eqnarray}
    • 왜 이런 일이 발생할까?
      • 데이터에는 건물이 있는 구획만 포함되어 있다.
      • 빈 땅에 해당하는 데이터는 없다.
      • 결과적으로 이 모델에는 공터 가격을 예측히는 방법을 알려줄 정보가 없다.


신뢰구간과 예측구간

  • 통계학은 변동성(불확실성)을 이해하고 측정하는 것을 포함
  • 회귀분석 결과에 나오는 \(t\)-통계량과 \(p\)-값은 이 변동성을 다루는 아주 일반적인 방법으로 종종 변수 선택을 위해 활용
  • 회귀 매개변수에 대한 신뢰구간(confidence interval)을 생성하기 위한 부트스트랩 알고리즘
  1. 각 행 (결과변수를 포함)을 하나의 티켓으로 생각하고 개수가 모두 \(n\)개인 티켓을 박스에 넣었다고가정하자.
  2. 무작위로 티켓을 뽑아 값을 기록하고 다시 박스에 넣는다.
  3. 2번 과정을 \(n\)번 빈복한다. 이를 통해 부트스트랩 재표본을 하나 만든다.
  4. 이 부트스트랩 표본을 가지고 회귀모형을 구한다. 그리고 추정된 계수들을 기록한다.
  5. 2∼4번 과정을 1,000번 반복한다.
  6. 이제 각 계수에 대해 1,000개의 부트스트랩 값을 갖게 된다. 각각에 대해 적합한 백분위수를 구한다(90% 신뢰구간을 위해 5번째에서 95번째 백분위수를 구한다).
  • R의 Boot 함수를 시용하면 계수에 대한 실제 부트스트랩 신뢰구간을 구하거나 일반적인 R의 출력 결과같이 신뢰구간을 간단하게 구할 수 있다.
  • 우리의 관심은 예측된 \(y\) 값(\(\hat{Y}\))의 구간, 즉 예측구간으로 이 값의 불확실성의 원인은 다음과 같음
    • 무엇이 적합한 예측변수인지, 그리고 계수가 얼마인지에 따른 불확실성
    • 개별 데이터 값에 존재하는 추가적인 오류
      • (예를 들면 엄청난 수의 데이터가 있어) 회귀방정식이 무엇인지 정확히 알았다하더라도
      • 주어진 예측변수 값에 대한 실제 결과값은 달라질 수 있다.
  • 예를 들면 방이 8개, 실제 크기 6, 500제곱피트, 욕실 3개, 그리고 지하실까지 있는 주택들이 여러 채 있다고 했을 때, 이들의 값은 서로 다를 수 있다.
  • 우리는 이 개별 오차를 적합값으로부터의 잔차로 모델링할 수 있다.
  • 회귀모델에 따른 오차와 개별 데이터 값에 따른 오차를 모두 모델링하기 위한 부트스트랩 알고리즘은 디음과 같다.
  1. 데이터로부터 부트스트랩 표본을 뽑는다.
  2. 회귀모델을 찾고 새로운 값을 예측한다.
  3. 원래의 회귀 적합도에서 임의로 하나의 잔치를 취하여 예측값에 더하고 그 결과를 기록한다.
  4. 1 ∼3단계를 1,000변 반복한다.
  5. 결과의 2.5번째 백분위수와 97.5번째 백분위수를 찾는다.


  • 예측구간: 하나의 값에 대한 불확실성과 관련
  • 신뢰구간: 여러 값으로 계산한 평균이나 다른 통계량과 관련
  • 예측구간은 일반적으로 같은 값에 대해 신뢰구간보다 훨씬 넓다


'Predictive Analytics' 카테고리의 다른 글

회귀식 해석  (0) 2019.09.27
회귀에서의 요인변수  (0) 2019.09.27
가중회귀  (0) 2019.09.26
모델 선택 및 단계적 회귀  (0) 2019.09.24
모델 평가  (0) 2019.09.24

가중회귀

  • 가중회귀(weighted regression)의 유용성
    • 서로 다른 관측값을 다른 정밀도로 측정했을 때, 역분산 가중값을 얻을 수 있다.
    • 가중값 변수가 집계된 데이터와 각 행이 나타내는 원본 관측값의 수를 인코딩하도록 집계된 형식의 데이터를 분석할 수 있다.
  • 가중회귀의 예
    • 주택가격 데이터에서 오래된 매매 정보일수록 최근 정보보다는 신뢰하기 힘들다.
    • 날짜 정보에 가중값을 매겨서 최신 정보일 수록 높은 가중값을 매긴다.
> library(lubridate)
> house <- read.csv('house_sales.csv', sep='\t')
> house$Year = year(house$DocumentDate)
> house$Weight = house$Year - 2005
> head(house[, c("AdjSalePrice", "SqFtTotLiving", "SqFtLot", "Bathrooms", "Bedrooms", "BldgGrade", "Year", "Weight")])
  AdjSalePrice SqFtTotLiving SqFtLot Bathrooms Bedrooms BldgGrade Year Weight
1       300805          2400    9373      3.00        6         7 2014      9
2      1076162          3764   20156      3.75        4        10 2006      1
3       761805          2060   26036      1.75        4         8 2007      2
4       442065          3200    8618      3.75        5         7 2008      3
5       297065          1720    8620      1.75        4         7 2013      8
6       411781           930    1012      1.50        2         8 2009      4
    • lm 함수에 weight 매개변수를 사용하여 가중회귀를 계산

> house_lm <- lm(AdjSalePrice ~ SqFtTotLiving + SqFtLot + Bathrooms + Bedrooms + BldgGrade, data=house, na.action=na.omit) > house_wt <- lm(AdjSalePrice ~ SqFtTotLiving + SqFtLot + Bathrooms + Bedrooms + BldgGrade, data=house, weight=Weight, na.action=na.omit) > round(cbind(house_lm=house_lm$coefficients, house_wt=house_wt$coefficients), digits=3) house_lm house_wt (Intercept) -528724.348 -580378.015 SqFtTotLiving 212.708 229.945 SqFtLot -0.014 -0.181 Bathrooms -18233.212 -23335.486 Bedrooms -46574.193 -54234.376 BldgGrade 108780.111 116037.063


'Predictive Analytics' 카테고리의 다른 글

회귀에서의 요인변수  (0) 2019.09.27
회귀를 이용한 예측  (0) 2019.09.26
모델 선택 및 단계적 회귀  (0) 2019.09.24
모델 평가  (0) 2019.09.24
최소제곱법  (0) 2019.09.24

회귀모델과 예측변수 수의 관계

  • 어떤 회귀분석 문제에서는 많은 변수를 예측변수로 사용할 수 있다.
  • 예를 들어 주택 가치를 예측하기 위해 지하실 크기나 건축 연도와 같은 변수를 추가로 사용할 수 있다.
  • 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

모델 평가

  • 제곱근평균제곱오차(RMSE; Root Mean Square Error): 예측된 \(\hat{Y}_i\)값들의 평균제곱오차의 제곱근으로 데이터 과학의 관점에서 가장 중요한 성능 지표
    • 전반적인 모델의 정확도를 측정하고 (머신러닝 기술로 학습된 모델을 포함하여) 다른 모델과 비교하기 위한 기준이 됨
\begin{eqnarray} \mathop{\mathrm{RMSE}}=\sqrt{\frac{\displaystyle \sum_{i=1}^n\big(y_i-\hat{y}_i\big)^2}{n}}\end{eqnarray}
  • 잔차표준오차(RSE; Residual Standard Error): RMSE와 유사한 척도로 예측변수가 \(p\)개일 때 RSE는 다음과 같다.
    • RMSE와의 차이는 데이터의 개수가 아니라 자유도이다.
    • 실무에서, 특히 빅데이터 분야에서 이 둘의 차이는 매우 작다.
\begin{eqnarray} \mathop{\mathrm{RSE}} = \sqrt{\frac{\displaystyle \sum_{i=1}^n \big(y_i - \hat{y}_i\big)^2}{n-p-1}}\end{eqnarray}
  • R의 summary 함수: 회귀모형의 RSE 뿐만 아니라 다른 지표도 계산
> summary(house_lm)

Call:
lm(formula = AdjSalePrice ~ SqFtTotLiving + SqFtLot + Bathrooms + 
    Bedrooms + BldgGrade, data = house, na.action = na.omit)

Residuals:
     Min       1Q   Median       3Q      Max 
-1950841  -114032   -21451    83578  9549956 

Coefficients:
                Estimate Std. Error t value Pr(>|t|)    
(Intercept)   -5.287e+05  1.443e+04 -36.629  < 2e-16 ***
SqFtTotLiving  2.127e+02  3.401e+00  62.552  < 2e-16 ***
SqFtLot       -1.430e-02  5.760e-02  -0.248    0.804    
Bathrooms     -1.823e+04  3.225e+03  -5.654 1.58e-08 ***
Bedrooms      -4.657e+04  2.329e+03 -19.999  < 2e-16 ***
BldgGrade      1.088e+05  2.164e+03  50.266  < 2e-16 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 259400 on 27057 degrees of freedom
Multiple R-squared:  0.5348,	Adjusted R-squared:  0.5348 
F-statistic:  6222 on 5 and 27057 DF,  p-value: < 2.2e-16


  • 결정계수(coefficient of determination) 또는 \(R^2\) 통계량(R-squared statistic): \(0\)에서 \(1\)까지 모델에 의해 설명된 분산의 비율
    • \(0\leqslant R^2 \leqslant 1\)
    • 모델의 변동량
    • 모델이 데이터에 얼마나 적합한지 평가할 때, 회귀분석을 설명하기 위한 용도로 활용
\begin{eqnarray} R^2 = 1 - \frac{\displaystyle \sum_{i=1}^n\big(y_i - \hat{y}_i\big)^2} {\displaystyle \sum_{i=1}^n\big(y_i - \bar{y}_i\big)^2}\end{eqnarray}
    • 분모는 \(Y\)의 분산에 비례
    • R에서는 자유도를 고려한 수정 \(R^2\)(adjusted \(R\)-squared) 값이 출력되며, 다중회귀분석에서는 일반 \(R^2\)과 별차이 없다.
  • \(p\)-통계량(statistic): 응답과 모델의 각 항의 연관성이 통계적으로 의미가 있는지 확인하기 위한 지표로 유의수준과 비교하여 귀무가설을 평가
    • 귀무가설(null hypothesis): 응답과 항 사이에는 연관성이 없다!
    • 유의수준(significance level): 일반적으로 \(\alpha=0.05\)을 사용하며 실제로 연관성이 없는 데 연관성이 존재한다고 결론을 내릴 위험이 \(5\%\)라는 것을 나타냄
      • \(p\)-값 \(\leqslant \alpha\): 연관성이 통계적으로 의미가 있다
      • \(p\)-값 \(> \alpha\): 연관성이 통계적으로 의미가 없다
        • 해당 항을 제외하고 다시 모델링을 진행한다
  • \(t\)-통계량(statistic): 계수의 표준오차로 나눈 예측변수의 계수. 모델에서 변수의 중요도를 비교하는 기준이 됨
\begin{eqnarray} t_b = \frac{\hat{b}}{\mathop{\mathrm{SE}}\big(\hat{b}\big)}\end{eqnarray}
    • \(t\)-통계량과 \(p\)-값은 계수가 ‘통계적으로 유의미한’ 정도, 즉 예측변수와 목표변수를 랜텀하게 재배치했을 때 우연히 얻을 수 있는 범위를 어느 정도 벗어났는지를 측정
      • \(t\)-통계량이 높을수록 (\(p\)-값이 낮을수록) 예측변수는 의미를 가지므로 모델에 예측변수를 포함할지 여부를 결정하기 위한 지표로 사용


    'Predictive Analytics' 카테고리의 다른 글

    가중회귀  (0) 2019.09.26
    모델 선택 및 단계적 회귀  (0) 2019.09.24
    최소제곱법  (0) 2019.09.24
    단순선형회귀  (0) 2019.09.19
    대표적인 예측 분석 사례  (0) 2018.04.20

    최소제곱법

    • 데이터를 적합한 모델을 만드는 방법
    • 회귀선(regression line): 잔차들을 제곱한 값들의 합인 잔차제곱합(RSS; Residual Sum of Square)을 최소로 하는 선
      • 추정값 \(\hat{b}_0\)와 \(\hat{b}_1\)은 \(\textrm{RSS}\)를 최소로 만드는 값
    \begin{eqnarray} \textrm{RSS} &=& \sum_{i=1}^n\Big(\ Y_i - \hat{Y}_i \Big)^2\\&=& \sum_{i=1}^n\bigg(Y_i - \Big(\hat{b}_0 + \hat{b}_1X_i\Big)\bigg)^2\end{eqnarray}
    • 최소제곱회귀(least squares regression) 또는 보통최소제곱(OLS; ordinary least squares)

    \begin{eqnarray} \hat{b}_1 &=& \frac{\displaystyle\sum_{i=1}^n\Big(Y_i - \bar{Y}\Big)\Big(X_i-\bar{X}\Big)}{\displaystyle\sum_{i=1}^n\Big(X_i-\bar{X}\Big)^2} \\ \hat{b}_0 &=&\bar{Y}-\hat{b}_1\bar{X}\end{eqnarray}


    예측 대 설명

    • 회귀분석의 목적: 예측변수와 결과변수 사이에 있을 것으로 추정되는 선형 관계를 밝히는 것
    • 회귀방정식의 기울기 \(\hat{b}_1\)을 추정하는 것
      • 수집된 데이터를 설명하는 방법
        • 소비자 지출과 GDP 성장 간의 관계와 같이 개별 사건을 예측하는 것이 아니라 전체적인 관계를 이해하는 데 초점을 맞춤
      • 새로운 데이터에 대한 개별 결과를 예측하는 모델 구성
        • 주된 관심은 적합값 \(\hat{Y}\)
        • 광고 캠페인의 크기에 따른 수익률 변화 예측
        • SAT 점수에 따른 학생의 평점 예측
    • 데이터를 적합한 회귀모형은 \(X\)의 변화가 \(Y\)의 변화를 유도하도록 만들어진다.
      • 회귀방정식 자체가 인과관계를 정확히 증명하는 것은 아니다.
      • 인과관계에 대한 결론은 그 관계에 대한 더 폭넓은 인해를 바탕으로 내려야 한다.
      • 사례
        • 웹 광고에서 클릭 수와 전환률 간의 명확한 관계를 보여줄 수 있다.
        • 회귀방정식이 아닌 마케팅 프로세스에 대한 지식을 발휘하면 광고 클릭이 판매로 연결된다는 결론을 이끌어낼 수 있다.


    'Predictive Analytics' 카테고리의 다른 글

    모델 선택 및 단계적 회귀  (0) 2019.09.24
    모델 평가  (0) 2019.09.24
    단순선형회귀  (0) 2019.09.19
    대표적인 예측 분석 사례  (0) 2018.04.20
    Predictive Analytics  (0) 2018.04.16

    통계학의 가장 일반적인 목표

    • 변수 \(X\) 또는 \(X_1, X_2, \ldots, X_n\)가 변수 \(Y\)와 관련이 있는가?
    • 있다면 어떤 관련이 있는가?
    • 이 관계를 이용해 \(Y\)를 예측할 수 있는가?

    단순선형회귀

    • 종속변수(dependent variable): 예측하고자 하는 변수
      • 응답변수 또는 반응변수(response variable), \(Y\)-변수, 목표(target), 출력(outcome)
    • 독립변수(independent variable) 또는 예측변수(predictor variable): 응답값을 예측하기 위해 사용되는 변수
      • \(X\)-변수, 특성(feature), 속성(attribute)
      • 레코드(record): 한 특정 경우에 대한 입력과 출력을 담고 있는 벡터
        • 행(row), 사건(case), 예시(instance), 예제(example)
      • 절편(intercept): 회귀직선의 절편
        • \(x=0\)일 때의 예측값으로 \(b_0\) 또는 \(\beta_0\)로 표기
      • 회귀계수(regression coefficient): 회귀직선의 기울기
        • 기울기(slope), 모수 추정값(parameter estimate),  가중값(weight)
        • \(b_1\) 또는 \(\beta_1\)로 표기
      • 적합값(fitted value) 또는 예측값(predicted value): 회귀직선으로부터 얻은 추정값
      • 잔차(residual) 또는 오차(error): 관측값과 예측값과의 차이
      • 최소제곱(least square): 잔차의 제곱합을 최소화하여 회귀를 적합하는 방법

      • 단순선형회귀(simple linear regression): 한 변수와 다른 변수의 크기 사이에 어떤 관계가 있는지 보여주는 것
        • \(X\)가 증가하면 \(Y\)도 증가
        • \(X\)가 증가하면 \(Y\)는 감소
      • 상관관계(correlation): 두 변수 사이의 전체적인 관점에서 관련 강도를 측정
      • 회귀(regression): 관계 자체를 정량화하는 방법 

      회귀식

      • 단순선형회귀를 사용하면 \(X\)가 얼마만큼 변하면 \(Y\)가 어느 정도 변하는지를 정확히 추정 가능
      • 상관계수는 \(X\)와 \(Y\)의 값이 바뀌어도 상관없이 두 변수간의 관련 강도를 측정할 수 있다
        • \(X=\{x_1, x_2, \ldots, x_n\}\)의 평균이 \(\bar{x}\)이고, \(Y=\{y_1, y_2, \ldots, y_n\}\)의 평균이 \(\bar{y}\)일 때 \((X,Y)\)의 상관계수(correlation coefficient)

      \begin{eqnarray} \rho_{XY} &=& \frac{\textrm{cov}(X,Y)}{s_Xs_Y}\\ &=& \frac{\sum_{i=1}^n(x_i-\bar{x})(y_i-\bar{y})}{\sqrt{\sum_{i=1}^n(x_i-\bar{x})^2 \sum_{i=1}^n(y_i-\bar{y})^2}}\end{eqnarray}

      • 회귀에서는 다음 회귀식(regression equation)으로 선형관계(linear relationship)를 사용해 변수 \(X\)로부터 변수 \(Y\)를 예측하고자 한다.
      \begin{eqnarray} Y &=& b_0 + b_1X\\ Y&=&\beta_0+\beta_1X \end{eqnarray}
      • 우리가 흔히 알고있는 직선의 방정식 \(y=ax+b\)와 쓰는 순서가 다르다
        • \(b_0\): 절편
        • \(b_1\): 기울기 또는 계수
        • \(Y\): \(X\)의 값에 따라 달라지므로 종속변수나 응답변수 또는 목표벡터
        • \(X\): 독립변수나 예측변수 또는 피처벡터


      회귀식 예제

      • 노동자가 면진에 노출된 연수(Exposure)와 폐활량(PEFR) 사이에 어떤 관계가 있을까?
      • 두 데이터의 산점도만 보고서는 어떤 관계가 있다고 딱히 뭐라 말하기가 어렵다.
      • 단순선형회귀는 예측변수 Exposure에 대한 함수로 응답변수 PEFR을 예측하기 위한 가장 최선의 직선을 찾는다.
      \begin{eqnarray} \textrm{PEFR} = b_0 +b_1\cdot\textrm{Exposure}\end{eqnarray}


      • 회귀분석 모델링 R code
      > model <- lm(PEFR ~ Exposure, data=lung)
      > model
      
      Call:
      lm(formula = PEFR ~ Exposure, data = lung)
      
      Coefficients:
      (Intercept)     Exposure  
          424.583       -4.185  
      
      
        • linear model
      \begin{eqnarray} \textrm{PEFR} = 424.583 - 4.185\cdot\textrm{Exposure}\end{eqnarray}



      'Predictive Analytics' 카테고리의 다른 글

      모델 평가  (0) 2019.09.24
      최소제곱법  (0) 2019.09.24
      대표적인 예측 분석 사례  (0) 2018.04.20
      Predictive Analytics  (0) 2018.04.16
      Python 준비  (0) 2017.03.31

      + Recent posts