1. 예측 오차의 개념
1) 오차와 예측 오차
* 정의
- 오차(Error): 실제값과 예측값의 차이의 정도
- 예측 오차(Prediction Error): 예측 분석 시 발생하는 예측값과 실제값의 차이
* 예측오차 발생시 통계적 문제점
(예)
- 원인1: 시계열의 집계수준(월, 주 등)이 예측 데이터에 비해 지나치게 세밀하거나 간격이 클 경우(데이터가 너무 많거나 적을 오류 발생)
- 원인2: 매출 데이터의 기초 수준이 월이지만 주별로 집계할 경우(Null이 너무 많음)
* 오류와 해결 방법
오류 메시지 | 해결 방법 제안 |
"뷰의 날짜 필드에서 연속형 날자를 파생할 수 없습니다." | - 예측하려면 날자 필드를 연속적으로 해석할 수 있어야 함 - 날자 필드가 명시적으로 연속하지 않는 경우 날짜 수준에 연도가 포함되어 있어야 함 - 뷰에 날자가 없거나, 뷰의 날짜가 전체 계층을 구성하지 않거나(예: 날짜에 연도와 일은 포함되지만 월이 포함되지 않는 경우), 지원되지 않는 계층을 구성하는 경우(예: 연도, 주, 일)에 발생함 |
"시계열이 너무 작아서 예측할 수 없습니다." | - 더 많은 날짜 값을 포함하도록 뷰의 시계열을 확장함 - 신뢰할 수 없거나 부분적으로 잘린 기간을 잘라낸 후 데이터 요소가 4개 미만이 되어 예측할 수 없는 경우에 발생함 |
"Null 날짜 값을 가진 시계열에 대한 예측을 계산할 수 없습니다." | 날짜 필드를 필터링하거나 낮은 날짜 수준을 사용하여 뷰의 날짜 필드에서 널 값을 제거함 |
"뷰에 고유한 날짜 필드가 여러 개 포함되어 있는 경우 예측을 계산할 수 없습니다." | 뷰에 날짜 필드가 여러 개인 경우 이 오류가 반환됨 |
"예측 옵션에서 선택한 '집계 기준'값이 시각화와 호환되지 않습니다." | - 뷰의 날짜는 예측 옵션 대화 상자의 집계 기준 값과 호환되어야 함(예: 집계 기준을 주로 설정하고 뷰의 날짜를 월로 설정한 경우 이 오류가 발생) - 두 값이 호환되도록 날짜 중 하나를 변경하거나 집계 기준을 자동으로 설정함 |
"누락된 값이 너무 많아서 예측을 계산할 수 없습니다." | - 데이터의 40% 초과해서 누락된 경우에 발생함 - 예측 옵션 대화 상자에서 누락된 값을 0으로 채우기를 선택해도 이 오류는 해결되지 않음 - 원본 데이터를 수정하거나 다른 원본의 데이터를 사용해야 함 |
"예측할 측정값이 없습니다." | - 예측할 수 있는 측정값이 뷰에 없는 경우에 발생함 - 예측 측정값이 행 또는 열 선반이나 마크 카드에 있어야 함 |
"예측할 측정값은 숫자여야 합니다." | 일부 측정값이 숫자로 해석될 수 없으므로 예측할 수 없음 |
"차원에 대한 예측을 계산할 수 없습니다." | 예측할 값은 차원이 아닌 측정값이어야 함 |
"데이터가 너무 많아서 예측을 계산할 수 없습니다." | - 쿼리의 결과 집합이 지나치게 큰 경우 예측이 불가능 - 이 제한은 약 10000개 행 - 예측을 수정하려면 시계열 값을 더 상위 수준에서 집계하거나, 데이터를 필터링함 |
"데이터가 너무 많은 행, 열 또는 색상으로 나눠지므로 예측을 계산할 수 없습니다." | 일부 차원을 필터링하거나 제거하여 뷰를 단순화하면 오류가 해결됨 |
"뷰에 테이블 계산이 포함되어 있으므로 예측을 계산할 수 없습니다." | 테이블 계산이 포함되지 않은 뷰 버전을 만듬 |
"필터 선반에 측정값이 있으므로 예측을 계산할 수 없습니다." | 측정값을 필터 선반에서 제거함 |
"측정값 집계를 선택하지 않았으므로 예측을 계산할 수 없습니다." | 측정값 집계 옵션은 분석 메뉴에 있음 |
"뷰에 비율 계산이 포함되어 있으므로 예측을 계산할 수 없습니다." | 비율 옵션은 분석 메뉴에 있음 |
"측정할 측정값에 0보다 작거나 같은 값이 하나 있는 경우에는 승법 모델을 계산할 수 없습니다." | - 추세 또는 계절적 변동이 승법으로 설정된 사용자 지정 모델을 만듬 - 이 값을 변경하거나 예측 모델을 자동으로 설정해야 함 |
"승법 추세 및 가법 계절이 있는 모델은 수치적으로 불안정한 결과가 발생하므로 허용되지 않습니다." | - 오류 메시지에 설명된 대로 구성된 사용자 지정 모델을 만듬 - 사용자 지정 모델에 대한 설정을 변경하거나 예측 모델을 자동으로 설정함 |
"시계열이 너무 짧아 계절 모델을 계산할 수 없습니다." | 더 많은 날짜 값을 포함하도록 뷰의 시계열을 확장함 |
2. 예측 모델 종류별 적합도 평가 방법
1) 예측 기법과 예측 모델
* 예측 기법: 독립변수와 종속변수 사이의 관계를 찾아 종속변수의 값을 예측하는 모형을 만드는 데이터 분석방법
* 예측 모델: 예측 기법을 사용하여 생성된 종속변수 값을 예측하는 값을 찾기 위한 함수식
2) 예측 모델의 종류
* 회귀 분석: 독립변수가 종속변수에 영향을 미치는지 검증하는 분석 방법
* 의사결정 나무: 목표와 상황과의 상호관련성을 나타내어 해당 상호관련성을 규칙화하고, 나무 구조로 도표화하여 분류와 예측을 수행하는 분석 방법
* 신경망 기법: 인간의 뇌 신경망(시냅스 결합)을 본떠 만든 알고리즘을 사용한 예측 기법
* 사례 기반 추론: 과거 사례들의 결과를 기반으로 새로운 사례의 결과를 예측하는 기법
3) 예측 오차를 통한 모델 적합도 평가 방법
* 회귀 모델 => 모델의 잔차검정
- 잔차: 모델에 의해 추정된 종속변수의 값과 실제 관찰된 종속변수 값과의 차이
(예측값과 실제값의 차이)
- 등분산성: 기울기가 0에 가갑고, 산점도를 그렸을 때, 데이터 점들이 패턴없이 무작위 분포를 나타내야 함
- 정규성: 잔차가 정규분포를 따르는지 확인함
- 독립성
# 자기 상관검정(Durbin-Watson 검정)
Durbin-Watson 통계량 | 결과 |
0에 가까울수록 양의 자기상관이 있음 | 회귀모형 부적합 |
2에 가까울수록 자기상관이 거의 없음 | 회귀식에 잔차가 존재하지 않음 |
4에 가까울수록 음의 자기상관이 있음 | 부적합 |
* 분류 모델
=> 교차 유효성 검증
=> 혼동 행렬(Confusion Matrix)
=> ROC곡선(Receiver Operating Characteristic Curve)
4) 회귀 모델의 적합도 지수
* 회귀 모델의 적합도 평가에는 대표적으로 사용되는 잔차 검정 외에 R^2(결정계수), F검정통계량, T검정통계량이 판단 기준으로 상용됨
- R^2 결정계수: 설명력의 지표
-> 추정된 회귀모형이 데이터를 얼마나 잘 설명하도록 추정되었는지를 나타냄
-> 결정계수가 1에 가까울수록 설명력이 좋다고 판단
-> 결정계수가 0에 가까울수록 설명력이 낮다고 판단
- F검정통계량: 모형의 유의성 지표
-> 회귀 모형의 통계적 유의성을 검정하기 위한 검정통계량
- T검정통계량: 회귀 계수의 유의성 지표
3. R을 이용한 예측 모델 성능 평가
* R제공 데이터 cars 사용
head(cars, 3)
* lm 함수 이용, 회귀 모델 생성
a = lm(dist~speed, cars)
=> 추정된 회귀식: -17.579 + 3.932*speed + e
* 회귀계수, 예측값, 잔차, 회귀계수 신뢰구간, 잔차제곱합 계산
- 회귀계수: coef()
- 예측값: fitted()
- 잔차: residuals()
- 회귀계수 신뢰구간: confint()
- 잔차제곱합: deviance()
# 회귀계수
coef(a)
# 예측값 계산
fitted(a)[1:4]
# 잔차 계산
residuals(a)[1:4]
# 회귀계수 신뢰구간 계산
confint(a)
# 잔차 제곱합 계산
deviance(a)
* predict 함수 사용, x = 4일때 예측값 구하기
predict(a, newdata = data.frame(speed=4))
* 예측값의 신뢰구간 구하기
predict(a, newdata = data.frame(speed=4), interval = 'confidence')
* 오차항 고려한 예측값의 신뢰구간
predict(a, newdata = data.frame(speed=4), interval = 'prediction')
* 회귀모형 평가
summary(a)
* 잔차의 등분산성 검정: 출력창 2*2 분할
- 기울기가 0인 직선일수록 등분산성 검정에서 이상적
- 패턴없이 무작위 분포를 보일수록 좋은 적합
par(mfrow=c(2, 2))
plot(a)
(1) Residuals vs Fitted Graph
- X축: 선형회귀로 예측된 값
- Y축: 잔차
- 선형 회귀(오차: 평균 0, 분산: 정규분포)로 가정하였으므로 기울기 0인 직선이 관측되는 것이 이상적
(2) Normal Q-Q Graph
- 잔차가 정규 분포를 따르는지 확인하기 위한 Q-Q도
(3) Scale-Location Graph
- X축: 선형회귀로 예측된 값
- Y축: 표준화 잔차
- 기울기 0인 직선이 이상적
(4) Residuals vs Leverage
- X축: Leverage
- Y축: 표준화 잔차
- Leverage: 설명 변수가 얼마나 극단에 치우쳐 있는지를 의미
- 이상치가 나타나지 않는 것이 이상적
* 잔차의 정규성 검정: 잔차 추출
res = residuals(a)
# 샤피로 윌크 정규성 검정
shapiro.test(res)
=> p-value > 0.05: 정규성을 따름
=> p-value < 0.05: 정규성을 따르지 않음
* 잔차의 독립성 검정(Durbin-Watson)
library(lmtest)
dwtest(a)
- 시점이 다른 오차들 사이에 상관성이 없음 -> 자기상관을 가지지 않는다.
==> (dw = 1.6762) : 2에 가까우므로, 자기상관이 거의 없다. => 회귀분석을 실시할 수 있다.
'프로그래밍' 카테고리의 다른 글
[R] 교차 유효성 검사를 통한 예측 모델 성능 평가 (0) | 2021.06.05 |
---|---|
[Hive] MySQL 설치 - Hive 연동 (0) | 2021.06.04 |
[Hive] Hive 설치 및 환경 조성 (0) | 2021.06.02 |
[HDFS] HDFS 명령어 및 운영 규칙 (0) | 2021.06.02 |
[Linux] Linux 명령어 정리 & Hadoop 설치 및 환경 조성 (0) | 2021.06.02 |