1. 서 론
현재 국내의 재생에너지원 중에서 가장 많은 비율을 차지하고 있는 태양광발전소는 2018년에 농지법시행령이 개정되고 2019년에 신재생에너지 보급지원사업의
예산이 2,670억 원으로 크게 증가하고 지원내용과 대상이 넓어짐에 따라 총 설치량은 2.0GW를 초과한 사상 최고치를 경신하였으며 계속 증가하는
추세이다. 태양광발전은 발전소가 위치한 지역의 위치와 기상상태에 따라서 발전량이 달라지고, 발전량의 조정이 어려워 일반발전소의 관리자나 수요공급량을
관리 및 계획해야 하는 전력사업자들은 지역과 기후와 계절에 따른 태양광발전량의 예측 및 진단이 필요하다. 또한 태양광발전소와 같은 재생에너지가 지속적으로
확대되면서 전력에너지를 안정적으로 공급하기 위해 간헐성문제가 해결되어야 한다. 이 문제를 보완하기 위해 에너지저장장치(ESS)확대, 조절 가능한 발전전원
활용, 전력중개 시장과 수요관리 등의 방법이 활용되고 있으나 가장 중요한 방법중의 하나는 신재생에너지의 발전전력설비와 시스템을 효율적으로 관리하기
위해 발전량을 사전에 예측하고 대응하는 기술이 필수적이며 이에 대한 연구가 활발하게 진행되고 있다[2]-[4].
그림. 1. 국내 태양광시장 현황 [1]
Fig. 1. Current status of solar energy market in domestic
참고문헌[5]는 태양광 발전소의 출력전력량 예측의 불확실성을 줄이고 경제성을 향상한 연구를 수행하였다. [6]은 기상청에서 제공하는 기상데이터와 함께 일조량 및 일사량을 이용하여, 실시간 태양광발전량을 예측하는 모델을 제안했다. [7]은 기후데이터를 사용하여 오류 역전파 알고리즘과 SVM(Support Vector Machine)으로 태양광 패널의 결함을 검출하는 연구를 수행했다.
[8]은 수집한 기상정보를 활용하여 인공신경망, SVR(Support Vector Regression) 및 RBF(Radial Basis Function)
네트워크 모델을 사용하였고 앙상블 기법을 결합하여 태양광 발전량을 단기적으로 예측할 수 있는 시스템을 제안했다. [9]는 Moving Average을 사용하고 SVM을 이용하여 전력량을 예측하는 연구를 수행하였다.
이와 같이 기 수행된 연구에서 태양광발전량을 예측하기 위한 학습데이터로써 기상기후데이터를 활용하였는데 특정지역의 전력량을 보다 세밀하게 진단하기
위해서는 기상기후 빅데이터가 제공하지 않는 추가적인 현장데이터의 활용이 필요하다. 한국에너지공단에서 조사한 국내 태양광발전소의 지역별 분포도(2016.12.현재)에
의하면 전라북도 28.9%(6,377개), 전라남도 21.1%(4,651개), 충청남도 10.1%(2,283개)로써 이 3개 지역에 전국의 약 60%
태양광발전소가 위치하고 있다. 본 논문에서는 국내에서 가장 높은 밀도의 태양광발전소가 위치하고 있는 전라북도 지역의 태양광발전소의 전력데이터를 확보하고
이를 전력량 예측 및 진단관리 정보로 활용하기 위하여 전라북도 정읍에 있는 태양광 발전소에서 발생한 현장데이터를 수집하였다. 수집된 데이터는 2017년부터
2019년 8월까지 약 3년 동안 일일 발전량 데이터와 온도, 습도, 조도, 미세먼지 데이터이다. 이렇게 수집된 데이터를 활용하여 기상청에서 제공하는
기상기후 빅데이터와 융합하고 태양광발전량을 예측하기 위한 머신러닝 학습모델을 설계하였다. 학습모델은 선형회귀(Linear Regression, LR),
서포트벡터회귀(Support Vector Regression, SVR), 심층신경망(Deep Neural Network, DNN)알고리즘을 모두 적용하고
비교분석하였다. 2장에서 머신러닝의 회귀모델 학습알고리즘의 특성을 분석하고 오차함수, 정확도 특성을 분석하였다. 3장에서는 기상기후 데이터와 발전소의
센싱데이터를 융합하고 입력변수로 정한 다음 LR, SVR, DNN알고리즘을 이용해 발전량을 예측과 실험결과를 나타내었다. 또한 각 모델들의 정확도
및 오차값의 결과에 따라 최적의 모델을 선정하고 모델의 유용성을 확인 하였다.
2. LR, SVR, DNN 회귀모델 특성 및 분석방법
태양광 발전소의 전력량을 예측하기 위해서 머신러닝의 회귀모델을 적용하여 연구되어 왔는데 본 연구에서는 태양광발전량의 예측에 적합한 최적의 회귀모델을
찾기 위하여 LR과 SVR과 DNN의 3가지의 회귀모델 알고리즘의 특성을 분석한다.
LR모델은 회귀모델의 가장 기본적이고 일반적으로 사용되는 예측모델로써 주어진 데이터를 나타내는 최적의 직선을 찾아냄으로써 입력($X$)과 출력($Y$)
사이의 선형적인 관계를 도출해내는 과정이다. 선형회귀 알고리즘을 사용함으로써 선형특성의 그래프가 얻어진다. 선형회귀 모델을 함수로 표현하기 위해서
$n$개의 입력과 출력을 $X=X_{1}$, $X_{2}$, $X_{3,\:}$ ..., $X_{n}$, $Y=Y_{1}$, $Y_{2}$, $Y_{3}$,
..., $Y_{n}$라 할 때, $Y_{i}$는 선형회귀함수로써 식(1)과 같이 표현할 수 있다.
식(2)는 오류함수로써 회귀문제의 알고리즘은 목적함수를 최소화하는 매개변수 $W$를 구하는 방법이다.
식(1)과 (2)의 선형회귀알고리즘을 커널트릭을 통하여 비선형 SVM으로 확장하기 위하여 둔감오류함수($\varepsilon$)가 사용되어 표현된 것이 SVR모델이다[10]-[11].
그림. 2. 둔감 오류함수로 표현된 SVR 모델
Fig. 2. SVR model expressed as insentive error function
그림 2에 보이는 바와 같이 둔감오류함수는 $f(x)$의 위쪽과 아래쪽으로 $\varepsilon$의 공간을 두고, 공간 안의 샘플은 오류가 0으로 설정되며,
공간 바깥쪽은 오류 $\varepsilon$만큼 감소하며 수식(3)과 같이 표현된다.
그림 2에서 점선의 영역을 $\varepsilon$의 튜브라 하며, 사용자가 설정하는 하이퍼 매개변수로써, SVR함수를 식(4)와 같이 표현된다.
SVR 분석 방법은 서로 다른 분류에 속한 관측치 사이의 간격이 최대가 되는 값을 찾아 이것을 선으로 연결한 것으로 바이너리한 값이 아니라 연속된
수치로 예측하는 방법이다. SVR은 머신러닝의 분류(Classification)모델인 SVM과는 다르게 연속적인 값을 다룰 수 있도록 확장되어 만들어진
모델이다. SVR은 커널함수를 이용하여 고차원 공간으로 변환하고 벡터의 내적 결과를 얻어낸다. 함수들은 Linear커널, Polynomial커널,
RBF커널을 활용하는데 본 논문에서는 Linear커널을 사용하여 회귀 방법으로 SVR 알고리즘에 적용하였다. 참고로 본 논문과 비교되는 참고문헌 [4]는 SVM 알고리즘에 RBF커널을 적용하여 발전량 예측을 하였다.
DNN은 심층신경망 알고리즘으로써 기본 퍼셉트론 구조에 여러 개의 은닉층(Hidden layer)를 연결한 형태로 그림 3에 나타내었다. 그림에서 입력층은 바이어스를 제외한 d개의 노드로 출력층을 c개의 노드로 설정할 때, 입력층은 $X=(x_{0}$, $x_{1}$,
$x_{2}$, $\cdots$, $x_{d})^{T}$, 출력층은 $Y=(y_{1}$, $y_{2}$, $y_{3}$, $\cdots$, $y_{n})^{T}$
로 구성되며 $l$번째 층의 노드 수를 $n_{l}$로 표기할 때 바이어스 노드 수는 제외된다. 0번째 층은 입력층이며 $n_{o}$은 $d$와
같고 $l$번째 층은 출력층에 해당하므로 $n_{o}$는 $c$와 같다[12].
그림. 3. DNN 모델
Fig. 3. DNN model
$l-1$번째 층과 $l$번째 층을 연결하는 가중치($W$)는 $(n_{l-1}+ 1)$$\times n_{l}$개인데, 전체 가중치를 식(5)와 같이 행렬 $H^{l}$로 표기할 수 있다. 이때 $l$의 범위는 $1\le l\le L$이다[12].
보통 다층 퍼셉트론(MLP)의 동작은 벡터 $X$를 벡터$O$으로 매핑하는 과정으로 볼 수 있으며 여러 페셉트론을 결합한 구조이므로 페셉트론의 연산이
연속적으로 수행된다. 2층 퍼셉트론에서는 매핑함수가 $O=f(x)=f_{2}(f_{1}(x))$와 같이 표현되는데 $f_{1}$은 첫 번째 은닉층의
함수값이고, $f_{2}$은 출력층의 함수이다. 또한 3층 퍼셉트론의 매핑함수, $O=f(x)$$=f_{3}(f_{2}(f_{1}(x)))$에서는
$f_{1}$과 $f_{2}$는 첫 번째와 두 번째 은닉층의 함수값이고, $f_{3}$은 출력층의 함수값이다. 그리고 DNN은 은닉층이 3개 이상이어서
식(6)으로써 그 동작을 표현할 수 있다.
DNN의 입력층으로 인가되는 벡터 $X$를 내부에서 사용하는 변수 $Z^{o}$로 대입할 때 식(7)과 같은 수식을 얻을 수 있다.
식(8)는 $l$번째 측의 $j$번째 노드가 수행한 연산을 나타낸 것으로 $n_{l-1}$은 $l-1$번째 층의 노드개수이다. 동작하는 방법은 우선 $Z$벡터와
$j$번째 노드에 연결된 에지 가중치의 곱을 구한 후, 그것의 합을 구하여 $S$변수에 저장하고 $S$에 활성화 함수를 적용한 결과를 $Z$변수에
저장한다. 이때, $S$와 $Z$변수의 값은 학습 알고리즘의 역전파 단계에서 다시 사용하므로 별도로 저장해야 한다. $l$번째 은닉층의 $j$번째
노드의 연산은 $Z_{j}^{l}=\tau_{l}(s_{j}^{l})$이고 이때 $s_{j}^{l}=(\vec{u}_{j}^{l})(\vec{z}^{l-1})$이다.
은닉층에 해당하는 $l=1,\:2,\:3,\:\ldots ,\: L-1$번째 층의 활성화 함수 $\tau_{1}\sim\tau_{L-1}$은 주로
ReLU함수를 사용하고 마지막 층인 출력층의 활성화 함수 $\tau_{L}$은 $\log istic$, $Sigmoid$, $\tanh$또는 $softwax$를
사용한다. 본 논문에서는 중간 은닉층은 ReLU함수를 사용하였으며 최종출력층은 $softwax$를 사용하였다. 식(8)에서 $l$번째 층의 모든 연산을 일시에 수행하기 위해서는 식(9)를 사용한다.
DNN의 학습 알고리즘은 오류 역전파 알고리즘을 활용하여 경사도 계산을 수행하는데 식(10)과 식(11)은 $L$번째 출력층을 위한 경사도 계산식이다.
$L$층의 정보를 이용하여 $L-1$층의 경사도를 계산할 수 있으며 $L-1$층의 정보를 이용하여 $L-2$층의 경사도를 계산하고, $L-2$층의
정보를 이용하여 $L-3$층의 경사도를 계산하는 방법으로 계속해서 오른쪽에서 왼쪽으로 경사도 정보를 전파한다. 최종단계에서는 2번째 층의 정보를 이용하여
첫 번째 층의 경사도를 계산한다. 식(12)와 식(13)는 $l+1$층의 정보를 이용하여 $l$층의 경사도를 계산하게 된다. 이때 $l$은 $L-1,\:$$L-2,\:$$\cdots ,\: 1$이다.
본 논문에서는 $l=1,\:2,\:3,\:\cdots ,\:L-1$번째 층의 활성화 함수 $\tau_{l}$은 $Software$함수를 사용하였고
$\tau'_{L}$은 ReLU함수를 사용하였다.
실험결과와 예측값이 평균적으로 얼마만큼 떨어져 있는가를 판단하는 방법으로 오차함수를 설정하고 이 값의 오차를 구하고, 조금씩 변화를 주면서 오차가
최소화 될 때까지 이 과정을 반복하는데 가장 많이 활용되는 3가지 오차함수는 RMSE, MAE, MAPE이다[10]. RMSE(Root Mean Square Error)는 실제 값과 예측 값의 오차를 제곱하여 평균한 값의 제곱근 오차를 사용하는 방법으로 식(14)와 같다.
MAE (Mean Absolute Error)는 아래 식(15)와 같이 표현되는 절대 평균오차이며 이 방법은 오차의 합을 구할 때는 각 오차의 값을 제곱해서 더해주고, N으로 나누어서 평균을 구한다.
식(16)로 표현되는 MAPE(Mean Absolute Percentage Error)는 평균 절대오차로써 예측 값과 실제 값을 뺀 후 이를 다시 실제 값으로
나눈 값을 모두 더한 후에 n으로 나눈다. 그리고 백분율로 표현하기 위해 100을 곱해서 얻은 결과이다.
여기서 $D_{i}$는 예측 모델에 의한 예측 값이고, $E_{i}$는 실제 값이며, N은 데이터의 수이다. 결과적으로 RMSE, MAE, MAPE의
값들이 작을수록 예측이 정확하며 각 모델 특성에 맞는 좋은 손실함수(Loss function)을 선택하여 설계된 모델의 성능을 확인한다. 본 논문에서는
설계된 LR, SVR, DNN의 모델 성능을 측정하기 위하여 위 3가지 오차 함수를 활용하고 그 결과를 비교 및 검토하였다.
3. 기상기후 빅데이터와 센싱데이터를 활용한 발전량예측 및 실험결과
회귀모델을 설계하기 위한 학습모델로 활용하기 위하여 기상기후 데이터와 태양광발전소의 현장데이터를 수집하고 이를 융합하여 이용하였다. 먼저 기상 데이터를
얻기 위해 기상청날씨마루에서 공공데이터로 제공하는 기상기후 빅 데이터를 활용하였다. 기상 기후 빅데이터중에서 태양광 발전에 가장 큰 영향을 미치는
기온, 강수량, 미세먼지, 초미세먼지, 일사량 등의 데이터를 활용하였다. 또한 현장데이터는 2017년부터 2019년 까지 전라북도 정읍지역에 위치한
실험대상용 태양광발전소의 환경데이터를 수집하여 회귀모델을 설계하기 위한 입력변수에 이용하였다. 또한 회귀모델의 출력변수로 적용하기 위한 태양광발전량
데이터는 같은 기간에서 정읍의 실험대상용 발전소에서 수집된 발전량데이터를 활용하였다.
그림. 4. 태양광발전소 현장데이터와 기상기후 빅데이터를 활용한 발전량예측 방법
Fig. 4. Prediction method of power generation using field data and weather big-data
in photovoltaic power plants
그림 4와 같이 수집된 태양광발전소 현장데이터와 기상기후 빅데이터를 정규화과정을 통하여 LR, SVR, DNN 알고리즘으로 예측실험을 진행하였다. 태양광
발전량 예측을 위한 각 요소들은 데이터 값의 크기가 모두 다르기 때문에 데이터의 분포를 유사하게 만들거나 범위를 일치시켜야한다. 주어진 빅데이터들을
활용하여 학습 데이터 80%로 설정하고 나머지 20%는 테스트 데이터로 설정하여 학습을 시킨 후 테스트 값과 예측한 값의 차이를 비교하였다.
먼저 LR 알고리즘을 사용하여 예측 프로그램을 시뮬레이션 한 결과를 그림 5에 나타내었다.
그림. 5. LR 모델의 태양광발전량 예측 결과
Fig. 5. Prediction results of photovoltaic power generation on LR models
그림 5은 X값은 Test data이고 LR을 통하여 얻어진 예측결과를 Y값으로 표현되었다.
표 1. LR 모델을 이용한 전력량 예측실험결과 (단위:kwh)
Table 1. Predictive test results using the LR model
TEST DATA
|
PREDICTION DATA
|
299
|
258.994
|
194
|
209.778
|
532
|
487.573
|
180
|
275.601
|
152
|
202.333
|
420
|
438.329
|
322
|
378.911
|
285
|
219.381
|
349
|
344.818
|
535
|
593.528
|
571
|
579.761
|
555
|
548.082
|
표 1은 LR 모델을 이용한 전력량 예측실험결과이다. 실제 데이터와 예측한 발전량을 비교한 결과로써 532kwh를 487kwh로 349kwh의 값을 344kwh로
예측하였고 LR모델의 예측율 정확도는 약 86%로 얻어졌다.
다음으로 SVR 분석 방법은 서로 다른 분류에 속한 관측치 사이에 간격이 최대가 되는 선을 찾아 이것을 선으로 연결한 것으로 바이너리한 값이 아닌
연속된 수치로 예측하는 방법이다. 이 방법을 이용한 예측 실험은 Linear-Kernel을 사용하였으며, 결과가 선형특성을 갖을수록 예측의 정확도는
높아진다. 그림 6은 SVR 모델의 태양광발전량 예측 결과이다.
그림. 6. SVR 모델을 이용한 태양광발전량 예측 결과
Fig. 6. Prediction result of Photovoltaic Power Generation using SVR model
그림 6의 SVR 모델의 예측결과를 보면 LR보다는 약간 비선형 결과로 보여졌으나 전체적인 예측 값들은 LR모델에 비하여 줄어든 오차 값의 결과를 얻었음을
확인하였다.
표 2는 SVR 모델을 이용한 전력량 예측실험 결과로써 169kwh의 값을 161.238kw로 예측하는 등, SVR의 정확도가 88.4%로써 전반적으로
LR보다 높으며 예측발전량 값의 오차 폭이 줄어든 결과를 확인하였다.
표 2. SVR 모델을 이용한 전력량 예측실험결과 (단위:kwh)
Table 2. Predictive test results using the SVR model
TEST DATA
|
PREDICTION DATA
|
602
|
555.965
|
563
|
565.035
|
169
|
161.238
|
482
|
459.839
|
403
|
370.823
|
494
|
430.055
|
256
|
295.667
|
415
|
400.811
|
292
|
319.575
|
98
|
77.014
|
477
|
438.791
|
561
|
577.588
|
다음으로 DNN모델을 활용하기 위하여 먼저 은닉층의 개수를 결정해야 하는데 3, 5, 7개의 은닉층을 사용하여 실험한 결과, 가장 정확도가 높게 얻어진
7개의 은닉층을 사용한 모델로 결정하여 사용하였다. 활성화 함수로는 ReLU함수를 사용하였고 출력함수로는 Linear함수를 사용하였다. 최적화를
위해 Adam알고리즘을 사용하였고 Epochs수는 150회, Batch size는 50으로 선정하여 모델을 구성하고 실험하였다. 설계된 DNN모델을
활용하여 예측한 결과를 그림 7에 나타내었다.
그림. 7. DNN 모델을 이용한 태양광발전량 예측 결과
Fig. 7. Prediction result of photovoltaic power generation using DNN model
그림. 8. 실측데이터와 제안된 DNN모델의 예측데이터와 비교결과
Fig. 8. Results of comparison with actual data and forecast data of the proposed DNN
model
표 3은 DNN 모델을 이용한 전력량 예측실험 결과이다. 421kwh값에서 421.752kwh로 예측하였고 전체적인 데이터 분석결과의 정확도는 89.89%로
얻어졌다.
표 3. DNN 모델을 이용한 전력량 예측실험결과(단위:kwh)
Table 3. Predictive test results using the DNN model
TEST DATA
|
PREDICTION DATA
|
516
|
547.427
|
560
|
593.67
|
266
|
262.682
|
538
|
569.407
|
553
|
528.133
|
375
|
419.473
|
574
|
669.13
|
324
|
333.296
|
557
|
530.214
|
517
|
559.351
|
342
|
473.346
|
421
|
421.752
|
LR, SVR, DNN 모델의 정확도 값과 오차율 성능을 확인하기 위해서 식(14)∼식(16)의 RMSE, MAE, MAPE 오차함수로써 분석한 최종 결과를 표 4에 나타내었다.
표 4. LR, SVR, DNN모델들의 오차, 정확도 비교
Table 4. Comparison of error and accuracy of model LR, SVR and DNN
|
MAE
|
RMSE
|
MAPE(%)
|
Accuracy(%)
|
LR
|
0.45484
|
0.40393
|
45.4
|
85.98
|
SVR
|
0.42670
|
0.52553
|
42.67
|
88.4
|
DNN
|
0.3045
|
0.3652
|
37.5
|
89.89
|
LR과 SVR의 경우, RMSE 오차값 이외에 MAE, MAPE표 4와 같이 오차값과 정확도로부터 3개의 모델중에서 DNN의 경우가 모든 값에서 좋은
결과를 얻었음을 확인하였다. 결과적으로 본 논문에서 활용한 기상기후 빅데이터와 현장 전력데이터를 활용하여 태양광발전량 예측을 위한 모델로써 DNN
모델이 가장 높은 정확도를 가질 수 있음을 확인하였다. 설계된 DNN모델은 임의지역에서 태양광발전소의 발전량을 예측하고 진단하는데 사용할 수 있다.
DNN의 정확도가 89.89%로 확인하였으며 이 정확도는 해당지역의 계절별 기후등의 상태와 기준 및 비교데이터의 품질에 따라 향상될 수 있다.