[2] 머신러닝 모델 구축과 성능 평가
EDA와 데이터 전처리를 기반으로, 공정 데이터를 학습해 품질 상태(정상/불량)를 예측하고, 모델 성능을 평가했습니다.
프로젝트의 핵심인 머신러닝 알고리즘과 각 모델의 결과를 구체적으로 살펴보겠습니다.
1. 머신러닝 모델 선택 기준
이번 프로젝트의 주요 목표는 제조 공정 데이터에서 품질 상태를 정확히 예측하는 것이었습니다.
이를 위해 다양한 머신러닝 알고리즘을 비교하고, 최적의 모델을 선정했습니다.
사용한 알고리즘
- 선형 회귀(Linear Regression):
- 단순하고 해석이 쉬운 모델로, 변수 간 선형 관계를 학습.
- 의사결정 나무(Decision Tree):
- 비선형 관계를 학습하며, 변수 간의 계층적 분류에 강점.
- 랜덤 포레스트(Random Forest):
- 여러 개의 의사결정 나무를 조합하여 예측 성능을 높이는 앙상블 학습 모델.
- Gradient Boosting:
- 이전 모델의 오류를 보완하면서 학습을 반복하는 방식으로, 예측 정확도가 뛰어남.
2. 모델 구축 과정
2.1 데이터 준비
EDA와 전처리 과정을 통해 정리된 데이터를 머신러닝 모델에 적합한 형태로 변환했습니다.
슬라이딩 윈도우(Sliding Window) 기법
시계열 데이터를 학습하기 위해, 데이터를 일정한 구간으로 나누는 슬라이딩 윈도우 기법을 사용했습니다:
import numpy as np
def create_sliding_windows(data, window_size):
windows = []
for i in range(len(data) - window_size + 1):
windows.append(data[i:i+window_size])
return np.array(windows)
훈련 데이터와 테스트 데이터 분리
- 훈련 데이터(Train): 70%
- 테스트 데이터(Test): 30%
from sklearn.model_selection import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3, random_state=42)
2.2 모델 구현
각 모델을 구현하고, 하이퍼파라미터 튜닝을 통해 최적의 성능을 달성했습니다.
랜덤 포레스트 구현 예제
from sklearn.ensemble import RandomForestClassifier
from sklearn.metrics import accuracy_score
# 랜덤 포레스트 모델 생성
rf_model = RandomForestClassifier(n_estimators=100, max_depth=10, random_state=42)
rf_model.fit(X_train, y_train)
# 예측 및 평가
y_pred = rf_model.predict(X_test)
accuracy = accuracy_score(y_test, y_pred)
print(f"Random Forest Accuracy: {accuracy:.2f}")
Gradient Boosting 구현
from sklearn.ensemble import GradientBoostingClassifier
gb_model = GradientBoostingClassifier(n_estimators=200, learning_rate=0.1, max_depth=5, random_state=42)
gb_model.fit(X_train, y_train)
y_pred_gb = gb_model.predict(X_test)
print(f"Gradient Boosting Accuracy: {accuracy_score(y_test, y_pred_gb):.2f}")
3. 모델 평가 결과
3.1 평가 지표
모델 성능을 평가하기 위해 다음의 주요 지표를 사용했습니다:
- 정확도(Accuracy): 전체 데이터 중 정확히 예측한 비율.
- 정밀도(Precision): 모델이 불량으로 예측한 것 중 실제 불량 데이터 비율.
- 재현율(Recall): 실제 불량 데이터를 얼마나 잘 예측했는지.
- F1 스코어(F1 Score): 정밀도와 재현율의 조화 평균.
3.2 성능 비교
모델 | 정확도(Accuracy) | 정밀도(Precision) | 재현율(Recall) | F1 스코어 |
선형 회귀 | 85% | 82% | 80% | 81% |
의사결정 나무 | 88% | 86% | 84% | 85% |
랜덤 포레스트 | 91% | 89% | 90% | 89% |
Gradient Boosting | 93% | 92% | 91% | 91.5% |
결과 해석
- 랜덤 포레스트와 Gradient Boosting 모델이 가장 높은 성능을 보였으며, 특히 Gradient Boosting은 전체적인 예측 정확도와 재현율에서 우수했습니다.
- 선형 회귀 모델은 단순하고 빠르지만, 데이터의 비선형 관계를 충분히 반영하지 못했습니다.
4. 얻은 인사이트와 적용 방안
4.1 주요 발견
- 온도와 불량률:
- 불량률은 온도가 특정 임계값(70~80°C)을 벗어날 때 급격히 증가하는 패턴을 보였습니다.
- 압력의 중요성:
- 압력(pressure)은 온도와 결합하여 공정 상태를 결정짓는 주요 변수로 확인.
4.2 적용 방안
- 조기 경고 시스템:
- Gradient Boosting 모델을 기반으로, 공정 상태가 비정상으로 진입할 가능성이 있을 때 경고를 발송하는 시스템 설계.
- 공정 최적화 제안:
- 최적의 공정 조건(온도 75
78°C, 압력 9501000kPa)을 데이터 기반으로 도출.
- 최적의 공정 조건(온도 75
5. 다음 단계와 결론
5.1 앞으로의 계획
- 더 많은 데이터를 수집하여 모델의 일반화 성능을 향상.
- 실시간 데이터 스트리밍 환경에서 모델을 적용하여, 즉각적인 품질 예측과 공정 개선 가능성을 탐구.
5.2 결론
이번 프로젝트는 제조 공정 데이터를 기반으로 품질 상태를 예측하고, 공정을 최적화할 수 있는 가능성을 확인한 의미 있는 작업이었습니다.
Gradient Boosting 모델은 가장 높은 성능을 기록했으며, 이를 통해 데이터 기반 의사결정을 강화하고 제조 공정을 자동화하는 데 큰 기여를 할 수 있었습니다.
다음 글에서는 최종 결과를 바탕으로 한 공정 개선 제안과 실질적인 적용 방안을 다루겠습니다. 😊
https://github.com/siilver94/SmartFactory-Semiconductor-Manufacturing-Process-Analysis
GitHub - siilver94/SmartFactory-Semiconductor-Manufacturing-Process-Analysis
Contribute to siilver94/SmartFactory-Semiconductor-Manufacturing-Process-Analysis development by creating an account on GitHub.
github.com
https://class101.net/ko/products/613020e3ba15c50014446c62?
스마트팩토리, 파이썬으로 배우는 제조/공정 데이터 분석의 모든 것 | 데이터 스테이션
스마트팩토리, 제조업에서는 데이터를 어떻게 활용할까? 미국 최대 IT 컨설팅펌인 가트너는 코로나19 경제위기에 따라 제조업의 디지털화는 가속화되고 있으며, 4차 산업혁명의 새로운 기술 속
class101.net