상세 컨텐츠

본문 제목

[Practical Statistics for Data Scientists] A팀:Prediction Using Regression

본문

Prediction Using Regression

The Dangers of Extrapolation

extrapolation: 모델링에 사용된 데이터의 범위를 벗어난 부분까지 모델을 확장하는 것

: 회귀모형을 데이터 범위를 초과화면서 사용해서는 안 된다. 회귀모형은 충분한 데이터 값이 있는 예측변수에 대해서만 유효하다. 예를 들어, model_lm에서 공터 가격을 예측한다면, 터무니없는 결과가 나오는데(음수) 이 데이터 레코드에는 건물에 대한 데이터만 있기 때문이다. 즉, 땅에 대한 레코드가 없기에 데이터 범위를 초과하게 된다.

 

 외삽은 모델의 정밀도와도 관련이 있는데, 예를 들어, 머신러닝 모델을 훈련하여 90% 정밀도가 나오면 "그 모델을 사용하면 항상 90%의 정밀도가 나온다"라고 생각하는 오류를 범할 수 있다. 만약 훈련 시에 입력하지 않은 범위 외의 입력 데이터를 전달하는 경우, 그 출력 결과는 실제로는 신용하기 어렵다.

https://doooob.tistory.com/27

딥러닝에서 extrapolation을 가능하게 하는 기법이 있는데, 관심 있으시면 읽어보셔도 좋을 것 같습니다!😊

Confidence and Prediction Intervals

Q confidence intervals VS prediction intervals

: 신뢰구간은 고정된 값을 위한 것이고 예측 구간은 moving target을 위한 값이다. 만약 이해가 가지 않는다면, 이 글을 계속 읽어보자.

신뢰구간 = 여러 값에서 계산된 평균이나 다른 통계량 VS 예측구간 = 하나의 값에 대한 불확실성

회귀분석은 보통 회귀식을 활용해 무엇인가를 예측한다. 이 때 회귀식으로 구한 예측값은 점추정치이기 때문에, 예측값에는 에러가 존재한다. 따라서 예측값을 구간으로 설정하는데, 이것이 신뢰구간이다.

신뢰구간은 주어진 x에 대해 평균값(통계량)에 대한 신뢰구간을 말한다. 에러의 평균이 0이라는 조건이 있기 때문에 y값이 랜덤일지라도, 그 평균은 고정된 값이다.

예측구간은 새롭게 관측된 future value Y에 대한 예측이기 때문에, 이 값은 moving target이다. 한 마디로 신뢰구간과 예측구간은 사용하는 상황이 다르다.

confidence interval 은 β(beta) 의 추정 오차에 기인한 β 의 신뢰도 범위이고 (ε 제외)

prediction interval은 ε(epsilon) 잡음까지 고려하여 실제 데이터가 관측될 범위를 구하는 것

따라서 prediction interval 은 σ2 을 더한것임 ( Var(ŷ) = Var(ŷ) + Var(ε) )

즉, 예측구간이 같은 값에 대해 신뢰구간보다 훨씬 넓다. 부트스트랩 모델에서 예측값에 추가할 개별 잔차를 선택하는 방식으로 이 개별 값의 오차를 모델링한다. 이 경우, 일반적으로 특정 개별 예측에 관심이 있으므로 예측구간이 더 적절하다. 예측구간을 사용해야하는 데 신뢰구간을 사용하면, 예측값의 불확실성이 지나치게 낮게 나올 수 있다.

https://otexts.com/fppkr/prediction-intervals.html

 

3.5 예측 구간 | Forecasting: Principles and Practice

2nd edition

otexts.com

  • P개의 예측 변수와 n개의 행이 있을 때, 회귀 파라미터에 대한 신뢰구간 생성하기 위한 부트스트랩 알고리즘
  1. 각 행을 하나의 티켓이라고 생각할 때, n개인 티켓을 박스에 넣었다고 가정
  2. 무작위로 티켓을 뽑아 값을 기록하고, 다시 박스에 넣음(복원 추출)
  3. 2번 과정을 n번 반복 = 부트스트랩 resampling
  4. 2~4번 과정을 1000번 반복
  5. 각 계수에 대해 1000개의 부트스트랩 → 각각에 대해 적합한 백분위 수를 구함

실제로 관심이 있는 것은 회귀계수가 얼마인지, 예측된 값의 구간에 관심이 있다.

  • 무엇이 적합한 예측변수인지, 그 계수가 얼마인지에 따른 불확실성
  • 개별 데이터 값에 존재하는 추가적인 오류

Factor variables in Regression

:범주형 변수(categorical variable)라고도 불리는 요인변수(factor variable)는 개수가 제한된 이산값을 가진다. 예를 들어, 대출 목적이라는 변수는 ‘부채 정리’, ‘결혼’, ‘자동차’ 등의 값을 가질 수 있다. indicator variable이라고 불리는 binary variable(예/아니오)는 요인 변수의 특수한 경우이다. 모델에서 요인변수를 사용할 수 있도록, 수치화해야하는데 이를 위한 가장 대표적인 방법은 요인변수를 dummy variable로 변환하는 것이다.

Dummy variable 표현

spring, summer, fall, winter 네 가지 요인변수에 대하여, 4개의 열을 갖는 행렬로 표현할 수 있다. 이런 식의 표현법을 머신러닝에선 ‘one-hot 인코딩’이라고 부른다.

파이썬에선 get_dummies를 사용해 변환할 수 있는데, drop_first=True를 사용하면 P-1개의 행렬로 표시해 다중공선성을 방지할 수 있다.

파이썬에서는 사이킷런의 label encoder를 통해서도 dummy variable을 변환할 수 있다. label encoder은 앞서 살펴본 get_dummies와는 달리, 열을 여러개 만들지 않고 문자형 변수를 숫자형 값으로 변환한다.

일반적으로 숫자 값이 많아지면, 예측 성능이 떨어질 수 있기 때문에 get_dummies는 ML알고리즘에서 주로 사용하고, label encoding은 용량을 줄이는 장점이 있기에 트리형 알고리즘에 주로 사용한다.

 

Factor Variables with many levels

어떤 요인변수들은 가능한 수준의 수가 많아서, 많은 양의 더미를 생성할 수 있다. 교재에서는 43000개의 우편번호를 예로 들었는데, 킹 카운티 주택의 경우 980xx, 981xx에서 거의 모든 판매가 이루어진다. 따라서 이렇게 수준의 수가 많을 경우, 매매 가격, 중앙값 등의 다른 변수를 활용해 새로운 그룹을 만들 수 있다.

해당 예시에서는 회귀 결과의 잔차 값의 median(중앙값)을 기준으로, 5개 그룹으로 통합했다.

Ordered Factor Variables

어떠한 요인변수들은 순서를 갖는다. 등급을 a,b,c로 나누는 것 등이 될 수 있다. 순서를 갖는 요인변수의 경우, numerical variable로 처리해 사용할 수 있다.

교재에서 BldgGrade의 경우 다음과 같은 등급을 가지고 있는데,

다음과 같이 수치형 변수 형태로 처리하였다.

즉, 순서가 있는 요인변수는 그냥 요인변수로 다룰 경우 잃어버릴 수 있는 ‘순서에 대한 정보'를 유지하기 위해 수치형 변수로 처리한다.

관련글 더보기

댓글 영역