3.4 군집화를 통한 데이터 분석
실험데이터에 대한 분석을 위해 계측데이터를 기반으로 군집화를 수행하였다. 군집화 실험은 k-means 알고리즘을 이용하였으며, k 값을 결정하기 위해
k 값의 범위를 1부터 9까지 증가시키며 왜곡도(Distortion Score)를 계산하여 적정한 k 값을 찾는 Elbow 방법을 사용하였다[7,8].
군집화 결과로 각 군집들이 잘 분리되어 있는지 시각적으로 확인하기 위해 PCA(Principal Component Analysis)를 수행하였다.
1440개의 계측데이터 중에서 데이터의 분산을 가장 잘 설명하는 성분을 X축, 그 다음 설명하는 성분을 Y축으로 하여 k값이 3일 때부터 6일 때까지의
PCA 그래프를 나타내면 그림 4와 같다. PCA 그래프를 살펴보면 군집이 잘게 쪼개져 겹치거나 과도하게 분리되지 않고 고르게 분포되어 있어 실험에 사용한 데이터가 비교적 고르게
분포된 것을 알 수 있다.
그림 4. 군집화에 대한 PCA 그래프(k=3~6)
Fig. 4. PCA graph for k-means clustering(k=3~6)
표 4는 각 군집의 중심값에서 군집에 속한 노드들 간의 거리를 합하여 SSE(Sum of Squred Errors)를 계산한 것으로 SSE가 낮을수록 높은
군집화 성능을 보여주게 된다. 그림 5는 SSE를 이용하여 왜곡도를 나타낸 그래프로, 본 연구에서는 왜곡도의 기울기가 급격히 줄어들기 시작하는 지점인 k=5를 최적의 군집 개수로 선정하였다.
k-means 알고리즘을 통해 1440개의 계측데이터를 5개의 군집으로 나누었을 때 각 군집의 중심값을 나타내면 그림 6과 같다. X축은 1분 간격으로 일일 24시간을 나타내며, Y축은 발전량을 설비용량으로 나누어 정규화된 발전량(PG, Power Generation)을
나타낸다.
표 4 군집 수에 따른 SSE 값
Table 4 SSE based on the number of clusters
|
|
군집 수(k)
|
|
2
|
3
|
4
|
5
|
6
|
7
|
8
|
9
|
|
SSE
|
33519
|
24559
|
19953
|
16877
|
16142
|
15321
|
14537
|
13725
|
그림 5. 최적의 k 값 선정을 위한 Elbow 그래프
Fig. 5. Elbow graph for optimal k
그림 6. 군집별 평균 발전량 그래프
Fig. 6. Average power generation graph for clusters
각 군집별 평균 발전량을 살펴보면 군집 2는 가장 많은 일일 발전량 데이터를 갖고 있는 군집으로 201개의 발전량 데이터가 ESS가 연동되지 않는
일반적인 태양광 발전량 형태를 보인다. 군집 1과 4는 ESS가 연결된 태양광 발전량 중에서 ESS 용량이 태양광 설비에 비해 상대적으로 적은 경우로
10시부터 ESS를 충전하여 1시간 정도 충전한 후 16시에 방전하는 형태를 보인다. 군집 3과 5는 ESS 용량이 상대적으로 큰 경우로 10시부터
충전하여 15시까지 충전하고 16시에 방전하는 형태를 보이고 있다. 이러한 분석을 통해 실험에 사용되는 발전량 데이터가 다양한 패턴을 갖고 있으며
고르게 분포하고 있는 것을 알 수 있다.
3.5 회귀분석을 이용한 계측데이터 추정
본 연구에서는 위의 군집분석을 통해 알아본 바와 같이 다양한 발전량 형태를 갖는 태양광 발전원에 대해서 계측데이터가 1시간 이상 누락된 경우에 계량데이터를
이용하여 계측데이터를 추정하는 기업을 연구하였다. 본 연구에서는 1분 단위 계측값과 1시간 단위 계량값이 모두 수집되는 태양광 발전원의 데이터를 이용하여
6시간 단위로 이루어진 총 6035개의 실험데이터를 생성하여 실험하였다.
회귀분석을 위해 인공신경망 기반의 태양광 출력 추정에 많이 사용되는 MLP(Multi Layer Perceptron) 모델을 사용하였다[9,10].
그림 7. 계측데이터 추정을 위한 MLP 모델
Fig. 7. MLP model for measuring data estimation
그림 7을 살펴보면 입력층은 추정하고자 하는 계측데이터를 나타내는 1시간 단위의 시간 데이터 1개와 추정 시간 직전 6시간 동안의 1시간 단위 계량데이터
6개, 추정 시간 직전 1시간 동안의 1분 단위 계측데이터 60개로 구성된다. 출력층은 추정 시간 이후 1시간 동안의 1분 단위 계측데이터 60개로
구성된다. 실험데이터는 MLP 모델의 훈련용으로 70%를 사용하고 검증용으로 30%를 사용하도록 하였다. 실험을 위한 기본 반복횟수인 epoch는
100번으로 설정하고, 성능 평가를 위한 손실함수는 MAE(Mean Absolute Error)를 사용하였다. 인공 신경망의 성능에 중요한 영향을
미치는 활성화 함수 및 최적화 알고리즘에 대한 성능 비교를 위해 활성화 함수는 logistic과 tanh, relu를 사용하고 최적화 알고리즘은 lbfgs와
sgd, adam을 사용하였다.
$MAE =\dfrac{1}{n}\sum_{i=1}^{n}| y_{i}-\hat{y_{i}|}(y_{i}관측값,\: \hat{y_{i}}예측값)$
첫 번째 실험에서는 계측데이터 추정에 적합한 활성화 함수와 최적화 알고리즘을 선정하기 위해 단일 은닉층을 기반으로 노드수를 100개부터 1000개까지
100개씩 증가시키면서 성능을 평가하였고 그 결과는 그림 8과 같다. 은닉층에 입력된 데이터의 가중치를 이용하여 출력신호를 생성하는 활성화 함수는 출력의 비선형성을 위해 중요한 요인으로 –1에서 1의 범위를
갖는 tanh(Hyperbolic Tangentn)와 양수는 그대로 출력하고 음수인 경우에는 0을 출력하는 relu(Rectified Linear
Unit)가 가장 성능이 좋은 것으로 나타났다. 노드의 가중치를 갱신하여 손실을 최소화하는 최적화 알고리즘의 경우에는 대량의 데이터에 적합한 adam(Adaptive
Moment Estimation)의 성능이 좋은 것으로 나타났다.
그림 8. 단일 은닉층의 노드수에 따른 MAE
Fig. 8. MAE based on node count for single hidden layer
첫 번째 실험에 사용된 조합에 대한 연산시간은 그림 9와 같이 나타나며, 이를 분석하면 활성화 함수로 relu를 사용하고, 최적화 알고리즘으로 sgd와 adam을 사용하는 경우가 빠른 연산시간을 보이는
것을 알 수 있다. 따라서 가장 중요한 성능에 있어서 손실함수의 오차가 적고, 상대적으로 빠른 연산시간을 보이는 조합으로 relu와 adam을 사용하는
방법이 가장 효과적인 것을 알 수 있다.
그림 9. 단일 은닉층의 노드수에 따른 연산시간
Fig. 9. Computation time based on node count for single hidden layer
두 번째 실험에서는 활성화 함수로 relu를 사용하고, 최적화 알고리즘으로 adam을 사용하여 다중 은닉층에 대한 성능을 평가하기 위해 각 계층별로
노드수를 동일하게 하는 방법과 감소시키는 방법, 증가시키는 방법으로 비교실험을 진행하였고 실험에 사용된 각 방법에 따른 은닉층별 노드수는 표 5와 같다. 두 번째 실험은 은닉층을 단일 계층부터 4개의 은닉층을 갖는 경우로 나누어 실험하였고, 실험 결과로 얻은 MAE의 그래프는 그림 10과 같고, 연산시간은 그림 11과 같다.
표 5 다중 은닉층별 노드수
Table 5 Number of nodes per multi hidden layer
|
방법
|
1계층
|
2계층
|
3계층
|
4계층
|
|
동일#1
|
[1024]
|
[1024, 1024]
|
[1024, 1024, 1024]
|
[1024, 1024, 1024, 1024]
|
|
동일#2
|
[512]
|
[512, 512]
|
[512, 512, 512]
|
[512, 512, 512, 512]
|
|
동일#3
|
[256]
|
[256, 256]
|
[256, 256, 256]
|
[256, 256, 256, 256]
|
|
동일#4
|
[128]
|
[128, 128]
|
[128, 128, 128]
|
[128, 128, 128, 128]
|
|
감소#1
|
[2048]
|
[2048, 1024]
|
[2048, 1024, 512]
|
[2048, 1024, 512, 256]
|
|
감소#2
|
[1024]
|
[1024, 512]
|
[1024, 512, 256]
|
[1024, 512, 256, 128]
|
|
감소#3
|
[512]
|
[512, 256]
|
[512, 256, 128]
|
[512, 256, 128, 64]
|
|
증가#1
|
[64]
|
[64, 128]
|
[64, 128, 256]
|
[64, 128, 256, 512]
|
|
증가#2
|
[128]
|
[128, 256]
|
[128, 256, 512]
|
[128, 256, 512, 1024]
|
|
증가#3
|
[256]
|
[256, 512]
|
[256, 512, 1024]
|
[256, 512, 1024, 2048]
|
그림 10을 살펴보면 다중 은닉층의 노드수를 동일하게 하는 경우 3계층을 사용할 때 성능이 가장 우수하며, 128개 노드를 사용한 경우가 가장 낮고, 512개의
노드를 사용한 경우(동일#2)가 가장 높은 성능을 보이고 있다. 노드수를 감소시키는 경우를 살펴보면 2048, 1024, 512개 노드로 시작하여
하위 계층으로 갈수록 절반씩 줄이는 3가지 방식을 사용하였는데 [1024, 512]로 2계층만을 사용하는 경우(감소#2)가 좋은 성능을 보이고 있다.
노드수를 증가시키는 경우는 3계층을 사용할 때 성능이 우수하며, [128, 256, 512]를 사용하는 경우(증가#2)가 좋은 성능을 보이고 있다.
그림 10. 다중 은닉층의 노드수에 따른 MAE
Fig. 10. MAE based on node count for multi hidden layer
그림 11를 살펴보면 전체 노드수와 연산시간이 비례하는 것을 알 수 있는데, 동일#2 경우 중간 정도의 속도를 보이고 있으나 큰 문제가 되지 않아 성능평가에
있어서는 주요지표인 MAE를 위주로 판단하였다.
그림 11. 다중 은닉층의 노드수에 따른 연산시간
Fig. 11. Computation time based on node count for multi hidden layer
표 6은 동일, 감소, 증가 방법별로 높은 성능을 보이는 경우의 MAE 값을 나타낸다. 세가지 경우 모두 최하위 은닉층은 512개의 노드를 사용한 경우가
가장 좋으며, 3계층의 노드수를 동일하게 512개로 사용하는 동일#2 방법의 MAE가 0.0354로 가장 성능이 우수한 것으로 나타났다.
표 6 다중 은닉층의 실험 방법별 MAE
Table 6 MAE for each method with multi hidden layer
|
방법
|
계층 및 노드수
|
MAE
|
|
동일#2
|
[512, 515, 512]
|
0.0354
|
|
감소#2
|
[1024, 512]
|
0.0368
|
|
증가#2
|
[128, 256, 512]
|
0.0366
|
그림 12는 본 연구에서 최종 선정된 MLP 모델을 시각적으로 평가하기 위해 나타낸 산점도 그래프이다. X축은 관측된 실제값을 나타내며, Y축은 MLP 모델의
추정값을 나타내며, 붉은 점선은 이상적인 추정선을 나타낸다. 산점도를 살펴보면 점들이 촘촘하게 모여 우상향하는 대각선을 이루고 있어 관측값과 추정값이
강한 상관관계를 나타내고 있는 것을 알 수 있다.
그림 12. 최종 MLP 모델의 산점도
Fig. 12. Scatter graph for final MLP model
그림 13은 본 실험을 통해 얻은 실제 계측값과 추정 계측값에 대한 최소, 평균, 최대 오차의 사례를 보여준다. 회색선은 추정 시점 전후 1시간 동안의 실제
계측값을 나타내며, 검은 선은 추정시점 이후 1시간 동안의 추정 계측값을, 파란색은 추정시점 전후 1시간 단위 계량값을 나타낸다. 최소 오차 그래프는
일몰 시점인 18시에 태양광 발전량이 안정적으로 줄어드는 경우를 보여주고 있으며, 평균 오차 그래프는 12시경 55%였던 발전율이 80%까지 증가하는
경우를 보여주고 있다. 최대 오차는 ESS가 연계된 태양광 발전원으로 18시경 발전량이 거의 없다가 19시부터 약 40분간 ESS 방전이 일어난 특별한
상황인 것으로 판단된다.
그림 13. 추정된 계측데이터의 최소, 평균, 최대 MAE
Fig. 13. Minimum, average, and maximum MAE of estimated measuring data
ESS로 인해 발생하는 최대 오차를 줄이기 위해 향후에는 k-means 군집화를 통해 태양광만 있는 경우와 ESS가 연계된 태양광의 경우를 분리하고,
두 경우에 대한 회귀분석 모델을 따로 만들어서 계측값을 추정하는 방식에 대한 연구를 진행할 예정이다.