git clone https://github.com/kun-woo-park/HFSS_Modeling.git
cd HFSS_Modeling
python3 HFSS_modeling.py
본 과제는 HFSS라는 High frequency simulator의 resonance frequency의 계산 값보다 더 나은 성능을 가지는 resonance frequency 예측 함수를 모델링 하는 것을 목적으로 한다. 주어진 데이터는 # of turns, permittivity(surface), LS/LW, SEP, permittivity(subsidence), OD, Analytic(resonance frequency) 로 이루어져 있다. 여기서 Analytic은 실제 실험으로 얻어진 resonance frequency값이다. 이에 Analytic 이외의 6개의 feature로 Analytic를 표현하는 모델을 구축하고자 한다. 모델 구축 후 작성된 내용을 Expressions_for_Resonant_Frequency_of_Wirelessly_Accessible_Planar_Mirrored-Coil_Sensor_in_Biomedicine.pdf 에서 확인 할 수 있다. 정리되지 않은 실험 내용은 HFSS_train에서 확인할 수 있다.
총 세가지 모델을 규정했으며, 각 모델은 다음을 가정한다.
각 모델의 변수는 다음을 의미한다.
여기서 우린 target value와 prediction value의 오차를 줄이기 위해 다음과 같은 Objective function을 최소화 해야 한다.
각각의 모델에 대한 수렴 결과는 다음과 같다.
더 복잡한 구조의 모델이 MSE가 감소함을 확인하였으나, 그 크기가 크지 않아, 이후 log만을 사용한 모델로 축소시켜 실험하였다.
여기서 한 점이 outlier로 발생하였다. 해당 값을 찾아보니 다음과 같았고, 이 값을 제외하고 다시 수렴시킨 결과 MSE가 감소하였다.
이전까지는 normalize 방법을 standardize 방법을 채택했었는데, 이 방법은 변수 표본마다의 표준편차와 평균값이 달라질 수 있어 기존값을 복원하는데에 신뢰도가 떨어진다. 따라서 이를 대체하기 위해 단지 각 표본들을 Maximum 값으로 나누어 scaling을 진행하였다. Scaling 후의 결과는 기존의 standardize보다는 높은 MSE를 보였다. Scaling 이후에는 복잡한 과정 없이 기존값을 복원할 수 있어, percentage error를 추가적으로 표기하였다
여기서 필요없는 feature을 제외하여 모델을 간소화 하고, overfit을 줄이기 위해 Regularizer을 추가하였다. Regularizer은 l1 norm을 사용하였다(Lasso regression).
결과를 보면, feature 갯수 자체를 작게 사용해서 그런지, MSE가 낮게 나오려면, 6개의 feature을 모두 사용해야 했다. 따라서 Regularizer을 이용한 결과는 직접 gamma 값을 조정하며 수렴시켰고, 결과적으로 0.001 값을 주었을때 이상적으로 수렴함을 확인하였다.
최종적으로 설계한 모델로 하여금 Analytic으로 다시 학습시켜 HFSS와의 정확도를 비교하였다. 여기서 Analytic이란 실제 실험으로 얻어진 resonance frequency이다.
먼저 초기 Analytic 학습 결과 3개의 outliers가 발견되었다.
이를 제거하고 또다시 학습시킨 결과는 다음과 같다.
최종 결과를 HFSS와 비교하였다.
주어진 evaluation 데이터를 활용하여 evaluate 해본 결과는 다음과 같다.
이때 각 Decision variables은 다음과 같고, 이를 수식에 그대로 적용하여 다시 실험해 보았다.