KSME 학회 후기 — 신경회로망 PM2.5 예측 (대한기계학회 유체경진대회 금상, 2019)

📅 2019년 11월 학부 졸업논문으로 진행한 연구의 회고. 대한기계학회(KSME) 유체경진대회에서 금상을 받았던 작업. 2024년 시점에서 다시 정리하고, 2년 뒤 대학원에서 발견한 함정까지 솔직히 기록.

제주도에서 열린 대한기계공학회 학술대회 사진 그림1. 2019년 제주에서 열린 대한기계공학회 학술대회 — 유체경진대회 금상 시상

무엇을 했나

신경회로망(ANN) 으로 초미세먼지(PM2.5) 농도를 예측. 기상·대기질 데이터로 학습해서 6시간·12시간 후의 농도를 예측하는 모델.

6시간 후 미세먼지 농도 예측 결과 그림2. 6시간 후 미세먼지 농도 예측 결과 (학회 발표용)

왜 이 연구가 의미 있다고 봤나

기존 PM2.5 예측의 표준은 수치해석(전산유체역학·대기화학 모델)인데: - 계산 시간 1개월 이상 + 막대한 컴퓨팅 자원. - 정확한 만큼 무거움.

신경회로망 접근의 장점: - 약 10만 개 데이터로 학습 가능. - 학습 후엔 추론이 즉시 (몇 초 단위). - 정확도는 수치해석에 못 미치지만, 계산량 대비 효율이 압도적.

목표: "정확도를 어느 정도 양보하더라도 빠르게 단기 예측이 가능한 모델".

데이터 처리 파이프라인

A. 데이터 수집

데이터 수집 출처 그림3. 데이터 수집 및 출처

B. 데이터 가공 — 변수 선택의 3단계

Step 1. 결핍 변수 제거

결측치 50% 이상인 변수 삭제 (데이터 오염 방지).

Step 2. AIC 단계적 선택법 (변수 후보 압축)

AIC(Akaike Information Criterion) = 모델 적합도와 변수 개수 사이의 균형을 평가하는 지표. 작을수록 좋음.

단계적 선택법으로: - Middle and low cloud·Sunshine hour 제거. - 21개 변수 남김.

데이터 가공 — AIC 변수 선택 그림4. 데이터 가공 — AIC 단계적 변수 선택

Step 3. VIF 로 독립성 검증

VIF(Variance Inflation Factor) — 다중공선성 측정. VIF 값이 크면 다른 변수들과 강한 선형 관계 → 둘 중 하나만 남겨야 모델 안정.

여기서 통계적 결과 + 공학적 도메인 지식을 결합: - 예: 상대습도 vs 증기압 둘 다 높은 VIF → 더 근본적인 물리량인 증기압 선택. (상대습도는 증기압·온도로부터 파생.)

데이터 가공 — VIF 독립변수 선택 그림5. 데이터 가공 — VIF 로 독립변수 선택

Step 4. 최종 13개 변수

pm10 · Visibility · SO2 · CO · NO2 · Vapor Pressure · O3 · Sea level pressure · Temperature · Solar radiation · Total cloudy · Wind direction · Wind speed

C. 결측치 보정 (Imputation)

Predictive Mean Matching (PMM) 사용. 선형 모델 기반 imputation 은 비물리적 값 (음수 농도 등) 을 생성하는 경우가 있어 배제.

결측치 보정 결과 그림6. PMM 결측치 보정 결과

모델 — ANN + Window Learning

학습 모델링 (NN) 그림7. 학습 모델링 — 신경회로망 구조

기본 ANN 위에 Window Learning 기법 적용 — 시계열 예측의 표준 패턴:

이전 72시간 데이터를 한 묶음(window)으로 입력 → 6 / 12 / 24시간 후 PM2.5 농도 예측.

Batch Configuration 그림8. Batch Configuration — 14개 변수를 재구성, batch size 100

결과

학습 결과 및 Test 결과 (Scatter Plot) 그림9. 학습 / 테스트 결과 산점도 (Scatter)

예측 관측값 시계열 그래프 그림10. 예측·관측값 시계열 비교

2019년 발표 시점에는 결과가 "괜찮아 보였다". 산점도의 R²·MAE 도 적당했고, 시계열도 대략 추세를 따라가는 듯.

2년 뒤 — 대학원에서 발견한 함정

2021년 대학원 연구 중 같은 모델을 다시 들여다보다 발견한 사실:

Time lag (시간 밀림) 현상 — 모델이 사실은 미래를 예측하는 게 아니라 "가장 가까운 과거를 그대로 따라 그리고 있었다". 즉 6시간 후 예측 그래프가 6시간 전 실제값과 거의 일치.

산점도(scatter) 만으로는 이 문제가 보이지 않는다. 점들의 분포는 좋은 R² 를 보여주지만, 시계열을 펼쳐서 시간축으로 정렬해야 "예측이 실제보다 N 시간 뒤처져 있다"는 게 보임.

보완 시도 (RL 기반 거리 + 각도)

대학원에서 강화학습으로 이 문제를 다시 봄: - 손실 함수에 유클리드 거리 외에 각도 차이(시계열 변화 방향)를 추가. - 시간 밀림이 어느 정도 보완됨. - 다만 메인 연구가 있어 끝까지 정리하지 못함.

회고 — 그때와 지금

"교수님들을 (모르고) 속이고 금상을 받았던 셈"

당시엔 결과가 좋아 보였지만 본질을 못 본 거. 그렇지만: - 데이터 수집부터 변수 선택, 결측치 보정, 모델 구성까지 전 파이프라인을 직접 만든 경험은 그대로 남음. - 이때 깔린 통계학·신경망 기본기가 지금까지 작업의 토대. - 틀린 결과도 학습이라는 것 — 산점도만 보면 안 된다는 lesson 이 두 번 다시 같은 실수를 안 하게 만듦.

그때 적은 다짐 (2019)

"앞으로는 다상유동·전통 유체 등 물리적 세계에 AI를 얼마나 유효하게 결합할 수 있을지 기대됩니다. 특히 베이지안 통계학 추천."

2024년 현재

회사원이지만 그때 그린 그림은 여전히 유효. PM2.5 같은 환경 시계열, 다상유동·CFD + ML 결합, 베이지안 — 다 흥미로운 영역 그대로.

참고


📦 이 글은 제가 운영하던 티스토리 블로그에서 옮겨온(migration) 글입니다. 원문: taehyuklee.tistory.com/18

이 글 공유𝕏f

댓글