공부/프로젝트

[빅콘테스트] 2. 자료조사

금새벽 2021. 8. 10. 01:42

데이터를 보다 보니 문득 막연해져서 배경 지식을 쌓을 겸 자료조사를 시작했다. 

'댐 수위 예측'이라고 구글링하니 무슨 죄다 논문밖에 안 나온다.

요즘 논문복 터졌네 나...

 

 

1. 딥러닝 오픈 라이브러리를 이용한 하천수위 예측

출처: 한국방재학회논문집 https://www.j-kosham.or.kr/journal/view.php?number=606

 

Prediction of River Water Level Using Deep-Learning Open Library

1. 서론 하천의 수위 및 유량 정보는 가뭄과 홍수 등 수재해 예방과 수자원 개발 및 이용, 생태계 보존 등 다양한 목적을 위한 기초자료이며, 이에 대한 정확한 계측 및 예측이 요구된다. 특히 우

www.j-kosham.or.kr

대충 읽어보면 죄다 tensorflow를 이용한 LSTM, 혹은 다중회귀를 돌렸다고 한다.

하필 또 지금 듣고 있는 인공지능응용 수업에서 다루는 내용이라 수업을 복습하는 느낌으로 쭉 읽어봤다.

다중회귀 모형보다는 LSTM모형이 더 안정적인 성능을 보인다고 한다. 앞단에서 개념을 복습시켜줘서 의도치 않게 수업까지 복습해버렸다. 아무래도 공모전과 기말고사를 병행 가능할 것 같은 행복한 기분이 든다! 상부상조랄까...

이번 공모전에서는 RMSE로 모델 성능을 판단한다고 했는데, 해당 논문도 RMSE를 사용했다.

 

2. 딥러닝을 활용한 LSTM모형 구축 및 댐 유입량 예측

서울시립대 토목공학과 학생의 석사 학위 논문 http://www.riss.kr/search/detail/DetailView.do?p_mat_type=be54d9b8bc7cdb09&control_no=9504a081d5ae2a57ffe0bdc3ef48d419&outLink=K 

 

http://www.riss.kr/search/detail/DetailView.do?p_mat_type=be54d9b8bc7cdb09&control_no=9504a081d5ae2a57ffe0bdc3ef48d419&outLink=K

 

www.riss.kr

결론적으로, 홍수기(6~9월)의 최대유입량을 예측하고자 할 때에는 강수량 자료를 함께 사용하는 것이 더 좋을 것으로 판단되며, 홍수기를 제외한 이수기에는 강수량 자료를 사용하지 않는 것 이 더 정확한 것으로 판단되어진다.

과소추정, 과대추정이라는 모르는 용어가 나왔다..

β>0 일 때 독립변수와 오차항에 음의 상관관계가 있다면 추정량 β햇은 항상 모수를 과소추정(underestimate)하게 된다. 만약 양의 상관관계가 있다면 추정량 β햇은 항상 모수를 과대추정(overestimate)하게 된다.

실제 값보다 작게 혹은 크게 예측하는 걸 말하는 것 같다... 찾아보니 오차항과 독립변수 간 상관관계와도 연관이 있다.

 

첫번째 논문과 내용이 거의 흡사하다. RNN-LSTM 모델을 사용했고, 하이퍼파라미터 최적화도 비슷한 방법으로 진행했다. 특히 홍수기와 그 외 이수기에서 모델의 데이터를 조금 다르게 하는 것이 더 좋은 결과를 가져올 것이라는 결론이 인상적이었다. 

이상치 보정(평균값 대치) 정규화, 표준화 또한 진행했는데, 이 점은 나도 고려해봐야 할 것 같다.

시퀀스 길이(Sequence Length)는 모형이 한 시점의 데이터를 학습하는 데 몇 시간 자료를 이용할지 결정한다. Sequence Length에 따른 성능을 비교하기 위하여 1시간, 3시간, 6시간, 9시간으로 나누어 학습을 진행하였 으며, Sequence Length를 제외한 변수의 값은 고정(Hidden Dim=10, Learning Rate=0.01, Iteration=1000)하여 분석하였다.

시퀀스 길이...에 대한 내용은 안 배워서 그런지(배웠는데 내가 기억을 못하는 거일수도) 조금 생소하다. 더 알아봐야겠다. 

최종적으로 Sequence Length가 3, Hidden Dim이 20, Learning Rate가 0.0001, Iteration이 5000 일 때 성능이 가장 좋은 것으로 판단된다

위에서 보는 것처럼 총 4가지 파라미터를 최적화했다. 나는 그리드 서치 혹은 랜덤서치까지 고려해보면 좋을 것 같다.

 

3. 딥러닝 기반 침수 수위 예측: 미국 텍사스 트리니티강 사례연구

https://www.researchgate.net/publication/321264401_In_Korean_'dibleoning_giban_chimsu_suwi_yecheug_migug_tegsaseu_teulinitigang_salyeyeongu'_Water_Level_Forecasting_based_on_Deep_Learning_A_Use_Case_of_Trinity_River-Texas-The_United_States 

 

(PDF) (In Korean) ‘딥러닝 기반 침수 수위 예측: 미국 텍사스 트리니티강 사례연구’ (Water Level Foreca

PDF | (Invited as an Excellent Paper at The 43rd Winter Science Conference - KIISE - 2016) This paper presents an attempt to apply Deep Learning... | Find, read and cite all the research you need on ResearchGate

www.researchgate.net

사용 모델: 일반 RNN, Back Propagation Through Time(BPTT)[11]으로 학습하는 RNN (RNN-BPTT), Long Short-Term Memory (LSTM)

변수: 하천 유량 (discharge (feet3/s)), 강수량(precipitation(inches), 수 위(water level(feet)) 

활성화 함수: 은닉층-tanh / 출력층-sigmoid

전처리: 정규화(normalized)

최적화: (1) 은닉층은 6개 노드, (2) 학습을 위한 반복 횟수(epochs)는 200. (3) 학습율(Learning Rate)은 0.05

결과: LSTM이 다 른 두 알고리즘에 비해 늦게 수렴해 가지만, 결과적으로 가장 좋은 검증(Validation) 정확도를 보여주고 있다. LSTM은 학습 과정과 마찬가지로 복잡한 구조로 인해 예측을 수행하는데 시간이 많이 걸 린다. 그러나 이러한 상황(~2.8 밀리 초)에서도 제안된 모델은 예측된 값을 거의 즉시 제공할 수 있다. 따라서 이 모델은 실시간 상황에서 수위 예측에 사용될 수 있다.

 

학습과 예측 시간을 계산하는 것도 괜찮을 듯

미래 수위 예측(아리마?LSTM?)을 해서 보여줘도 좋을 듯.

 

4. 수위예측 알고리즘 정확도 향상을 위한 Hybrid 활성화 함수 개발

http://www.jksww.or.kr/journal/article.php?code=18895 

 

:: Journal of the Korean Society of Water and Wastewater ::

하천 수위예보를 위한 신경망-유전자알고리즘 결합모형의 실무적 적용성 검토 이구용1, 이상은1*, 배정은1, 박희경1 1 KAIST 건설및환경공학과 As a national river remediation project has been completed, this study

www.jksww.or.kr

목표 지점의 수위를 예측하기 위하여 당일 측정 가능한 자료는 유량, 강우량의 자료를 사용하였고, 익일 사용 가능한 자료는 실측 강우량을 학습 자료로 사용하였다.

읽다보니 2012 연구여서 패쓰..

 

5. Flood prediction in the Namgang Dam basin using a long short-term memory (LSTM) algorithm

http://www.kjoas.org/article/?num=N0030470308 

 

Fulltext – Korean Journal of Agricultural Science

 

www.kjoas.org

하천의 수위만을 단독으로 이용하여 관측자료의 관측 시간간격과 선행시간에 따른 인공신경망의 예측성에 관한 연구는 미진한 상태이다. 따라서 본 연구에서는 시계열 자료의 예측에 최적화된 LSTM 기법을 이용하여 하천수위의 관측 시간별 선행시간에 따른 예측성능을 비교분석하는 연구를 수행한다. 

API: 케라스

입력노드: 12개로 설정하여 선행시간 별 수위값을 예측할 수 있도록 입력자료를 구성하였으며

은닉층 개수: 사전 테스트를 통해 15개로 선정

학습 반복시행 횟수: 모든 경우에 대해서 균일하게 1,000회로 설정하였으며 반복 학습시 검증손실(validation loss)이 감소하지 않는 경우가 20회(patience = 20)에 도달하게 되면 강제로 학습을 종료 할 수 있도록 설정하여 모델 학습에 소요되는 시간을 줄일 수 있도록 설계

활성화 함수: LSTM 예측 모델에서 우수한 성능을 보여주고 있는 것으로 알려진 ReLU (rectified linear unit) 함수를 사용

최적화기법(optimizer): adam

가중치의 상태량: 시계열 자료의 특징을 최대한 반영할 수 있도록 반복 학습(epoch)을 수행 할 때 마다 전 단계에 학습된 가중치의 상태량을 유지할 수 있도록 statueful = true로 옵션을 설정하여 학습을 진행

평가 방법: 평균제곱근 오차(RMSE)

관측자료의 시간 간격에 따른 예측 성능을 알아보기 위하여 먼저 6개의 시간간격(1, 2, 4, 6, 12, 24시간) 자료에 대해서 동일 간격 자료와(group-A) 시간 평균 자료(group-B)로 재구성하였다. 여기서 동일 시간 간격이란 1시간 단위의 원자료에서 일정 시간 간격으로 데이터를 재구성하였다는 의미이며, 시간 평균 자료는 다음 식(9)에 의해 재구성 자료를 의미한다.

시간 평균 계산식

 

6. Evaluation of LSTM Model for Inflow Prediction of Lake Sapgye (2021)

삽교호 유입량 예측을 위한 LSTM 모형의 적용성 평가

https://www.koreascience.or.kr/article/JAKO202113855736444.page 

 

Evaluation of LSTM Model for Inflow Prediction of Lake Sapgye -Journal of the Korea Academia-Industrial cooperation Society

Abstract A Python-based LSTM model was constructed using a Tensorflow backend to estimate the amount of outflow during floods in the Gokgyo-cheon basin flowing into the Sapgyo Lake. To understand the effects of the length of input data used for learning, i

www.koreascience.or.kr

삽교호로 유입하는 곡교천 유역의 홍수시 유출량을 추정하기 위해서 Tensorflow를 활용하여 파이썬 기반의 LSTM 모형을 구축하였다. 층의 깊이가 성능에 미치는 영향을 분석하기 위해, 은닉층의 깊이를 2, 4, 6층으로 증가시키면서, 선행시간 1시간부터 5시간까지 예측을 수행하였으며, 은닉층의 개수가 4개일 때가 가장 우수한 성능을 나타내었다. 학습에 사용하는 입력자료의 길이 즉, 시퀀스길이가 모형의 성능에 미치는 영향을 파악하고자 시퀀스길이를 3시간, 5시간, 7시간으로 증가시키면서 모형을 실행한 결과, 시퀀스길이가 3시간일 때, 전 시간대에 걸쳐 예측 성능이 우수한 것으로 분석되었다. 모형 검증에서 극한 강우 3건에 대하여 예측을 수행한 결과 선행시간 1시간에 대하여 평균 NSE 0.96 이상의 높은 정확도를 나타내었으며, 선행시간 2시간 이상에 대하여 정확도는 점차적으로 낮아지는 것으로 확인되었다. 결론적으로 시퀀스길이 3시간을 사용하여 선행시간 1시간에 대한 예측을 수행한다면 곡교천 강청 관측소의 홍수위를 높은 수준의 정확도로 예측할 수 있음을 확인하였다.

 

본 연구에서 구축한 모 형은 전처리, 메인 엔진, 후처리로 구성되었으며, 구글에 서 제공하는 오픈 소스 소프트웨어 라이브러리 텐서플로 우와 파이썬 언어를 사용하여 구축하였다. 파이썬에 기 초한 Pandas, Numpy, Scikit-learn과 같은 라이브러리를 활용하여 입력자료를 업로드하여 모형에 입력하기 에 적합한 형태로 가공하는 전처리 작업부터 정규화, 모형 결과에 대한 평가지수 산정, 결과에 대한 그래프을 포함한 후처리 작업을 수행한다.

 

강우량과 유량 자료를 동시에 사용하는 시나리오 1의 결과가 유량 자료만을 사용하는 시나리오 2 보다 모든 선행시간대에서 정확도가 우수한 것으로 분석 되었다.

 

학습에 사용하는 입력자료의 길이 즉, 시퀀스 길이가 모형의 성능에 미치는 영향을 파악하고자 시퀀스길이를 3시간(SL=3), 5시간 (SL=5), 7시간(SL=7)로 증가시키면서 모형을 실행하였 다. 기본 자료가 1시간 단위로 구성되어 있기 때문에 시퀀스길이가 3시간일 경우 과거 2시간 전(t-2) 시간부터 현재 시간(t)까지 3시간 자료가 학습에 활용되었음을 의미한다.
결론적으로, 시퀀스 길이가 3시 간일 때 모든 선행시간의 예측에 가장 우수한 성능을 나 타내었으며, 반면에 시퀀스 길이가 7시간인 경우가 가장 낮은 성능을 나타내는 것으로 나타나, 시퀀스길이가 짧을 수록 예측 정확도는 높은 것으로 분석되었다.

 

Tensorflow를 활용하여 LSTM 인 공신경망 모형을 구축하였다. 모형 매개변수는 민감도 분석을 통해 은닉층의 개수는 4개, 시퀀스길이는 3시간, 학습율은 0.01, 학습횟수는 2000회로 하여 2011년부터 2019년까지 시간 단위의 강우량과 유량 자료를 이용하여 유출 모의를 수행하였으며 도출된 결론은 다음과 같 다.
1. 입력자료의 특성에 따른 예측의 변화를 파악하기 위해서 2개의 시나리오를 설정하였으며, 단시간 예측에서 시나리오별 성능의 차이는 크지 않았으나, 장시간 예측에는 유량과 강우량을 모두 사용한 시나리오 1이 유량만 사용한 시나리오 2에 비하여 성능이 우수한 것으로 조사되었다.
2. 은닉층의 깊이가 성능에 미치는 영향을 파악하기 위해 층의 깊이를 증가시키면서, 선행시간 1시간 부터 5시간까지 예측을 수행하였다. 층이 4개인 경우가, 모든 선행시간대에 대하여 전반적으로 우수한 결과를 주었다. 또한, 층이 깊은 경우 전 선행 시간에 걸쳐 안정적인 결과를 주기는 하나, 단기간 예측에 있어서 정확도가 층이 다른 얇은 층에 비하여 낮아지는 것으로 분석되었다.
3. 시퀀스길이가 모형의 성능에 미치는 영향을 파악하 고자 시퀀스길이를 3시간, 5시간, 7시간으로 증가 삽교호 유입량 예측을 위한 LSTM 모형의 적용성 평가 293 시키면서 모형을 실행하였으며, 시퀀스 길이가 늘어 남에 따라 오차는 증가하여 예측 정확도가 감소 하였다. 이는 시퀀스길이가 길어지면 현재 시간에 서 과거 먼 곳에 있는 자료는 학습할 기회가 적어 져서 예측 정확도가 떨어지는 것으로 분석되었다. 시퀀스길이가 3시간일 때 모든 선행시간의 예측에 가장 우수한 성능을 나타내었다.
4. 모형 검증에서 선행시간이 T+1에서 T+5까지 길어질수록 모든 강우 사상에서 오차는 증가하였으며, 예측 정확도는 감소하였다. 또한, 선행시간 T+1, T+2일 때 모든 강우 사상에 걸쳐 예측 정확도가 높았으나, T+3 이상일 때 정확도가 상당히 낮아지 는 것으로 조사되어, 선행시간 T+2까지 예측 결과를 사용하는 것이 바람직한 것으로 분석되었다.

 

'공부 > 프로젝트' 카테고리의 다른 글

[빅콘테스트] 3. LSTM 실습  (0) 2021.08.12
[빅콘테스트] 1. 데이터 전처리  (0) 2021.08.10