1고장 모드 분류의 필요성

예측 정비에서 "언제 고장날지"만큼 중요한 것이 "어떤 종류의 고장인지"입니다. 고장 모드(Failure Mode)에 따라 필요한 부품, 기술자 스킬, 정비 시간이 달라지기 때문입니다. 베어링 마모와 윤활 부족은 모두 진동 증가를 유발하지만, 조치 방법은 완전히 다릅니다. 고장 모드 분류 AI는 센서 데이터로부터 구체적인 고장 원인을 식별하여, 정확한 부품 준비와 효율적인 정비를 지원합니다. FMEA(Failure Mode and Effects Analysis)는 고장 모드를 체계적으로 정의하는 산업 표준 방법론입니다.

FMEA 기반 분류 계층 구조
🔍
설비 이상 감지
Level 1 (대분류)
베어링 결함
불균형 (UNB)
축정렬 불량
윤활 문제
Level 2 (세분류) - 베어링 결함
BPFO
(외륜)
BPFI
(내륜)
BSF
(볼)
FTF
(케이지)
분류 방식 비교
Multi-Class
1개 클래스만 선택 가능
Multi-Label
여러 고장 동시 탐지 가능
Hierarchical
대분류 → 세부분류 단계적 분류
고장 모드증상센서 시그니처조치
베어링 외륜 결함고주파 진동BPFO 주파수 스파이크베어링 교체
불균형1X 회전 주파수 진동1X 진폭 증가동적 밸런싱
축 정렬 불량2X 진동, 커플링 발열축방향 진동 증가레이저 정렬
윤활 부족초음파 증가, 발열고주파 에너지 상승재윤활

2FMEA 기반 분류 체계 설계

효과적인 고장 모드 분류를 위해서는 FMEA 분석 결과를 AI 분류 체계로 변환해야 합니다. FMEA에서 정의된 고장 모드들이 AI 모델의 클래스가 되고, 고장 영향(Effects)은 심각도 가중치에 반영됩니다. 클래스 계층을 설계할 때는 상위 레벨(베어링 결함)과 하위 레벨(외륜/내륜/볼/케이지)의 계층 구조를 고려합니다. 데이터 수집 가능성과 실무 조치의 차별화 정도를 고려하여 적절한 분류 세분화 수준을 결정합니다.

FMEA 기반 분류 체계 (수도코드)
# ============================================ # FMEA 기반 고장 모드 분류 체계 # ============================================ # 고장 모드 데이터 구조 정의 고장모드 = { id, 이름, 설명, 영향, 심각도(1-10), 발생빈도(1-10), 검출도(1-10), 상위_분류_id, 권장_조치 } # RPN(위험 우선순위) = 심각도 × 발생빈도 × 검출도 # -------------------------------------------- # 1단계: 대분류 고장 모드 정의 # -------------------------------------------- 대분류_목록 = [ BRG: 베어링 결함 (심각도=7, 발생=5, 검출=4), UNB: 불균형 (심각도=5, 발생=6, 검출=3), MIS: 축정렬 불량 (심각도=6, 발생=5, 검출=4), LUB: 윤활 문제 (심각도=6, 발생=4, 검출=5) ] # -------------------------------------------- # 2단계: 베어링 세부 분류 정의 # -------------------------------------------- 베어링_세부분류 = [ BRG_BPFO: 외륜 결함 → BPFO 주파수 스파이크, BRG_BPFI: 내륜 결함 → BPFI 주파수 스파이크, BRG_BSF: 볼/롤러 결함 → BSF 주파수 스파이크, BRG_FTF: 케이지 결함 → FTF 주파수 스파이크 ] # -------------------------------------------- # 분류 체계 활용 함수 # -------------------------------------------- 함수 분류레이블_조회(레벨): 만약 레벨 == 1: 대분류만 반환 아니면: 전체 분류 반환 함수 클래스가중치_계산(): 각 고장모드에 대해: 가중치 = RPN / 100 # 정규화 반환 가중치_딕셔너리

3다중 클래스 분류 모델

고장 모드 분류는 전형적인 다중 클래스(Multi-class) 분류 문제입니다. 센서 특징을 입력으로 받아 가장 가능성 높은 고장 모드를 예측합니다. Random Forest, XGBoost 같은 앙상블 모델이 해석 가능성과 성능의 균형을 잘 갖추고 있어 널리 사용됩니다. 딥러닝 모델(1D-CNN, LSTM)은 원시 시계열에서 자동으로 특징을 추출하여 복잡한 패턴을 학습합니다. 클래스 불균형 문제(정상 데이터가 대부분)는 SMOTE, 클래스 가중치, 포칼 로스로 해결합니다.

고장 모드 분류기 (수도코드)
# ============================================ # 고장 모드 분류기 구현 # ============================================ # 분류기 초기화 함수 분류기_생성(모델_타입): 만약 모델_타입 == "random_forest": 트리 200개, 깊이 15, 클래스 균형 가중치 적용 만약 모델_타입 == "gradient_boosting": 트리 150개, 깊이 8, 학습률 0.1 # -------------------------------------------- # 핵심 기능: 학습, 예측, 진단 # -------------------------------------------- 함수 학습(특징_X, 레이블_y): 레이블을 숫자로 인코딩 모델.학습(X, 인코딩된_y) 특징_중요도 저장 함수 예측(특징_X): 인코딩된_예측 = 모델.예측(X) 반환 원래_레이블로_디코딩(인코딩된_예측) 함수 확률_예측(특징_X): 각 고장 모드별 확률 계산 반환 {고장모드: 확률} 형태의 딕셔너리 # -------------------------------------------- # 종합 진단 함수 # -------------------------------------------- 함수 종합_진단(특징_X): 확률들 = 확률_예측(X) 예측들 = 예측(X) 각 샘플에 대해: 진단_결과 = { 예측_고장모드, 신뢰도, 권장_조치, 심각도, RPN, 상위_2개_가능성 } 반환 진단_결과_리스트 # -------------------------------------------- # 1D CNN 분류기 구조 (딥러닝) # -------------------------------------------- CNN_분류기: 입력: (배치, 채널, 시퀀스길이) 합성곱_레이어: Conv1D(32) → BatchNorm → ReLU → MaxPool Conv1D(64) → BatchNorm → ReLU → MaxPool Conv1D(128) → BatchNorm → ReLU → AdaptivePool 분류_레이어: Linear(128→64) → ReLU → Dropout(0.3) Linear(64→클래스수) 출력: 각 고장 모드 확률

4다중 레이블 분류

실제 현장에서는 여러 고장 모드가 동시에 발생하는 경우가 흔합니다. 예를 들어, 불균형이 발생하면 베어링에 추가 하중이 가해져 베어링 결함도 함께 진행됩니다. 다중 레이블(Multi-label) 분류는 하나의 샘플에 여러 레이블을 할당할 수 있어 이런 복합 고장을 모델링합니다. Binary Relevance, Classifier Chains, 또는 딥러닝에서 시그모이드 출력 + BCE 손실 조합으로 구현합니다.

다중 레이블 고장 분류 (수도코드)
# ============================================ # 다중 레이블 고장 모드 분류기 # (여러 고장이 동시에 발생하는 경우 처리) # ============================================ # 다중 레이블 분류기 초기화 분류기 초기화: 레이블_이진화기 생성 기본_분류기 = RandomForest(트리100개, 균형가중치) 다중출력_분류기로 래핑 # -------------------------------------------- # 학습 및 예측 함수 # -------------------------------------------- 함수 학습(특징_X, 다중레이블_y): # y 예시: [['베어링결함', '윤활부족'], ['불균형']] 이진_레이블 = 레이블_이진화(다중레이블_y) 모델.학습(X, 이진_레이블) 함수 예측(특징_X, 임계값=0.5): 각 레이블별 확률 계산 확률 >= 임계값인 레이블들 선택 반환 예측된_레이블_리스트 함수 확률_예측(특징_X): 반환 {레이블: 확률배열} 딕셔너리 # -------------------------------------------- # 다중 레이블 CNN 구조 (딥러닝) # -------------------------------------------- 다중레이블_CNN: 인코더: Linear(입력→128) → ReLU → BatchNorm → Dropout Linear(128→64) → ReLU → BatchNorm 레이블별_출력_헤드: 각 레이블마다 독립적인 Linear(64→1) Sigmoid 활성화로 0~1 확률 출력 출력: [레이블1_확률, 레이블2_확률, ...] # -------------------------------------------- # 학습 루프 # -------------------------------------------- 함수 다중레이블_학습(모델, 데이터로더, 에폭수=50): 손실함수 = BCELoss # 이진 교차 엔트로피 최적화기 = Adam(학습률=0.001) 각 에폭마다: 각 배치(x, y)에 대해: 예측 = 모델(x) 손실 = BCELoss(예측, y) 역전파 및 가중치 업데이트

5계층적 분류

고장 모드의 계층 구조를 활용한 계층적 분류(Hierarchical Classification)는 분류 정확도와 해석 가능성을 높입니다. 먼저 대분류(베어링/불균형/정렬불량)를 분류한 후, 해당 대분류 내에서 세부 분류(외륜/내륜/볼)를 수행합니다. 이 방식은 데이터가 부족한 세부 클래스에도 상위 클래스의 특성을 활용할 수 있고, "적어도 베어링 문제"라는 유용한 정보를 제공합니다.

계층적 분류기 (수도코드)
# ============================================ # 계층적 고장 모드 분류기 # (대분류 → 세부분류 단계적 분류) # ============================================ # 분류기 구조 Level1_분류기: 대분류용 RandomForest Level2_분류기들: 각 대분류별 세부 분류기 딕셔너리 # -------------------------------------------- # 계층적 학습 함수 # -------------------------------------------- 함수 학습(특징_X, 세부레이블_y): # Step 1: 대분류 레이블 추출 및 학습 대분류_y = [상위분류_조회(레이블) for 레이블 in 세부레이블_y] Level1_분류기.학습(X, 대분류_y) # Step 2: 각 대분류별 세부 분류기 학습 각 대분류에 대해: 해당_대분류_샘플 필터링 만약 샘플수 > 10 AND 세부클래스 >= 2개: 세부_분류기 생성 및 학습 Level2_분류기들[대분류] = 세부_분류기 # -------------------------------------------- # 예측 함수 # -------------------------------------------- 함수 예측(특징_X, 레벨='detailed'): 대분류_예측 = Level1_분류기.예측(X) 만약 레벨 == 'coarse': 반환 대분류_예측 # 세부 분류 예측 세부_예측 = [] 각 샘플에 대해: 만약 해당_대분류의 Level2_분류기 존재: 세부_예측.추가(Level2_분류기.예측()) 아니면: 세부_예측.추가(대분류_예측) 반환 세부_예측 # -------------------------------------------- # 신뢰도 기반 폴백 예측 # -------------------------------------------- 함수 신뢰도_기반_예측(특징_X, 신뢰도_임계값=0.7): 각 샘플에 대해: Level1_확률 계산 Level1_신뢰도 = 최대_확률 만약 Level1_신뢰도 < 임계값: 결과 = "Unknown", 레벨=0 아니면 만약 Level2_분류기 없음: 결과 = 대분류_예측, 레벨=1 아니면: Level2_확률 계산 만약 Level2_신뢰도 >= 임계값: 결과 = 세부분류_예측, 레벨=2 아니면: 결과 = 대분류_예측, 레벨=1 (폴백) 반환 결과_리스트

핵심 포인트: 고장 모드 분류는 단순 이상 탐지를 넘어 "무엇이 문제인지"를 알려줍니다. FMEA 체계와 연계하면 표준화된 분류와 조치 권고가 가능하고, 다중 레이블/계층적 분류로 복합 고장을 정확히 진단합니다.

6분류 모델 평가와 해석

고장 모드 분류 모델의 평가는 일반적인 정확도 외에 산업적 맥락을 고려해야 합니다. 심각한 고장(높은 RPN)을 놓치는 것이 경미한 고장 오탐보다 비용이 큽니다. 따라서 RPN 가중 F1 스코어, 비용 민감 정확도를 사용합니다. 혼동 행렬(Confusion Matrix)로 어떤 고장 모드 간 혼동이 발생하는지 분석하고, 특징 중요도로 어떤 센서/주파수가 각 고장 모드 구분에 기여하는지 파악합니다. SHAP 값으로 개별 예측의 근거를 설명하면 현장 엔지니어의 신뢰를 얻을 수 있습니다.