Nlinear 알고리즘은 Nonlinear AutoRegressive Network with eXogenous inputs(외부 입력이 있는 비선형 자기 회귀 신경망)의 약어입니다.
이 알고리즘은 먼저 입력 데이터를 이동 평균 등의 전처리 과정을 거쳐서 데이터를 보다 안정적으로 만듭니다.
그리고 입력 데이터와 이동 평균 데이터를 기반으로 여러 개의 은닉층과 출력층으로 구성된 인공 신경망을 학습합니다.
이 인공 신경망은 과거의 입력과 출력 데이터를 기반으로 다음 시점의 값을 예측하는 방식으로 동작합니다.
이 때, Nlinear 알고리즘은 시간 스케일에 대한 자유도가 높아서 데이터의 복잡도나 주기성을 보다 정확하게 예측할 수 있습니다.
반면, SCInet 알고리즘은 Seasonal Input-Output Network with eXogenous inputs(외부 입력이 있는 계절성 입출력 신경망)의 약어입니다.
이 알고리즘은 시계열 데이터의 계절성을 고려하여 모델링하는 것이 특징입니다.
이를 위해 입력 데이터를 전처리하여 계절성 요인을 추출하고, 이 계절성 요인을 입력으로 받는 인공 신경망을 구성하여 학습합니다. 이 때, SCInet 알고리즘은 시간 스케일에 대한 제약이 있어서 짧은 주기의 데이터에 대해서는 예측이 어려울 수 있습니다. 그러나 계절성을 갖는 데이터에 대해서는 Nlinear 알고리즘보다 우수한 성능을 보입니다.
두 알고리즘의 공통점은 모두 외부 입력을 고려한다는 점입니다. 또한, 모두 인공 신경망을 기반으로 합니다
<Nlinear 알고리즘 예제>
위 코드에서는 먼저 NumPy와 Matplotlib 라이브러리를 import하고, 그래프를 그리기 위한 데이터 x와 y를 생성합니다. 이어서 curve_fit() 함수를 이용하여 Nlinear 알고리즘을 적용하고, 적합된 결과를 그래프로 출력합니다. 결과적으로 파란색 실선은 원본 데이터를, 빨간색 실선은 Nlinear 알고리즘에 의해 예측된 데이터를 나타냅니다
<SCInet 알고리즘 예제>
위 코드는 SCInet 알고리즘을 이용해 데이터를 학습하고, 테스트 데이터를 예측하여 모델의 성능을 평가하는 예제 코드입니다. 데이터 전처리 부분에서는 Pandas 라이브러리를 이용해 데이터를 로드하고, 학습 데이터와 테스트 데이터로 분리합니다. 그리고 SCInet 알고리즘을 이용해 모델을 학습하고, 테스트 데이터를 예측합니다. 마지막으로, sklearn 라이브러리를 이용해 평균 제곱 오차(MSE)를 계산하여 모델의 성능을 평가합니다.