본 포스팅은 Data-Driven Modeling: Concept, Techniques, Challenges and a Case Study
현실 세계의 복잡한 시스템의 행동이나 특성을 예측하기 위해 모델링을 한다. 어떤 자극이나 입력
이번 포스팅에서는 데이터 기반 모델링에 대한 이해를 높히는 것을 목표로 한다. 이후 모델링 접근법 분류, 모수적 데이터 기반 모델링에 대한 설명을 하고 motor modeling case study를 통해 물리 기반 모델링 방법과 데이터 기반 모델링 방법에 대한 이해를 할 수 있도록 작성했다.
Modeling Approaches

모델링 방법은 크게 물리 기반 모델링과 데이터 기반 모델링으로 나눌 수 있다.

물리 기반 모델링 기법을 좀 더 세분화하면 분석적 접근

데이터 기반 모델링은 물리적 지식을 활용하기 보다 실험 데이터를 활용해 입력 변수와 출력 변수 사이의 관계를 직접 정의한다. 데이터 기반 모델링은 모수적 방법
Parametric Data-Driven Modeling

모수적 데이터 기반 모델링은 위 그림과 같이 1) 실험/운영을 통한 데이터 취득, 2) 모델 선택, 3) 데이터에 가장 적합한 모델 파라미터 추정, 4) 모델 테스트와 검증 순서로 진행된다. 그리고 모델링의 성능이 원하는 수준에 도달할 때 까지 이 과정을 반복한다.
데이터 기반 모델링 방법의 성능은 데이터의 질에 매우 크게 영향을 받는다. 실험을 통해 데이터를 취득하는 경우 실험 설계 단계에서 실제로 발생할 수 있는 운영 조건을 고려해야 한다. 그리고 취득한 데이터를 분석해 이상치나 노이즈를 처리할 수 있는 전처리 과정을 거치는 것도 필요할 수 있다.
모델 선택 과정에서는 모델링을 하고자 하는 시스템의 특성에 따라 적합한 모델을 선택할 필요가 있다. 모델의 특성에 따라 크게 선형 모델과 비선형 모델로 구분 지을 수 있고, 비선형 모델이 더 복잡한 현상을 모사할 수 있다. 작은 단위의 시스템을 모델링 하는 경우 선형 모델로 충분히 모사 할 수 있기 때문에 선형 모델을 먼저 선택하고 결과를 확인해 결과가 좋지 않은 경우 비선형 모델링을 시도한다. 모델의 종류에 따라 추정이 필요한 parameter가 결정되기 때문에 이후 과정에서 선택한 모델의 종류에 따라 추정 방식이 달라진다.
모델의 파라미터 추정은 앞 단계에서 선택한 모델의 parameter를 데이터에 가장 적합하게 맞추는 과정이다. 대부분 알고리즘에서 입력 값에 해당하는 모델의 예측과 실제 데이터의 차이를 줄이는 것을 목표로 최적화를 통해 파라미터를 추정한다. 머신러닝 알고리즘에 대해서 이 과정을 **학습
마지막으로 개발된 모델을 다시 데이터를 활용해 평가하고 요구 수준에 맞는 모델을 얻을 때 까지 새로운 아이디어와 데이터를 추가하며 위 과정을 반복해 데이터 기반 모델링을 수행한다.
최근에는 matlab이나 python에 다양한 machine learning 모델을 활용 할 수 있는 toolbox와 library를 제공하기 때문에 데이터 취득 이후 과정은 어렵지 않게 시도 할 수 있다.
Case study : Simple DC Motor Modeling
DC motor는 간단한 dynamic system으로 아래 그림과 같이 간단한 bond graph로 모델링 할 수 있다. 공급 전력에 따라 DC motor의 회전 속도나 출력 토크를 분석할 수 있다. 이와 같은 방식은 DC motor의 동작에 대한 이해에 기반해 전류와 DC motor의 회전 속도, 토크의 관계를 정의한 물리 기반 모델이다.

여기에선 아래와 같이 DC motor의 제어 입력 신호와 출력 신호 사이 관계를 데이터 기반 기법으로 모델링하는 예시를 소개한다. motor는 pulse width modulation

이 예시에서는 PWM duty cycle의 값으로 motor의 회전 속도를 예측할 수 있는 데이터 기반 모델을 학습시킨다.
Step1. Data aquisition
모델링에 필요한 데이터를 취득하기 위해 아래 이미지와 같이 실험 준비를 한다. 이 실험 세팅에서 데이터 기반 모델링을 활용해 모사하고자 하는 변수인 PWM duty cycle과 motor 회전 속도 데이터를 취득한다.

Duty cycle을 0에서 100%까지 변화 시키며 motor 회전 속도를 RPM 단위로 취득 했다. 0.02초의 데이터 취득 주기로 500초 동안 실험을 진행해 총 25000개의 데이터 값을 취득했다. 그 결과는 아래 그림에서 볼 수 있다.

Step2. Model selection
이 사례에서 모델링을 하고자 하는 input과 output signal의 비선형성을 고려해 NARX

예측 변수
시간에 따라 변화하는 데이터 특성 상 현재 시점에서 과거 시점으로 갈 수록 예측 변수와 상관 관계는 줄어들기 때문에 적절한 길이의 데이터를 활용해야 한다.

여기에선

Step3. Model Training and Validation
모델 학습은 모델 파라미터를 조정해 모델의 예측과 실제 데이터의 오차를 최소화하는 최적화 과정이다. 여기에서 cost function은 회귀 문제에 널리 사용되는 MSEMeanSquaredError를 사용했다. 학습 과정에서는 전체 실험 데이터의 80%만을 사용했고 나머지 20%는 모델의 성능 검증하는데 사용했다.

위 그림은 학습에 사용되지 않은 20%의 데이터에 대해 실제 측정 값과 모델 예측 값을 함께 도시한 결과다. 이로부터 학습된 모델이 꽤 정확하게 motor speed를 예측하고 있는 것을 확인할 수 있다.
Conclusion
본 포스팅을 통해 physics-based modeling과 data-driven modeling의 개념을 이해하고 data-driven modeling의 과정을 구체적으로 설명했다.