Allen's 데이터 맛집
[1] 데이터 전처리와 모델 설계 본문
이 글에서는 회전기계 고장유형 AI 데이터 분석 프로젝트의 핵심인 데이터 전처리 과정과 AI 모델 설계에 대해 다뤄 보겠습니다.
데이터 전처리
1. 데이터셋 구성
Rotor Testbed에서 수집된 데이터는 각 센서에서 진동 값을 기록한 시계열 데이터로 구성됩니다.
데이터는 다양한 고장 유형(질량 불균형, 지지 불량 등)을 포함하고 있으며, 각각의 데이터는 다음과 같은 속성을 가지고 있었습니다:
- Sampling Rate: 초당 10,000 샘플.
- 측정 채널: 총 4개의 센서 채널.
- 타겟 변수: 고장 유형(정상, 불균형, 지지 불량 등).
2. 전처리 과정
데이터 전처리는 모델 학습의 성공 여부를 좌우할 정도로 중요합니다.
이번 프로젝트에서는 데이터를 분석에 적합하게 정제하기 위해 아래 단계를 거쳤습니다.
2.1 결측값 처리
진동 데이터를 수집하다 보면 샘플 간의 간격이 일정하지 않거나, 특정 구간의 데이터가 누락되는 경우가 발생합니다.
이를 해결하기 위해 선형 보간법(Linear Interpolation)을 적용했습니다:
import pandas as pd
# 결측값 보간 처리
data['Sensor1'] = data['Sensor1'].interpolate(method='linear')
2.2 노이즈 제거
실제 현장에서 수집한 데이터는 기계적 떨림이나 환경적 요인으로 인해 노이즈가 포함되기 쉽습니다.
이 노이즈는 모델 성능을 저하시킬 수 있기 때문에, 이동평균 필터(Moving Average Filter)를 활용하여 제거했습니다:
import numpy as np
# 이동평균 필터 적용
data['Filtered_Sensor1'] = data['Sensor1'].rolling(window=5).mean()
2.3 데이터 정규화
센서의 측정값 범위가 서로 다르기 때문에, 학습에 적합하도록 데이터를 0~1 범위로 정규화했습니다.
이 과정은 Min-Max Scaling 기법을 사용했습니다:
from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scaled_data = scaler.fit_transform(data[['Sensor1', 'Sensor2', 'Sensor3', 'Sensor4']])
모델 설계: 데이터를 이해하는 AI의 설계
1. 모델 선택 기준
회전기계 데이터는 시계열(Time Series) 데이터로, 데이터의 순서와 패턴이 중요합니다.
이에 따라 시계열 데이터를 효과적으로 처리할 수 있는 알고리즘을 선정했습니다.
2. 사용된 모델
2.1 심층 신경망(DNN)
DNN은 여러 은닉층을 통해 데이터의 복잡한 패턴을 학습합니다.
시계열 데이터의 전체적인 특징을 빠르게 학습하는 데 유용했습니다.
2.2 합성곱 신경망(CNN)
CNN은 이미지 데이터뿐 아니라 시계열 데이터의 특징 추출에도 효과적입니다.
특히, 센서 데이터의 국소적 패턴을 학습하는 데 유용했습니다:
- 1D CNN: 시계열 데이터의 시간 축을 따라 패턴을 추출.
2.3 순환 신경망(RNN)
RNN은 데이터를 순차적으로 처리하며, 이전 상태를 기억할 수 있는 구조로, 시계열 데이터에 적합합니다.
특히, LSTM(Long Short-Term Memory)은 장기 의존성을 학습할 수 있어, 센서 데이터의 연속적인 패턴을 분석하는 데 유용했습니다.
3. 모델 구현
3.1 데이터 준비
모델에 적합한 입력 데이터 형태로 변환하기 위해 슬라이딩 윈도우를 적용했습니다:
# 슬라이딩 윈도우로 데이터 분할
def create_sequences(data, window_size):
sequences = []
for i in range(len(data) - window_size):
seq = data[i:i+window_size]
sequences.append(seq)
return np.array(sequences)
3.2 CNN 모델 코드
CNN 모델의 간단한 구현 예는 다음과 같습니다:
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Conv1D, MaxPooling1D, Flatten, Dense
model = Sequential([
Conv1D(64, kernel_size=3, activation='relu', input_shape=(100, 4)),
MaxPooling1D(pool_size=2),
Flatten(),
Dense(64, activation='relu'),
Dense(4, activation='softmax') # 4가지 고장 유형 분류
])
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
모델 평가: 성능 검증
모델의 성능은 정확도, 정밀도, 재현율을 기준으로 평가했습니다.
1. 성능 결과
- CNN 모델이 가장 높은 성능을 기록하며, 고장 유형을 93% 정확도로 분류했습니다.
- RNN(LSTM)은 시계열 패턴을 잘 학습해 재현율에서 우수한 결과를 보였습니다.
모델 | 정확도(Accuracy) | 정밀도(Precision) | 재현율(Recall) |
DNN | 88% | 86% | 85% |
CNN | 93% | 91% | 90% |
RNN (LSTM) | 91% | 90% | 92% |
https://github.com/siilver94/AI-Analysis-of-Rotating-Machinery-Failure-Types
GitHub - siilver94/AI-Analysis-of-Rotating-Machinery-Failure-Types
Contribute to siilver94/AI-Analysis-of-Rotating-Machinery-Failure-Types development by creating an account on GitHub.
github.com
인공지능 제조 플랫폼
제조AI데이터셋 소개 회전 설비의 고장을 진단하기 위한 제조AI분석과정을 담은 데이터셋과 가이드북입니다. 데이터 불균형 해소를 위하여 testbed를 통해 데이터를 수집하였으며, DNN, CNN, RNN 알고
www.kamp-ai.kr