2.2 예측값과 실제값의 비교
오차를 표현하는 방법으로 MAE(Mean Average Error), MAPE(Mean Average Percentage Error)가 있으며 MAE는
식 (1)과 같다. 재생에너지 예측오차율(FER: Forecasting Error Rate)에 대해서는 전력시장운영규칙에서 예측발전량과 전력거래량의
차이의 절댓값을 식 (2)와 같이 백분율(%)로 표현한 것을 말한다(5).
여기서, $y_{i}$는 실측값, $x_{i}$는 예측값, $e_{i}$는 에러값을 나타낸다.
여기서, FERi,n,t는 차수 및 시간대별 예측오차율, FGM은 주요자원 예측발전량, FGA는 예측발전량, MGOM은 전력거래량, MGOA는 보조자원
및 전력거래량, ICMi,t는 시간대별 설비용량을 나타낸다.
2.3 일사량, 온도를 이용한 발전량 예측모델
측정된 데이터 기반으로 만들어진 예측모델은 풍속, 모듈 온도, 주위온도, 일사량계 등의 값을 포함한다. 이러한 데이터들의 예보가 가능할 경우 발전량
예측이 가능하고 예보의 정확도가 높을수록 예측발전량의 오차가 적다. 실제로 발전량을 예측할 때 활용할 수 있는 데이터는 기상청의 예보데이터이며 발전량
예측에 유의미한 데이터는 일사량, 온도, 풍속, 강수량, 운량 등이 있다. 그러나 풍속은 예측 정확도가 낮고 강수량 및 운량의 영향에 관한 결과는
일사량에 데이터에 포함되어 있다고 볼 수 있다. 따라서 쉽게 취득할 수 있는 일사량과 온도 두 가지 데이터로 모델을 만들어 예측하는 것이 실용적이고
쉽다. 표 1과 같이 발전량에 가장 영향을 많이 주는 일사량과 온도를 이용하여 수상태양광 발전량 예측모델을 생성하였으며, 분석에 활용된 데이터는 표 2와 같이 16개월 기간의 데이터이다.
표 1. 기상청 데이터의 2개 입력 데이터
Table 1. Two input data of KMA
구 분
|
입력데이터
|
기상청 예보
|
댐일사량, 온도
|
표 2. 충주 수상태양광의 Train과 Test 기간
Table 2. Train & Test periods of Chungju FPV
항목
|
기 간
|
월수
|
전체기간
|
2019년 1월 1일~2020년 4월 01일
|
16
|
Train 기간
|
2019년 1월 1일~2019년 12월 31일
|
12
|
Test 기간
|
2020년 1월 1일~2020년 3월 31일
|
3
|
모델을 생성할 때 다른 단위 변수(발전량, 일사량, 풍속)를 비교하기 위해 변수 Scale에 대한 정규화가 필요하다. 변수 간 상대비교를 위해 Scaler를
사용하며 일반적으로 MinMaxScaler, StandardScaler, RobustScaler 3가지 방식을 사용한다. MinMaxScaler의
방식은 데이터의 최솟값을 0, 최댓값을 1로 변환하는 방식이다. 발전량 예측모델(Model)을 만든 후 발전량 예측(Prediction)을 하나의
프로젝트 파일 안에서 순차적으로 수행하면 입력데이터의 Scaler 변환의 일관성에 관한 문제는 발생하지 않는다. 그러나 모델을 만든 후 예측을 별도로
수행하면, 예측을 수행할 때마다 변환이 되면 기존 모델의 Scale이 다르게 되어 정확한 변환 값을 얻을 수 없다. 따라서 모델과 예측에 사용하는
데이터를
표 3과 같이 동일한 Scale을 만들기 위해 Per Unit(PU)법을 이용하여 동일한 기준으로 변환한 후 모델을 만들었고 예측을 수행하였다. 충주 FPV의
1[PU] 기준은
표 3과 같이 발전량은 발전설비용량 3MW를 기준으로 하였고 일사량은 1,060W/m
2, 온도는 50°C 기준으로 한다.
표 3. 테이입력 데이터 Scale 변환 방법블
Table 3. Scale conversion method of input data
항목
|
Per Unit
|
비교
|
발전량
|
발전량 / 3000
|
설비용량 3,000kW
|
일사량
|
일사량 / 1060
|
일사량 1,060W/m2
|
온도
|
온도 / 50
|
온도 50°C
|
Train(훈련)과 Test(예측)의 결과를 비교했을 때 Train은 양호한 결과이지만 Test에서 낮은 정확도를 나타내는 것을 과대적합이라 한다.
과소적합은 Train과 Test에서 정확도는 차이는 없지만 모두 정확도가 낮은 경우를 나타낸다
(6). 표의 세로 항목 Activation~Sequence까지 하이퍼 파라미터는 고정하고 가로 LSTM 은닉층 수(Hidden layer)단계를 2~128로
LSTM layer를 변경하면서 수행한 오차 결과를
표 4의 하단 Train_MAE(훈련 평균오차), Test_MAE(예측 평균오차)로 나타낸다. LSTM 은닉층 수(Hidden layer)를 변화시키면서
반복 수행한 결과 Layer(32, 16)가 Train_MAE와 Test_MAE가 결괏값의 차이가 크지 않고 정확도가 높아 과대적합과 과소적합의 문제가
없다고 판단할 수 있다.
표 4. 충주 FPV의 LSTM layer 변경에 따른 MAE 결과
Table 4. MAE results of changing LSTM layers at Chungju FPV
항목
|
LSTM layer 1, 2
|
128
|
64
|
32
|
16
|
8
|
4
|
64
|
32
|
16
|
8
|
4
|
2
|
Activation
|
Tanh
|
Dropout_ratio
|
0.1
|
Optimizer
|
Nadam
|
Batch_size
|
100
|
Epoch
|
200
|
Sequence
|
24
|
Train_MAE
|
0.026
|
0.028
|
0.031
|
0.034
|
0.038
|
0.042
|
Test_MAE
|
0.031
|
0.032
|
0.032
|
0.033
|
0.036
|
0.040
|
반복 학습에 대한 파라미터인 Epoch는 학습데이터가 신경망을 통과하는 것을 의미하는 것으로 100 Epoch는 학습데이터가 신경망을 100번 통과하는
것을 나타낸다
(7). Epoch를 100~500으로 조정하면서 수행한 결과는
표 5와 같이 Epoch가 300일 때 과대적합 없이 Test_MAE의 값이 가장 양호하게 나타나는 것을 알 수 있다.
표 5. 충주 FPV의 Epoch 변경에 따른 MAE 결과
Table 5. MAE results of changing Epochs at Chungju FPV
항목
|
Epoch
|
50
|
100
|
200
|
300
|
400
|
Model 1
|
32 layer
|
Model 2
|
16 layer
|
Activation
|
Tanh
|
Dropout_ratio
|
0.1
|
Optimizer
|
Nadam
|
Loss
|
Mean_squared_error
|
Sequence
|
24
|
Batch_size
|
100
|
Train_MAE
|
0.039
|
0.034
|
0.032
|
0.030
|
0.026
|
Test_MAE
|
0.038
|
0.033
|
0.032
|
0.031
|
0.034
|
시간별 발전량을 예측하기 위해 예측하고자 하는 시간의 이전 몇 시간 단위로 모델을 만들지 결정하는 것은 중요하다. 시간별 예측을 위해 이전 6시간~36시간
연속한 단위(Sequence)로 분석한 결과는
표 6과 같이 24시간 연속한 단위에서 Test_MAE가 가장 낮은 양호한 결과를 얻었다.
표 6. 충주 FPV의 Sequence에 변경에 따른 MAE 결과
Table 6. MAE results of changing sequences at Chungju FPV
항목
|
Sequence
|
6
|
12
|
18
|
24
|
30
|
36
|
Model 1
|
32 layer
|
Model 2
|
16 layer
|
Activation
|
Tanh
|
Dropout_ratio
|
0.1
|
Optimizer
|
Nadam
|
Loss
|
Mean_squared_error
|
Batch_size
|
100
|
Epoch
|
300
|
Train_MAE
|
0.039
|
0.033
|
0.032
|
0.029
|
0.029
|
0.028
|
Test_MAE
|
0.034
|
0.030
|
0.031
|
0.030
|
0.031
|
0.030
|
활성화 함수(Activation function)는 신경망 은닉층(Hidden layer)에 사용되는 함수로서 레이어(Layer)에서 다음 레이어로
보내지는 역할을 하는 것이다
(8). 인공신경망의 은닉층 활성화 함수 변경에 따른 결과는
표 7과 같이 Tanh가 가장 양호한 결과가 나타나기 때문에 본 논문의 예측모델에 대한 활성화 함수는 Tanh로 선정하였다.
표 7. 충주 FPV의 Activation에 변경에 따른 MAE 결과
Table 7. MAE results of changing activation at Chungju FPV
항목
|
Activation
|
ReLU
|
Sigmoid
|
Tanh
|
Elu
|
Selu
|
Model 1
|
32 layer
|
Model 2
|
16 layer
|
Dropout_ratio
|
0.1
|
Optimizer
|
Nadam
|
Loss
|
Mean_squared_error
|
Batch_size
|
100
|
Epoch
|
300
|
Sequence
|
24
|
Train_MAE
|
0.032
|
0.038
|
0.028
|
0.030
|
0.027
|
Test_MAE
|
0.036
|
0.036
|
0.031
|
0.033
|
0.031
|
모델의 성능을 높이기 위해 하이퍼 파라미터 조합의 탐색이 필요하며 하이퍼 파라미터 적정화(Hyper Parameter Reasonable Optimization)를
위해 Optimizer 변경을 수행하였고 Nadam optimizer가 가장 양호한 결과가 도출되는 것을
표 8을 통해 알 수 있다.
표 8. 충주 FPV의 Optimizer 변경에 따른 MAE 결과
Table 8. MAE results of changing optimizer at Chungju FPV
항목
|
Optimizer
|
Nadam
|
adam
|
SGD
|
RMS
Prop
|
Ada
Delta
|
Model 1
|
32 layer
|
Model 2
|
16 layer
|
Activation
|
Tanh
|
Dropout_ratio
|
0.1
|
Loss
|
Mean_squared_error
|
Batch_size
|
100
|
Epoch
|
300
|
Sequence
|
24
|
Train_MAE
|
0.030
|
0.028
|
0.095
|
0.115
|
0.029
|
Test_MAE
|
0.031
|
0.032
|
0.107
|
0.128
|
0.031
|
한 번에 연산을 묶음으로 수행하는 Batch의 설정값을 변경하면서 얻은 결과를
표 9에 나타내었다.
표 9. 충주 FPV의 Tanh일 때 Batch 변경에 따른 MAE 결과
Table 9. MAE results of changing Batch with Tanh at Chungju FPV
항목
|
Batch
|
200
|
100
|
70
|
50
|
30
|
Model 1
|
32 layer
|
Model 2
|
16 layer
|
Activation
|
Tanh
|
Dropout_ratio
|
0.1
|
Optimizer
|
Nadam
|
Epoch
|
300
|
Sequence
|
24
|
Train_MAE
|
0.032
|
0.028
|
0.027
|
0.027
|
0.023
|
Test_MAE
|
0.032
|
0.031
|
0.030
|
0.032
|
0.030
|
활성화 함수가 Tanh이고, Epoch 300일 때 Batch는 70인 경우에 가장 양호한 결과를 얻었다. 입력 데이터를 설정한 확률적으로 이용하지
않게 하여 과대적합을 방지하고 예측능력을 향상하는 목적으로 드롭아웃(Dropout)이 도입되었으며
(9), 이는 신경망에 뉴런의 사용하지 않는 범위를 설정하여 과대적합을 방지하는 것이 목적이다. Dropout에 대한 분석한 결과는
표 10과 같으며, Dropout 0.15일 때 오차가 가장 낮은 결과가 도출되는 것을 확인할 수 있다.
표 10. 충주 FPV의 Tanh, Batch 70일 때 Dropout 따른 결과
Table 10. MAE results of changing Dropout variations when Tanh & Batch 50 at Chungju
FPV
항목
|
Dropout
|
0.1
|
0.15
|
0.2
|
0.25
|
0.3
|
Model 1
|
32 layer
|
Model 2
|
16 layer
|
Activation
|
Tanh
|
Optimizer
|
Nadam
|
Loss
|
Mean_squared_error
|
Batch_size
|
70
|
Epoch
|
300
|
Sequence
|
24
|
Train_MAE
|
0.030
|
0.027
|
0.030
|
0.029
|
0.033
|
Test_MAE
|
0.035
|
0.030
|
0.032
|
0.032
|
0.035
|
위의 하이퍼 파라미터를 변경한 것을 바탕으로
표 11과 같이 적정(Reasonable) Setting 값을 선정하였다.
표 11. 충주 FPV의 Batch 70, Epoch 300일 때 Tanh 적정 설정값
Table 11. Reasonable parameter values for Batch 70, Epoch & Tanh at Chungju FPV
항목
|
Reasonable setting
|
Model 1
|
32 layer
|
Model 2
|
16 layer
|
Activation
|
Tanh
|
Dropout_ratio
|
0.15
|
Optimizer
|
Nadam
|
Loss
|
Mean_squared_error
|
Epoch
|
300
|
Batch_size
|
70
|
Sequence
|
24
|
Train_MAE
|
0.028
|
Test_MAE
|
0.032
|
적정 setting에 따라 Train 기간의 Y_train(훈련발전량 실제값)과 Y_train_pred(훈련발전량 예측값)의 결과는
그림 1과 같이 패턴이 일치하는 것을 확인할 수 있으며, 3개월간의 Test 기간의 결과는
그림 2와 같이 Y_test(예측발전량 실제값)와 Y_test_pred(예측발전량 예측값)이 일치하는 것을 확인할 수 있다.
그림. 1. 충주 FPV의 Y_train and Y_train_prediction의 비교
Fig. 1. Comparison between Y_train and Y_train_prediction at Chungju FPV
그림. 2. 충주 FPV의 Y_test and Y_test_prediction의 비교
Fig. 2. Comparison between Y_test and Y_test_prediction at Chungju FPV
Test 기간 하루평균 오차와 FER은
표 12와 같이 전력시장운영규칙의 재생에너지 FER의 기준인 5% 이하를 만족하는 양호한 결과가 도출되었다.
표 12. 충주 FPV의 FER 예측 결과
Table 12. FER prediction results at Chungju FPV
구 분
|
MAE
|
MSE
|
1일 MAPE
|
FER
|
LSTM
|
Train
|
0.028
|
0.0043
|
13.9
|
2.8
|
Test
|
0.032
|
0.0049
|
36.1
|
3.2
|
1일 MAPE는 하루의 실제 발전량과 예측발전량의 총량을 비교한 값으로 Test 값에서 오차가 크게 나타나며. 실용적으로 사용하는 FER 에서는 Test
오차가 3.2%로 양호한 결과를 얻었다. 비 오는 날과 같이 일사량이 적은 경우의 MAPE와 FER을 비교하면 전체 발전량의 총량이 적어서 MAPE의
오차가 크게 나타나는 경향이 있으나 FER의 경우 식 (1)과 같이 시간대별 설비용량으로 나눈 값을 사용하기 때문에 일사량이 적은 날의 경우 분자인
발전량이 적어지고 분모는 시간대별 설비용량으로 고정되기 때문에 오차가 작은 것을 알 수 있다.