https://ukchanoh.wordpress.com/2015/02/16/multicollinearity/

 

언제 다중공선성(multicollinearity)을 무시해도 괜찮은가?

생각해보니 통계분석에서 가장 많이 받았던 질문 주제 중의 하나가 다중공선성이었다. 다중공선성은 절대적인 진단기준도 없을 뿐더러 처치방법도 별로 없으니 크게 신경쓰지 말라는 취지의 얘기를 주로 했는데 그리 책임있는 답변은 아닌 듯 하다. 이 문제와 관련하여 Paul D. Allison 교수(University of Pennsylvania)의 아래 글이 …

ukchanoh.wordpress.com

 

1. 관심변수가 아닌 통제변수인 경우

  - 관심변수의 VIF 값은 낮은 경우

 

2. interaction term 또는 power와의 관계

  - 증명될 수 있다고 함

 

3. 3개 이상의 범주를 가지는 더미변수

 

 

 

 

https://statisticsbyjim.com/regression/multicollinearity-in-regression-analysis/

 

Multicollinearity in Regression Analysis: Problems, Detection, and Solutions - Statistics By Jim

Multicollinearity is when independent variables in a regression model are correlated. I explore its problems, testing your model for it, and solutions.

statisticsbyjim.com

  1. Multicollinearity affects the coefficients and p-values, but it does not influence the predictions, precision of the predictions, and the goodness-of-fit statistics. If your primary goal is to make predictions, and you don’t need to understand the role of each independent variable, you don’t need to reduce severe multicollinearity.
    예측이 목적이며, 설명변수에 대한 이해가 필요하지 않다면 다중공선성을 그리 걱정하지 않아도 된다??
      ㆍThe fact that some or all predictor variables are correlated among themselves does not, in general, inhibit
         our a
    bility to obtain a good fit nor does it tend to affect inferences about mean responses or predictions of
         new observations.  —Applied Linear Statistical Models, p289, 4
    th Edition.

'분석 > 통계' 카테고리의 다른 글

Time Series 3  (0) 2019.03.14
Time Series study2  (0) 2019.03.11
Time Series study  (0) 2019.03.09
최종 머신러닝 모형에서 variance를 줄이는 방법  (0) 2019.03.09
추세선의 증가하는 정도를 아는 방법 : 선형회귀분석  (0) 2019.03.05

 

< ARIMA model >

 - exponential smoothing은 데이터에서 trend와 seasonality를 설명하는 것을 기본으로 한다.

 - ARIMA는 데이터의 autocorrelations를 설명하는 것을 목표로 한다.

    → 둘은 상호보완적으로 다루어진다.


□ Stationarity and differencing

  - stationary time series : 관측된 시기에 영향을 받지 않는다.

    → white noise (trend, seasonality가 없는 상태)

        cyclic behaviour를 가지고 있더라도 trend나 seasonality가 존재하지 않으면 stationary 한 것이다.

        ∵ 사이클은 고정된 길이를 가지고 있지 않기 때문이다.(관측하기 전에 고점, 저점을 확신할 수 없음)

  - differencing : non-stationary → stationary

    → 연속적인 관측값 사이의 차이를 계산하라.

    로그변환은 ts data에서 variance를 안정화함

    Differencing은 mean을 안정화한다.(trend와 seasonality를 감소시킨다.)


  - Random walk model

    ㆍdifferenced series : 


    ㆍrandom walk model :  (white noise)

       → 장기간에 걸친 분명한 상승/하강 trend

           갑작스럽거나 예상치못한 방향의 변화

           예측값은 미래의 움직음을 예측할 수 없기 때문에 마지막 관측값과 같다.


  - Second-order differencing : 한번으로 stationary가 안되어 한 번 더 필요할 때

  - Seasonal differencing :  (lag-m differences)


  - differencing이 사용되었을 때, differences에 대해 설명가능해야 한다.


  - Unit root test : differencing이 필요한지를 판단하는 객관적 방법

    ㆍH0 : the data are stationary.

       cf) ur.kpss( ) / library(urca)

           ndiffs( ) : 몇 번의 difference를 추천하는가?

           nsdiffs( ) : seasonal data



□ Backshift notation


  -  (B operating on y_t )

  - back two periods : 

  - describing the process of first differencing : 

  - second order differences : 

  - a seasonal difference followed by a first difference can be written as :

 

    



□ Autogressive models

  - In an autoregression model, we forecast the variable of interest using a linear combination of past values of the variable.

    : 그 자체에 대응하는 변수의 회귀이기 때문에 autoregression이라는 용어를 사용


  - an autoregressive model of order p 

    :    (white noise)

    :  AR(p) model


    ㆍremarkably flexible at handling a wide range of different time series patterns.

    ㆍ계수의 변화에 따라 다른 패턴을 내놓는다.

    ㆍ오차는 오로지 series의 scale만을 변화시키고, 패턴 그 자체는 변화시키지 않는다.


  - 모델을 stationary한 데이터로 제한하기 위해 일반적으로 계수의 범위를 제한한다.(보통 -1~1 사이, p가 증가할수록 제약도 복잡해짐)



□ Moving Average models

  - 과거의 값을 사용하기보다, 과거 예측의 오차를 사용하는 모델

    :  

    : MA(q) model

  - 입실론의 variance는 오로지 series의 scale만을 변화시키고, 패턴 그 자체는 변화시키지 않는다.

  - AR(p) 모델은 MA()로 표현할 수 있다.

    : 

  - MA(q) 모델 또한 AR()로 표현이 가능

    : 


    1) abs(theta) > 1 : 시점으로부터 먼 값에 가중치를 더 준다.

    2) abs(theta) = 1 : 가중치가 모두 일정함

    3) abs(theta) < 1 : 시점으로부터 가까운 값에 가중치를 더 준다.(invertible)

 


□ Non-seasonal ARIMA models (Integration)

  - AR + MA : Non-seasonal ARIMA models

    :  

  - ARIMA(p, d, q) model

    ㆍp = order of the AR part

    ㆍd = degree of first differencing involved

    ㆍq = order of the MA part


  1) ARIMA(0, 0, 0) : White noise

  2) ARIMA(0, 1, 0) with no constant : Random walk 

  3) ARIMA(0, 1, 0) with constant : Random walk with drift

  4) ARIMA(p, 0, 0) : AR(p)

  5) ARIMA(0, 0, q) : MA(q)

  - Backshift notation 

    : 

    → R에서는 다른 표기법을 쓰기도 함 (차분 부분의 평균이동으로)

        적절한 p,d,q를 찾는 것은 어렵지만, R에서 auto.arima( ) 를 이용하면 자동으로 이 값을 얻을 수 있다.


  - c : long-term forecasts에 영향을 미친다.

  - d : prediction intervals에 영향을 미친다. (the higher d , the more rapidly the PI increase in size)

    ㆍd=0 → Long-term forecast sd 는 historical data의 sd와 같아진다. 그래서 PI 또한 동일해질 것이다.

  - p : cycle이 있는 경우 중요하다.

    ㆍcyclic forecasts를 얻으려면 p는 반드시 2 이상의 값이어야 한다.


□ ACF and PACF plots

  - partial autocorrelations : t번째와 t-k번째의 관계를 살필 때, 사이의 각 단계에서의 효과를 모두 제거하여 측정 (중복효과 방지를 위함)

  - k번째 partial autocorrelations 의 값은 AR(k)의 phi_k를 추정하는 것과 동일하다.



□ Estimation and order selection

  - MLE

  - AIC, BIC는 모델의 적절한 differencing order를 선택하는 가이드를 주지 않는다.

    단지 p, q를 선택하는데 도움을 준다.



□ Point forecast

□ Prediction Interval

  - differencing이 0이고 가정을 만족하면(stationary), 모든 구간에서 PI가 거의 같다.(수렴한다.)

  - d > 1 이면 PI는 지속적으로 증가할 것이다.

  - ARIMA-based model은 보통 아주 좁은 PI를 가지는데 이는 errors가 설명하는 variation만을 고려하기 때문이다.

    parameters를 추정하거나, 모델의 order에 대한 variation은 고려하지 않는다.

    또한 historical patterns가 미래에도 계속될 것이라는 가정이 필요하다.



□ Seasonal ARIMA models

  - including additional seasonal terms in ARIMA models(P,D,Q)

  - 차분이 들어간 모형이면 장기간 예측에서 PI는 지속적으로 커질 가능성이 높음(즉, 긴 기간에 대한 예측정확성이 낮음)

                                                                                                         → 그렇다면 단기간 예측에는 오히려 별 상관없이 쓸 수 ㅇ

  - variance가 증가하는 경향을 보일때 log변환은 적절한 방법



□ Test set evaluation

  - AICc 값으로 모델을 비교할 땐 같은 differencing order를 가지는 것이 중요했지만, 

    test set을 사용할 땐 그다지 중요하지 않다. 이러한 비교는 항상 타당하다.



□ ARIMA vs ETS

  - linear exponential smoothing model : special case of ARIMA

  - the non-linear exponential smoothing model : 적절한 ARIMA를 찾을 수 없음

                                                                 모든 ETS model은 non-stationary 지만 일부 ARIMA는 stationary 하다.



< Dynamic regression models >

  : we consider how to extend ARIMA models in order to allow other information to be included in the models.

    we will allow the errors from a regression to contain autocorrelation.

    error terms ~ ARIMA

    → 결국 모형은 두개의 오차항을 가지게 된다.(그중 ARIMA의 오차만 white noise를 가정)


  - 기존의 방식(LSE) 추정시 발생하는 문제 ( 추정 시)


     1) 추정된 계수는 best estimates가 아님 (계산 과정에서 몇몇 정보들은 무시된다)

     2) 통계적 가설검정의 결과를 신뢰할 수 없음

     3) AIC 값이 예측력을 평가하는데 좋은 지표가 아니게 됨

     4) spurious regression : 계수의 연관성과 관련하여 낮은 p-value를 출력하게 되어, 중요하지 않은 변수 또한 중요하다고 판단하게 될 수 있음


     → ARIMA의 오차항을 최소화하는 계수를 찾으면 이 문제들을 피할 수 있다.

        대안으로 MLE를 사용할 수 있다.

        ★ 가장 중요한 고려사항은 모델의 모든 변수들이 stationary 해야한다. (아닐경우 not consistent and not meaningful)

            단, non-stationary 한 변수들의 조합이 stationary 하다면 예외이다. (?)


      → 따라서 우선적으로 모델안의 non-stationary variables에 대해 difference 해야한다.

          (필요한 경우엔 모든 변수들에 대해 first difference를 수행할 수도 있다.)

          모델 안의 모든 변수들이 stationary하다면 ARMA errors for the residuals를 고려해야한다.


  - Regression with ARIMA errors in R



□ Stochastic and deterministic trends (linear trend)

  - Stochastic : 트렌드가 변할 것이다.

                    차분 필요함

                    PI가 크게 측정됨 (보수적)

  - deterministic : 트렌드가 변하지 않을 것이다.

                       차분 불필요

                       PI가 낮게 측정됨 (트렌드가 변하면 틀림)

  - 둘의 추정 계수(+ 예측값)은 비슷하되 PI는 아주 다를 수 있음



□ Dynamic harmonic regression

  - Long seasonal periods : 종종 Fourier terms를 가진 dynamic regression이 나은 경우가 있음.

  - 단점은 seasonality가 변하지 않는다고 가정하는 것이다.(실제로도 별로 변하지 않음)


    

□ Lagged predictors

  : 변수에 의한 영향이 즉각 반영되지 않고, 서서히 반영되는 경우

    stats::lag( ) 함수를 통해 변수를 밀 수 있음





Time series decomposition


□ Moving averages

  - Trend-Cycle을 추정하는데 사용

  - MA의 차수는 smoothness를 결정함( m↑ → smoother)

  - MA of MA : 가운데 자료에 가중치를 더 준다.(smoother)


□ Classical decomposition

  - assumption : the seasonal component is constant from year to year.

    * seasonal indices : 계절지수

  - 더 나은 방법들이 있기에 잘 쓰이진 않음.

    1) trend-cycle : 양 끝으로 사라지는 값이 존재 + over-smooth rapid rises and falls in the data

    2) seasonal component가 매년 반복될 것을 가정 but 그렇지 않은 경우가 많음. → 긴 시간 변화에 따른 seasonal change를 포착하지 못함.

    3) not robust to unusual values


□ X11 decomposition

  - quarterly and monthly data

  - based on classical decomposition

  - 양 끝 값에 대한 추정이 가능 + seasonal component : vary slowly over time.

  - has some sophisticated methods for handling trading day variation, holiday effects and the effects of known predictors. 

  - is entirely automatic and tends to be highly robust to outliers and level shifts


□ SEATS decomposition

  : Seasonal Extraction in ARIMA Time Series

  - works only with quarterly and monthly data.


□ STL decomposition

    * versatile : 다재다능한

  - will handle any type of seasonality, not only monthly and quarterly data.

  - be controlled by the user(change over time, the rate of change, the smoothness of the trend-cycle)

  - It can be robust to outliers 

  - unusual obs가 trend-cycle, seasonal components의 추정에 영향을 미치지 않지만,

    remainder component에는 영향을 미친다.

  - does not handle trading day or calendar variation automatically


  ★ parameters

      1) trend-cycle window(t.window) : is the number of consecutive observations to be used 

                                                           when estimating the trend-cycle

      2) seasonal window(s.window) : is the number of consecutive years to be used in 

                                                         estimating each value in the seasonal component. / 디폴트X

      → control how rapidly the trend-cycle and seasonal components can change.(smaller → rapid changes)

           should be odd numbers!




< Exponential smoothing >

  - 예측은 과거 값들의 가중평균이며, 순서가 멀어질수록 가중치가 낮아진다.


□ Simple exponential smoothing

  - is suitable for forecasting data with no clear trend or seasonal pattern.

  - 과거의 데이터보다 현재와 가까울수록 가중치를 둔다.

  - smoothing parameter : alpha in [0,1]


□ Trend methods

  - Holt's linear trend method



□ Trend, Seasonal, Cyclic

  Trend : 전반적으로 감소하거나, 증가하는 경향(changing direction)

  Seasonal : 일정하고 알려진 주기성

  Cyclic : 일정하지 않은 변동(ex. business cycle)


□ 비교군으로서의 some simple forecasting methods

  1. Average method : 기간의 평균으로 예측값

  2. Naive method : 마지막 값으로 예측값

  3. Seasonal naive method : 가장 최근의 주기에 해당하는 예측값

  4. Drift method : 마지막 값 + 트렌드


□ Transformations and adjustments

  - 목적 : 알려진 변동을 제거함으로서 패턴을 단순화, 더욱 일관성있는 패턴 생성

             → 패턴의 단순화는 더 정교한 예측을 이끈다.

    1. Calendar adjustments : 월들 간 보유한 날짜 수의 차이로 발생하는 변동(variation)

                                      → 월별 예측시 영입일수를 보정한 예측을 하는 것이 적절할 수 있음

    2. Population adjustments :  모집단의 수가 지속적으로 변할 때, 인당 예측을 활용 가능

                                      → 이용가능고객수의 변화가 콜수에 영향을 미치는 양을 고려할 수 있을 것

    3. Inflation adjustments : 돈에 영향을 받는 데이터라면 인플레이션에 대한 보정이 필요하다.


    4. Mathematical transformations : log, power, box-cox

                                                 → transformation이 예측값 자체에는 큰 변화를 주지 못하더라도, 

                                                     prediction interval에 큰 영향을 주는 경우가 있으니 참고.


    5. Bias adjustments : 기존에 back-transformation에서 median 대신에 mean을 사용 ?

                                → Box-Cox transformation에 대해 자세히 학습할 필요가 있을 듯?


□ Residual diagnostics

  1) 독립성 : 잔차 간의 상관관계가 존재한다면, 이용했어야할 정보가 아직 잔차에 남아있다.(해결이 쉽진 않음)

  2) 잔차의 합이 0이 아니다 → 그 만큼 예측값에 bias가 존재할 것이다.

                                     → 간단히 예측모델에 그 만큼을 더하면 bias를 처리할 수 있다.

  3) 등분산성, 정규분포 : prediction intervals의 계산을 쉽게 만들어준다.


  - 잔차의 특성을 확인하는 것은 이용가능한 정보를 모두 사용하고 있는가에 대한 점검 방법으로 가치가 있다.

    → 단, 예측 기법을 선택하는 좋은 방법은 아니다.


  - Autocorrelation 측정 방법 (portmanteau test)

    (1) Box-Pierce test

    (2) Ljung-Box test

    → 둘다 통계량은 white noise와 autocorrelation을 구분할 수 없다는 가정하에 카이제곱 분포를 따름

        이 차이가 클 수록 autocorrelation이 존재한다고 볼 수 있음.


□ Evaluating forecast accuracy

  - test set의 size는 보통 total sample의 20% 수준으로 정한다.

  - 완벽한 적합은 충분한 파라미터를 사용하면 언제나 얻어질 수 있다.



□ Prediction Interval
  - 예측의 신뢰성을 대변하기 위해 점 뿐만아니라 구간추정또한 제공한다.
    이를 구하기 위해 표준편차의 추정값이 필요한데,
    One step 의 경우 residuals의 표준편차는 좋은 추정치를 제공한다.
    Multi step의 경우 그렇게 간단하지 않다. 보통 잔차들이 uncorrelated 임을 가정한채로 구해진다.

  - 붓스트랩을 사용해 prediction interval을 정교화할 수 있다.

□ Judgement forecast
  1. 사용가능한 데이터가 없을 때
  2. 통계적 예측의 추가 보완


□ Regression in TS

  1. Autocorrelation : TS 데이터에선 보통 존재한다.

                            존재하는 경우 unbiased는 유지되지만, prediction interval을 과대추정하는 경향 있음

     1) ACF plot of the residuals

     2) Breusch-Godfrey test(Lagrange Multiplier) : small p-value → significant autocorrelation

        →  ACF plot으로 가장 자기상관이 존재할 것 같은 lag를 찾고, BG test 수행

             Chap.9 에서 잔차에 남아있는 정보를 더 잘 포착하는 방법에 대해 고민할 예정


  2. Residual vs predictor

     : 잔차는 어떠한 패턴을 보이지 않고 랜덤하게 퍼져있을 것이다.

       간단히 확인할 수 있는 방법은 predictors와 residuals를 비교하는 것이다.

       이 때, 모형에 포함하지 않은 변수에 대해서도 확인할 필요가 있고, 이들이 관계를 보이면(비선형이더라도) 모형에 추가 및 수정할 필요가 있음.

 

  3. Residual vs fitted values

     : 관계가 보이면 등분산 가정을 만족하지 않을 가능성이 높음

       log 등으로 transformation 고려


  4. Outliers and influential observations


□ Some useful predictors

  1. Trend : 시간을 변수로 추가하면, 쉽게 trend의 계수를 추정할 수 있다.

     - tslm( ) 함수에서 trend 를 이용해 구현 가능 

  2. dummy variable : outlier를 special event 변수로 두고 모델링 할 수 있다.

  3. Seasonal dummy variables 

  4. Intervention(개입) variables : 경쟁사 활동, 광고, 산업 내 이벤트 등

     - spike variable : 이벤트 기간 동안만 1의 값을 갖는 더미변수

     - step variable : 이벤트 개입으로 영구적인 변화가 생겼을 경우, 이벤트 발생 이전/이후로 더미 코딩

     - change of slope : 나중에 다룸

  5. Trading days : 월별 영업일이 다를 수 있다.

     1) 월별 영업일수를 예측변수에 추가

     2) 7개의 변수를 사용해 해당 월이 각 요일별로 포함한 일수를 예측변수에 추가

  6. Distributed lags : 광고비용을 포함

                            단, 광고효과는 나중에 나타나므로 월별로 나누어서 변수를 지정

                              ex) x1 : 한달 전 광고, x2 : 두달전 광고  ...

                            lag가 증가할 수록 계수는 감소할 것을 기대한다.

  7. Easter(부활절) : 날짜 말고 요일로 지정되는 휴일 고려

                          기간을 잘 찾아서, 기간동안 더미화

  8. Fourier Series : long seasonal period에 사용

                         파형에서 데이터를 끌어내는 방법?


□ Selecting variables

  1. 산점도, multiple linear regression의 결과로 계수의 p-value만 보고 일부 변수를 선정하는 것은 추천하지 않음.

  2. 대신, predictive accuracy에 대한 측정을 활용 : cv( )으로 계산됨

               - CV, AIC, AICc, BIC, AdjR2

    1) AdjR2 : 너무 많은 변수를 선택하는 경향이 있고, 예측엔 적절하지 않은 듯

    2) BIC : 트루 모델이 존재하면, 가장 가깝게 예측하는 경향이 있으나 실제론 그렇지 않음

    3) AICc, AIC, CV를 추천함 : 관측값의 수가 커질 수록 세 값은 같은 결론을 지지함

       - AICc : AIC는 관측값의 수가 적을 때, 너무 많은 변수를 선택하는 경향이 있어 Bias를 보정한 기준치

  3. Best subset regression

  4. Stepwise regression

  → 이 방법들은 각 변수가 예측값에 미치는 영향을 확인하기엔 좋지 않음.

      단지 예측을 위한 것일 뿐임에 유의


□ Forecasting with regression

  1. Ex-ante vs Ex-post

     - EX-ante : 미리 이용가능한 정보만 사용하여 예측 / 실제 예측 활용 가능

     - EX-post : 나중에 이용할 정보로 예측 / 실제 예측엔 활용 불가(변수에 대한 이해를 위함)

     → 이 둘의 비교를 통해 예측력이 변수 선택 때문인지, 모형 때문인지 알 수 있다.

         Ex-post에 의해 사용 불가해 보이지만, 추가로 예측하는 scenario에 기반하여 변수로 사용할 수 도 있음(가정 추가)

         시나리오 기반 예측은 다른 변수 또한 예측해야한다는 단점이 존재

         → h-step ahead forecast로 Ex-ante(미리 이용가능한 정보에 의한 예측)으로 미래 시점 예측 가능

             이 과정에서 정책 변화로 인해 드러나는 효과 등이 직관적으로 드러날 수 있다.

How to Reduce Variance in a Final Machine Learning Model

by  on August 13, 2018 in Machine Learning Process

(https://machinelearningmastery.com/how-to-reduce-model-variance/)




최종 모형은 예측에 있어서 variance에 의해 고통받는다.

실무 환경에서는 더욱 그러한 경우가 많다.


□ 포스트의 목적

  1) 최종으로 만들어진 모형 예측에서 variance 문제 이해

  2) 모형의 variance 측정 방법과 일반적으로 파라미터 추정시 var가 어떻게 다루어지는 방식 이해

  3) 최종 모형의 예측에서 var를 줄일 수 있는 기술


□ Final model : 머신러닝 프로젝트의 산출물


□ Bias and Variance

  - Bias : 학습할 수 있는 범위를 좁히는 가정

            현실과 가정이 다른 경우를 cost로 하여, 학습을 빠르고 안정적으로 만듬

  - Variance : 데이터 특성에 대한 학습의 민감도(sensitivity)

                  모형을 데이터에 특수화(specialized) 할 때 유용

                  random noise 또는 다른 데이터에서 교육받을 때 마다 달라지는 것을 cost로 함


□ The Problem of Variance in Final Models


□ Measure Variance in the Final Model

  - common sources of variance in a final model

    1) The noise in the training data

    2) 머신러닝 알고리즘에서 randomness의 이용


  - training data를 활용하여 두 타입의 var 측정 가능

    1) Measure Algorithm Variance : 알고리즘의 확률적 성격(stochastic nature)에 의해 유도된 var

                                               동일한 training set에서 평가를 반복하며 측정 가능

    2) Measure Training Data Variance : training data에 의해 유도된 var  

                                                   training set의 다른 샘플에 대한 평가를 반복하며 측정 가능

    → combined variance : k-fold CV


□ Reduce Variance of an Estimate

  - variance를 줄이고 싶다면, bias를 더해야 한다.

    random sample에서 평균을 추정하는 것과 같은 모집단의 모수를 추정하는 단순한 통계적 추정에 대해 생각해보자.

    평균에 대한 하나의 추정은 high variance and low bias를 가질 것이다.

    만약 우리가 이 과정을 30번 반복하고 추정된 평균값들의 표준편차를 계산한다면 우리는 large spread를 볼 수 있기 때문에 이는 직관적이다.


    분산을 줄이는 해결책 또한 직관적이다.

    CLT에 의거하여 많은 다른 샘플들에 대한 추정을 반복하고 추정치의 평균을 계산해보자.

    추정된 평균들의 평균은 lower variance를 가진다.

    추정된 값들의 평균이 단일 추정에 비해 더욱 정확할 것이라는 가정에 의해 bias를 증가시켰다.

    다른 접근은 대수의 법칙에 의거하여 모평균을 추정하고자 하는 data sample의 사이즈를 극적으로 키우는 것을 고려할 수 있다.


□ Reduce Variance of a Final Model

  - 위의 모수의 variance를 줄이는데 사용되는 원칙은 final model의 variance를 줄이고자 하는데 또한 사용될 수 있다.

    우리는 Bias를 추가해야한다.


□ Fragile Thinking

  - 단점을 제한하고 최고의 평균성과를 목표로하는 것이 더 안전하다.

    



'분석 > 통계' 카테고리의 다른 글

Time Series study2  (0) 2019.03.11
Time Series study  (0) 2019.03.09
추세선의 증가하는 정도를 아는 방법 : 선형회귀분석  (0) 2019.03.05
자기상관(Autocorrelation)  (0) 2019.03.02
통화수요예측을 위한 자료수집  (0) 2019.02.25



쿠폰 1장을 가져가면 n개의 사탕을 주는 가게가 있다고 하자.


첫째 날 1장을 가지고 가 2개의 사탕을 받았고,

둘째 날 2장을 가지고 가 4개의 사탕을 받았고,

셋째 날 3장을 가지고 가 6개의 사탕을 받았고,

넷째 날 4장을 가지고 가 8개의 사탕을 받았다.


다음 날 쿠폰을 10장 가져간다면 몇 개의 사탕을 받을 수 있을까?

물론 아닐수도 있지만, 대부분은 20개의 사탕을 받을 수 있을 것이라고 예상하고 이러한 추론은 어느정도 타당하다.



다음으로  이렇게 다시 가정해보자.


첫째 날 1장을 가지고 가 2개의 사탕을 받았고,

둘째 날 2장을 가지고 가 3개의 사탕을 받았고,

셋째 날 3장을 가지고 가 6개의 사탕을 받았고,

넷째 날 4장을 가지고 가 7개의 사탕을 받았다.


이럴 때면 다음 날 쿠폰을 가져갈 때 받을 수 있는 사탕의 개수를 짐작할 수 있을까?

확신할 순 없지만 어느정도 받을 수 있을거라는 감은 있을 것다.

이 또한 아닐 수 있지만, 어느정도 타당하게 여겨질 것이다.



첫번째 사례에서 쿠폰 당 2개의 사탕을 준다고 짐작했다면,

두번째 사례에선 쿠폰 당 사탕 몇 개를 주는지 어떻게 말할 수 있을까?


아래의 선에 대해 생각해보자.



우리는 네 점을 이어주는 선에 대해 고려할 수 있다.

하지만 하나의 직선으로 4개의 점을 한 번에 이을 순 없다.

그렇다면 모든 점을 다 지나진 않는 직선을 그리던가, 네점을 모두 이을수있는 곡선을 생각할 수 있다.


첫째로 곡선을 그었을 때, 쿠폰을 10장 가져가면 몇장을 받을 수 있을지 쉽게 떠올릴 수 있을까?

내 머릿 속에서 쉽게 떠오른다고 해도 다른 사람이 타당하다고 할 수 있을까?

불가능하진 않지만 너무 복잡하고, 그렇게까지 완벽하게 알고 싶진 않을 것이다.(사실 완벽하지도 않음.)


다시 모든 점을 다 지나진 않지만, 단순한 직선을 생각해보자.

이 직선을 그으면 직선의 기울기가 주어지기 때문에 한 개의 쿠폰 당 몇개의 사탕을 받을지 쉽게 짐작할 수 있다.

이렇게 직관적으로 이해하기 편하기 때문에 두 변수 간 추세(선형 증감)을 판단하는데는 선형회귀분석을 활용한다.


단순한 직선을 긋기로 했으니, 이제 이 직선을 어떻게 그어야 다른 사람(상사)이 합리적으로 받아들일 수 있을까?

  - 우리는 직선을 긋고나면 예측값으로 직선 위의 점을 선택할 것이다.

    현재 가지고 있는 값(이 경우엔 4개의 점)을 알고 있으니, 

    쿠폰의 개수가 같을 때 직선 상의 점과 실제 점 사이의 차이가 가장 작아지도록 만들면 좋을 것이다.


    수식을 적어서 보이기 번거로운 관계로, 이러한 작업을 수행하여 위의 직선을 그리는 방법이 "회귀분석"이다.

    다만 직선 상의 점과 실제 점 사이의 차이를 어떻게 정의하느냐에 따라 이 직선은 달라질 수 있다.

    (합리적으로 받아들일 수 있는 직선을 긋는 것이지, 결코 어떤 상황에서도 들어맞는 최고의 직선을 찾는 것이 아니다.)


    이 경우엔 쿠폰 한 장당 1.8개(직선의 기울기)의 사탕을 받을 수 있을거라고 생각할 수 있다.


> lm(candy~coupon,data=a)


Call:

lm(formula = candy ~ coupon, data = a)


Coefficients:

(Intercept)       coupon  

        0.0          1.8  


   

예제가 간단하여 이러한 직선이 왜 필요할지 납득하지 못할 수도 있다.

아래의 예제를 살펴보자.

온도(temp)와 자전거 렌탈 수요(count)에 대한 정보이며, 자료는 약 10,000개의 행을 가지고 있다.

아래의 그림은 10,000개 中 랜덤하게 1,000개를 뽑아 대응하는 점을 찍은 것이다.




이것을 보고 23도일 때의 자전거 수요를 바로 이야기할 수 있을까?

이런 경우에 위의 예제보다 더욱 효과적으로 회귀직선을 사용할 수 있을 것이다.

아래는 회귀직선을 그은 것이다.



> mdl <- lm(count~temp, data=train[smp,])

> mdl


Call:

lm(formula = count ~ temp, data = train[smp, ])


Coefficients:

(Intercept)         temp  

     22.783        8.333  


직선을 그을 수 있고, 1도가 올라갈 때 약 8개의 자전거 수요가 상승한다고 말할 수 있을 것이다.


이 자료의 경우 자료 자체가 가진 퍼진 정도가 크고, 자전거 수요가 낮은 경우가 많기에 눈에 보이는 것보다 직선이 낮게 잡혔다.

이 직선으로 특정 일자의 자전거 수요를 예측한다면, 잘 맞추는 것을 기대하긴 어려울 것이다.

하지만 눈으로 보기에 어지러운 자료들을 어떤 기준으로 정리하여 직선으로 나타낼 수 있다는 것에 의의가 있다.


인공지능, 딥러닝 등을 논하는 시기에 왠 선형회귀냐 하겠지만

호랑이 잡는 칼(?)로 사과를 깎을 수 없듯, 직관적으로 추세를 확인하기에 여전히 긍정적으로 활용할 여지가 있다.

(사실 선형회귀를 모르면 딥러닝 원리도 이해할 수 없다.)


=========================================================================


위의 진행은 통계 프로그램인 R로 진행되었다.

이 추세선의 정도(기울기)를 엑셀로 구하려면 어떻게 해야할까?

다행히 하나하나 계산하지 않아도 'LINEST', 'INTERCEPT' 의 두가지 함수로 선형회귀의 계수를 구할 수 있다.

※ 수식 또는 입력해야할 자료에서 y는 분석(예측)할 값, x는 분석(예측)을 위해 준비된 값을 말한다.




위에서 R로 구한 값과 왜 다르지? 라고 생각하시는 분을 위해 아래에 결과를 제시한다.

자료는 동일하지만, 위에서는 10,000개의 점을 모두 찍으면 시각적으로 보기가 싫어서 1000개만 샘플링하고 회귀직선을 만든 것이기 때문에 다르다.






이상 수식이 없어 실망하실 수 있지만, 엑셀로 회귀계수 구하는 법을 찾다가 작성한 내용이기에 양해를 구한다.

회귀 직선이 타당한지를 살피는 여러가지 기준과 방법이 있는데, 

이는 회귀직선의 계수를 어떻게 구하는 지를 이해해야 올바르게 사용이 가능하므로 여기서 다루지 않는다.

(다른 분의 블로그 들어가서 찾아봐도 많음...)

'분석 > 통계' 카테고리의 다른 글

Time Series study  (0) 2019.03.09
최종 머신러닝 모형에서 variance를 줄이는 방법  (0) 2019.03.09
자기상관(Autocorrelation)  (0) 2019.03.02
통화수요예측을 위한 자료수집  (0) 2019.02.25
통계란 무엇일까?  (0) 2019.02.24
통계학은 오차의 과학이다.

회귀문제는 가지고 있는 자료로 표현할수 있는 부분(신호)과 그렇지 못한 부분(소음, 오차)을 구분하는 좋은 방법이다.

이상적으로 표현하고 싶은 현상을 주어진 자료로만 표현하고자 하는 경우 신호에 접근할 수 있는 상한은 존재할 것이다.

예를 들어 카드사 콜센터에 인입되는 통화량을 예측할 때 고객의 결제일은 중요한 변수이다. 하지만 결제일이 중요한 변수라는 것을 모르고 있다면 이 부분의 신호를 파악하기 어렵다.

회귀모델을 만들때 오차항에 대한 가정을 하고 신호와 오차를 분리한다. 주어진 자료로 우리가 가정한 오차만큼을 제외한 부분을 잘 설명할 수 있다면, 우리가 만들어낸 모델은 적합하다고 할 수 있다. 이를 평가하기 위해 모델을 만든 후 잔차의 패턴으로 모델의 적합성을 진단한다.

시계열 자료를 분석하는 회귀모형을 만들때도 잔차의 패턴을 보고 모형적합성을 진단할 수 있다. 관측된 값을 시간순으로 정렬한 후 잔차의 패턴을 살펴보았을때 일정한 주기성, 트렌드를 보인다면 오차를 잘 구분해낸 모형이라고 할 수 없다.

1) 구분해내지 못한 오차를 표현할 수 있는 변수를 찾는다면 이러한 문제가 해결될 것인가?
-> 그렇다고 생각함. 이러한 문제가 발생하는 것은 시계열 자료의 특수성이라기 보다 타겟값에 영향을 미치는 추가적인 요인을 발견하지 못한 것이다. 이런 관점에서 시계열 자료라는 특수성은 문제를 다른 관점에서 해결할 수 있는 힌트가 된다.

2) 힌트란 무엇인가?
-> 우리가 확보하지 못한 중요한 변수를 새롭게 발견하는 것은 어렵다. 하지만 오차가 직전의 값에 일정한 영향을 받는다는 정보만으로 이 현상을 나타내는 변수를 생성할 수 있다. 물론 이 변수가 어떤 곳에 기인하는지는 확인이 어려운 경우가 많을 것이다.

직전 오차에 일정한 값(r)을 곱한 값과 새롭게 정의할 오차의 합으로 현재 시기의 오차를 정의할 수 있다. 이 정의를 바탕으로 기존의 회귀식을 변형한 새로운 회귀식을 표현할 수 있다. 새로 만들어진 회귀식의 오차는 정규성, 등분산성, 독립성 등을 따를 것으로 가정하고 모수를 추정할 때 r도 추가로 추정할 수 있다.

이렇게 우리는 가지고 있지 않은 변수이지만, 시간(또는 순서)에 영향을 받을 것이라는 믿음으로 개선된 회귀모형을 추정할 수 있다. 즉 우리가 원하는 가정에 만족하는 만큼 소음과 신호를 분리할 수 있다.

1. 자전거 수요 예측

  - https://brunch.co.kr/@gimmesilver/2

  - 자전거 수요를 예측하는 프로세스

  ※ 통화수요를 예측한다는 것과의 차이점...

  - 다른 캐글 커널을 살펴보는 것도 가능할 듯


2. 패키지 수동 다운로드

  - https://rfriend.tistory.com/tag/R%20package%20%EC%88%98%EB%8F%99%EC%84%A4%EC%B9%98


3. 참고논문

  1) Interday Forecasting and Intraday Updating of Call Center Arrivals


4년간 통계학을 공부했다.


누군가에겐 짧고, 또 누군가에겐 긴 시간인 4년은 무의식 중에 여러가지 철학을 안겨주었을 것이다.


고작 이정도로 학문을 논한다는 반발이 조금 두렵지만, 


지금까지 내 인생에 약 15%를 할애한 곳에서 어떠한 철학도 말할 수 없다는 그게 더 두려운 일이 아닐까?




본질적으로 통계학은 의사결정을 위한 학문이다.


주장에 대한 근거를 정량화(측정)하기 위해 사용한다.


현재 우리가 측정할 수 있다고 생각하는 것들은 그들을 측정하고자 했던 사람들의 노력에 의한 것이다.


수리통계에서 '어떻게 조금이라도 합리적으로 측정할 것인가?' 를 논의한다.


  - 먼저 event를 어떻게 수에 대응할지를 고민하고, 측정한 여러 대상을 어떻게 요약할지 고민한다.


    요약한 값을 바탕으로 현상의 이상여부를 확률(분포)적으로 판단한다.

    (확률이 낮다고 반드시 아니라고 할 순 없지만, 합리적인 의사결정을 위해 기준을 마련한다.)


    이 모든 과정은 합리적이라고 판단되는 어떤 의도에 의해 시도되며, 그것은 합리적으로 받아들여진다.




위의 의견을 말했지만 학업기간은 이 내용에 충실하지 않았다.


오히려 알고리즘 등 기술적인 부분에 대해서 중요하다고 생각해서 여기에 더욱 관심을 가졌다.


반년 이상 통계를 공부에서 멀어진 후 생각해보니 


알고리즘과 예측력을 공부하는 것보다 중요한 것은 본질적으로 측정에 대한 것이지 않을까? 하는 생각을 하게 된다.


'어떻게 측정할 것인가?'가 결국 이 학문을 아우르는 본질적인 질문이 아닐까 생각해본다.



다시 말하지만, 이것은 사실이 아닌 개인의 의견이다.



1. 

https://shiring.github.io/machine_learning/2017/01/15/rfe_ga_post

  - 데이터셋에 대한 다양한 변수선택 방법과 그 비교

  - 누군가 한글로 rough하게 번역해둔 페이지도 있었던 것 같음.

  - Boruta Feature Importance는 무엇...



2. https://www.youtube.com/watch?v=ClAZQI_B4t8

  - Winning Data Science Competitions: Jeong-Yoon Lee

   - 말그대로 데이터사이언스 대회 관련한 팁이 담긴 1시간 30분짜리 영상

   - 단, 전부 영어..


+ Recent posts