심화 프로젝트

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

devjjun 2026. 5. 1. 20:20

TIL(Today I Learned)


1️⃣심화 프로젝트 

데이터 정제 및 스케일링 계획

  • HC: 하위 이상치 삭제
  • CO: 로그를 씌워 안정화

변수 삭제

  • 도메인 지식
    • Consumption L/100km vs Consumption L/H : 엔진 부하를 보기 위해 → Consumption L/H 채택 / Consumption L/100km 삭제
    • Force : TPS 스로틀이 열리는 정도에 따라 토크가 증가 →TPS와 상관계수가 높고 TPS로 설명가능, RPM x Force =Power로 RPM과 Power로 Force 설명 가능 → Force 삭제
    • MAP : TPS → 운전자가 액셀 밟아 스로틀이 열리는 정도(원인), MAP → 스로틀이 열려서 들어온 공기압 (결과) → MAP는 TPS의 결과로 상관관계가 높게 비례 → MAP 삭제
  • 상관계수 확인
    • Speed & RPM : 상관계수가 1.00이다. 즉, 엔진 회전수와 속도가 완벽하게 일치하는 패턴을 보이므로 둘 중 하나는 삭제해도 무방하다. → Speed 삭제
    • AFR (Air-Fuel Ratio) & Lambda: 상관계수가 1.00이다. 이론적으로도 람다는 AFR을 최적 비율로 나눈 값이기 때문에 중복 데이터입니다. → AFR 삭제
  • 사용 X
    • cluster 삭제
  • VIF 확인

  • VIF 값 : 다중공선성이 심각하다고 판단하며, 조치가 필요하다.
  • CO 와CO2 을 통해 CO_CO2_ratio 를 만들었기에, 다중공산성 및 논리적 중복을 피하기 위해 → CO ,CO2 삭제
  • Lambda 을 통해 lambda_dev 를 만들었기에, 다중공산성 및 논리적 중복을 피하기 위해 → Lambda 삭제

파생변수 생성

  • Fault 1 구분용
    • 연소 효율 지표 (CO/CO2 Ratio)
      • 엔진 품질 관리의 핵심 변수
      • df['CO'] / df['CO2']
        • CO2는 **완전 연소(연소 효율성)**의 산물이고 CO는 **불완전 연소(환경 오염)**의 산물이다. 이 비율이 급격히 상승한다면 점화 플러그 이상, 인젝터 막힘 등 ‘연소실 내부 결함’을 의미한다.
      • 낮은 비율(Good)
        • 투입된 연료가 산소와 충분히 결합하여 CO2로 변환된다. 엔진의 연소 효율이 좋고, 연료 낭비와 유해 가스 배출이 적은 상태
      • 높은 비율(Bad)
        • 연료가 타다 말아서 CO 상태로 배출되는 비중이 높다. 이는 곧 ‘에너지 손실’과 ‘엔진 결함’을 의미한다.
        • 하드웨어 문제
          • 농후 혼합기 (Rich Mixture)
            • 엔진에 들어가는 연료량이 공기량에 비해 너무 많음
            • 인젝터 누설, 산소 센서 고장 등
      •  엔진의 제어 정밀도와 연소 상태의 이탈 정도를 정량화한 지표 lambda_dev
        • df['lambda_dev'] = abs(df['Lambda'] - 1.0)
          • 정상 상태 (Fault 0): lambda_dev 값이 0에 매우 가깝고 변동폭이 작습니다. (시스템이 목표값을 잘 추종함.
          • 농후 결함 (Fault 1): 연료 과다 공급으로 인해 lambda가 1보다 작아지므로, lambda_dev 수치가 눈에 띄게 커집니다.
          • 희박 결함 (Fault 2, 3): 공기 과다 또는 연료 부족으로 lambda가 1보다 커지며, 역시 이탈량이 발생합니다.
    •   Fault 2, 3 구분용
      • O2_RPM_Effect
        • df[O2_RPM_Effect] = df['O2']**2 / (df['RPM'] / 1000)
          • O2: 산소 농도의 변화를 제곱함으로써, 미세한 산소량 증가보다 급격한 산소 농도 상승(연소 불량 등) 시 수치 증가
          • RPM/1000 (분모): 회전수가 낮을수록 전체 수치 증가. 즉, 고회전에서 발생하는 일반적인 산소 변화보다는 저회전/아이들링 상태에서의 산소 잔류 현상을 타겟

통계 검정

검정 단계

  • 1단계 — Shapiro-Wilk W 통계량 막대 + Q-Q plot
  • 2단계 — Kruskal-Wallis H 통계량 → 변수 3개 이상
  • 3단계 — Dunn's test 히트맵
  • 4단계 — Cohen's d 막대 + O2_RPM_Effect KDE

1단계: Shapiro-Wilk W 통계량 막대 + Q-Q plot

  • 분석 내용: 데이터가 이상적인 종 모양(정규분포)을 따르는지 Shapiro-Wilk 검정을 수행
  • 결과값
변수 W (Shapiro-Wilk) p-value 왜도 (skew)
TPS 0.6057 4.27e-75 2.35
Power 0.6366 2.11e-73 2.12
RPM 0.9171 4.21e-46 0.85
Consumption L/H 0.7895 1.46e-62 2.16
HC 0.3471 5.03e-86 6.16
CO_CO2_ratio 0.6021 2.73e-75 3.02
CO_log 0.8577 2.50e-55 1.23
O2_RPM_Effect 0.7404 1.30e-66 1.99
lambda_dev 0.7744 6.94e-64 2.05
O2 0.9370 9.41e-42 0.53

 

  • QQ-Plot 시각화

  • 결과: 모든 변수에서 귀무가설이 기각 (데이터가 비대칭이거나 이상치가 많음).
  • 결정: 평균 대신 순위를 사용하는 비모수 검정 방식을 최종 채택

2단계: Kruskal-Wallis H 통계량

  • 분석 내용: 고장 유형(Fault 0~3)에 따라 센서 데이터에 차이가 있는지 확인
  • 시각화

  • HC (탄화수소), CO_log, CO_CO2_ratio, lambda_dev, RPM
    • H-statistic이 매우 높고(약 4,000 이상), 값이 거의 0()에 수렴한다.
    • 해석: 이 센서들은 엔진 결함 발생 시 수치 변화가 가장 뚜렷하다. 특히 HC와 CO 관련 지표들의 H값이 압도적으로 높은데, 이는 엔진 연소 상태와 배출가스 데이터가 결함 예측의 핵심 변수임을 알 수 있다.
  • O2_RPM_Effect, TPS, Power
    • H-statistic이 500~1,000 사이에 위치하며, 값은 매우 낮지만 최상위 지표들보다는 영향력이 적다.
    • 해석: 결함 구분에 유의미한 도움을 주지만, 배출가스 데이터만큼 강력한 구분 기준은 아니다.
  • Consumption L/H, O2
    • H-statistic이 가장 낮고 보라색에 가깝다.
    • 해석: 물론 로 통계적 유의성은 확보했으나, 다른 센서들에 비해 결함 유형별 데이터의 중첩이 많아 변별력이 상대적으로 떨어진다.
    • p<0.05
  • 결과: 선정된 10개 변수 전부 통계적으로 유의미한 차이를 보였습니다.
  • 결정: 모든 변수가 결함 진단에 잠재적 가치가 있다고 판단, 사후검정으로 진행

3단계: Dunn's test 히트맵

  • 분석 내용: 던 검정(Dunn's test)을 통해 특히 F2와 F3 고장을 명확히 구분하는 변수 대조
  • 시각화

  • 결과: 여러 번 비교 시 발생하는 오류를 막기 위해 Bonferroni 보정을 적용
  • 발견:
    • 변별력이 높은 센서 (짙은 파란색이 많은 행)
      • HC (탄화수소)
        • 모든 결함 쌍( 포함)에 대해 유의미한 차이를 보인다. 이는 엔진 결함 유형을 구분하는 데 가장 핵심적인 지표
      • O2_RPM_Effect, RPM, CO_log
        • 대부분의 결함 조합을 효과적으로 구분
    • 특정 결함 쌍에 취약한 센서 (흰색/ns가 많은 열)
      • 0 vs 1
        • 0번과 1번 결함을 구분할 때는 배출가스 농도보다는 물리적인 출력이나 스로틀(TPS) 데이터가 더 유용
      • 2 vs 3
        • HC, O2_RPM_Effect, RPM 등은 여전히 유의미한 차이(*)를 유지하며 두 결함을 구분하는 기준

4단계: 최종 변수 확정 (핵심 변수 도출)

  • 최종 결론: VIF로 다중공선성을 줄였던 10개 변수 중, 실질적으로 고장 유형을 판별하는 '결정적 증거'는 O2 계열 변수 2개 입증
  • 활용 계획: 향후 모델 고도화 시 이 핵심 변수들에 집중하여 진단 알고리즘의 효율성과 정확도를 높일 수 있습니다.

💡 느낀점

목표로 했던 데이터 전처리 과정 완료와 불필요 컬럼을 제거하는 정제를 하며 데이터의 활용 방향이 잡혀가는 것 같았다. 파생변수를 생성하고 다중공선성을 줄여가는 과정을 통해 변수 간의 관계를 확인하고 가설에 따라 구성한 파생변수에 큰 기대가 생겼다. 통계검정을 통해 검정을 진행한 결과 변수간의 연관성을 확인할  수 있었고, 도메인 지식과 그래프를 분석하여 예측한 파생변수가 실제 영향력이 있었음을 확인하여 뿌듯하였다. 이후 머신러닝 학습을 진행하고 정확도나 지표들을 측정해 효율적인 모델을 생성할 예정이다.

 

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

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