심화 프로젝트

Chapter.5 심화 프로젝트(6)

devjjun 2026. 5. 8. 11:54

TIL(Today I Learned)


1️⃣심화 프로젝트

머신러닝 모델 성능 개선을 위한 Voting Ensemble 적용

엔진 센서 데이터를 활용한 결함 유형 분류 문제에서는 단일 모델만으로는 모든 결함 유형을 안정적으로 구분하기 어려웠다. 특히 정상 상태와 일부 결함 유형은 비교적 명확하게 분리되었지만, Fault 2와 Fault 3은 센서 분포가 매우 유사하여 모델이 두 클래스를 혼동하는 경향이 나타났다.

이를 보완하기 위해 Random Forest, XGBoost, LightGBM, CatBoost 등 여러 Tree 기반 모델을 학습하고, 성능이 우수한 모델들을 조합한 Soft Voting Ensemble을 적용하였다.


1. 단일 모델 성능 비교

먼저 Logistic Regression, Random Forest, XGBoost, LightGBM, CatBoost 모델을 각각 학습하여 성능을 비교하였다.

Tree 기반 모델인 Random Forest, XGBoost, LightGBM, CatBoost는 모두 F1-Macro 기준 약 0.75 수준으로 유사한 성능을 보였다. 반면 Logistic Regression은 F1-Macro가 약 0.51 수준으로 낮게 나타나, 본 데이터에서는 선형 모델보다 비선형 관계를 잘 반영하는 Tree 기반 모델이 더 적합하다는 것을 확인할 수 있었다.

특히 Fault 2와 Fault 3의 경우 모델별 F1-score가 약 0.49~0.55 수준에 머물렀다. 이는 단순히 특정 모델의 성능 문제가 아니라, 두 결함 유형의 센서 패턴 자체가 매우 유사하기 때문에 발생하는 구조적 한계로 해석할 수 있다.


2. Voting Ensemble을 적용한 이유

Voting Ensemble은 여러 모델의 예측 결과를 결합하여 최종 예측을 수행하는 방법이다.

이번 프로젝트에서는 각 모델이 가진 예측 편향을 줄이고, 모델 간 장점을 결합하기 위해 Voting Ensemble을 적용하였다. 특히 단순히 가장 많은 표를 얻은 클래스를 선택하는 Hard Voting이 아니라, 각 모델이 예측한 클래스별 확률을 평균 내어 최종 클래스를 결정하는 Soft Voting 방식을 사용하였다.

Soft Voting을 사용한 이유는 엔진 결함 예측에서 단순한 정답 여부보다 각 클래스에 대한 예측 확률이 중요하기 때문이다. 예를 들어 특정 결함일 가능성이 25~30%만 넘어도 조기 진단 관점에서는 민감하게 반응할 필요가 있다. 따라서 확률 기반으로 판단하는 Soft Voting이 결함 탐지 문제에 더 적합하다고 판단하였다.


3. 3개 모델 Soft Voting Ensemble

3개 모델 Soft Voting Ensemble

먼저 성능이 좋았던 Random Forest, LightGBM, CatBoost 3개 모델을 조합하여 Soft Voting Ensemble을 구성하였다.

Baseline 기준으로 Fault 2의 F1-score는 0.53, Fault 3의 F1-score는 0.50, F1-Macro는 0.76으로 나타났다. 이후 하이퍼파라미터 튜닝을 적용했지만 Fault 2와 Fault 3의 성능은 각각 0.51, 0.51 수준으로 큰 개선은 나타나지 않았다.

즉, 앙상블을 적용해도 Fault 2와 Fault 3의 구분 성능이 크게 향상되지는 않았다. 이는 두 결함 유형을 구분하기 위한 핵심 센서 정보가 부족하고, 현재 변수만으로는 두 클래스의 경계가 명확하지 않다는 점을 보여준다.


4. 4개 모델 Soft Voting Ensemble

4개 모델 Soft Voting Ensemble

다음으로 XGBoost를 추가하여 Random Forest, XGBoost, LightGBM, CatBoost 총 4개 모델을 결합한 Soft Voting Ensemble을 구성하였다.

4개 모델 앙상블의 Baseline 결과는 Fault 2 F1-score 0.54, Fault 3 F1-score 0.51, F1-Macro 0.76으로 나타났다. 이는 실험한 모델 조합 중 Fault 2와 Fault 3의 성능이 가장 균형 있게 나타난 결과였다.

하이퍼파라미터 튜닝 이후에도 F1-Macro는 0.76으로 유지되었지만, Fault 2와 Fault 3의 개별 성능은 큰 폭으로 개선되지 않았다. 따라서 최종적으로는 4개 모델 Baseline Soft Voting Ensemble을 가장 안정적인 모델로 선정하였다.


5. ROC-AUC를 통한 추가 성능 확인

ROC-AUC 분석

모델의 분류 성능을 Accuracy나 F1-score만으로 판단하지 않고, ROC-AUC 분석도 함께 수행하였다.

Class 0인 정상 상태와 Class 1인 Rich 상태는 AUC가 1.00으로 나타나 매우 명확하게 구분되었다. 즉, 해당 클래스들은 센서 데이터상 특징이 뚜렷하여 모델이 안정적으로 분류할 수 있었다.

반면 Class 2인 Lean 상태와 Class 3인 Low Voltage 상태는 AUC가 약 0.84 수준으로 나타났다. 수치상으로는 우수한 성능이지만, 실제 F1-score와 Recall을 함께 보면 두 클래스 간 혼동이 여전히 존재한다는 것을 확인할 수 있었다.


6. 최종 해석

이번 실험에서 Soft Voting Ensemble은 단일 모델보다 안정적인 성능을 보였고, 특히 여러 Tree 기반 모델의 예측 결과를 결합함으로써 전체적인 F1-Macro를 0.76 수준까지 확보할 수 있었다.

하지만 Fault 2와 Fault 3의 구분 성능은 하이퍼파라미터 튜닝과 앙상블 적용 이후에도 크게 개선되지 않았다. 이는 모델의 문제가 아니라 데이터 구조의 한계에 가깝다. 두 결함은 CO_log, RPM, O2, Consumption L/H 등 주요 변수에서 유사한 패턴을 보였고, 통계 검정과 시각화에서도 두 클래스의 분포가 많이 겹치는 것으로 확인되었다.

따라서 현재 센서 데이터만으로는 Fault 2와 Fault 3을 완벽하게 구분하기 어렵다. 향후에는 배터리 전압, 인젝터 분사 시간, 연료압, 점화 계통 관련 센서 등 물리적으로 두 결함을 구분할 수 있는 추가 변수가 필요하다.


결론

이번 프로젝트에서 최종 모델로는 Random Forest, XGBoost, LightGBM, CatBoost를 결합한 4개 모델 Soft Voting Ensemble을 선정하였다.

이 모델은 전체적인 F1-Macro 기준 가장 안정적인 성능을 보였으며, 정상 상태와 Rich 결함은 매우 정확하게 구분하였다. 다만 Lean과 Low Voltage 결함은 데이터 분포가 유사하여 완전한 분리는 어려웠다.

결국 이번 분석의 핵심 결론은 다음과 같다.

Voting Ensemble은 모델 성능을 안정화하는 데 효과적이었지만, 센서 데이터 자체에 결함을 구분할 정보가 부족한 경우에는 모델 튜닝만으로 한계를 극복하기 어렵다.

이 점에서 머신러닝 모델의 성능 개선은 단순히 알고리즘을 바꾸는 것뿐만 아니라, 문제를 설명할 수 있는 핵심 센서 데이터를 추가로 확보하는 과정이 함께 필요하다는 것을 확인할 수 있었다.


💡 느낀점

이번 프로젝트를 통해 단순히 모델의 성능을 높이는 것보다, 데이터의 구조와 한계를 먼저 이해하는 것이 중요하다는 점을 느꼈다. 여러 머신러닝 모델과 Voting Ensemble을 적용했지만, Fault 2와 Fault 3처럼 센서 분포가 유사한 결함은 모델

튜닝만으로는 구분에 한계가 있었다. 그래도 Random Forest, XGBoost, LightGBM, CatBoost 등 다양한 모델을 비교하고 앙상블까지 적용해보면서 머신러닝 모델링 과정을 더 깊게 이해할 수 있었다. 또한 F1-score, ROC-AUC, Recall 같은 평가 지표를 함께 보며 모델 성능을 다각도로 해석하는 경험을 할 수 있어 의미 있었다.

결과적으로 이번 프로젝트는 모델 성능뿐만 아니라 좋은 데이터와 핵심 변수가 얼마나 중요한지를 배울 수 있었던 경험이었다.

'심화 프로젝트' 카테고리의 다른 글

Chapter.5 심화 프로젝트(5)  (0) 2026.05.07
Chapter.5 심화 프로젝트(4)  (0) 2026.05.04
Chapter.5 심화 프로젝트(3)  (0) 2026.05.01
Chapter.5 심화 프로젝트(2)  (0) 2026.04.30
Chapter.5 심화 프로젝트(1)  (0) 2026.04.29