Merware 2024. 8. 24. 14:33

Link

Source

https://github.com/ChoungWonKang/project/tree/main/%EC%A0%9C%2012%ED%9A%8C%20%EA%B3%B5%EA%B3%B5%EB%8D%B0%EC%9D%B4%ED%84%B0%20%ED%99%9C%EC%9A%A9%20%EC%95%84%EC%9D%B4%EB%94%94%EC%96%B4%20%EA%B3%B5%EB%AA%A8%EC%A0%84%20-%20%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B6%84%EC%84%9D%20%EA%B3%BC%EC%A0%9C5

 

상세 내용

  • 탐색적 자료분석
    1. Inlet SOx, Limestone, 발전량이 Outlet SOx 예측에 미치는 영향: Outlet SOx 예측에 가장 큰 영향을 주는 변수는 Inlet SOx이며, Limestone 사용량을 결정하는데 이 모델을 활용하는 것은 부적절함.
    2. SOxDiff 변수 정의: SOxDiff = Inlet SOx - Outlet SOx
    3. Limestone 사용량과 SOxDiff의 관계: 양의 상관관계가 존재하여 Limestone 예측 모델에 SOxDiff를 사용.
  • 모델 학습
    • 데이터 전처리: NaN 값을 평균값으로 대체하고, SOxDiff 값이 음수인 행은 제거.
    • 모델 형성: 전력량, Limestone, Inlet SOx를 이용하여 SOxDiff를 예측하는 모델을 Gradient Boosting Regressor로 학습.
    • 결정계수: 0.97로 높은 예측 정확도를 보임.
  • 최적의 Limestone 값을 구하기 위한 알고리즘
    • SOx 배출량을 줄이고 석고의 순도를 높이기 위해 SOxDiff가 최대가 되는 Limestone 사용량을 결정.
    • Limestone 사용량이 계속 증가할 경우 SOxDiff가 감소하는 시점을 찾아 최적의 Limestone 사용량을 결정.
    • Limestone 초기값은 Inlet SOx 구간별 Limestone 평균값보다 약간 작은 값으로 설정.
    • 반복적인 증가와 비교를 통해 최적의 Limestone 값을 찾음.
  • 결과
    • Inlet SOx = 120: 최적의 Limestone 값 약 4.69, SOx 절감 약 138.9
    • Inlet SOx = 160: 최적의 Limestone 값 약 6.74, SOx 절감 약 157
    • Inlet SOx = 210: 최적의 Limestone 값 약 8.13, SOx 절감 약 207
  • 최적화 프로그램
    • 입력된 Inlet SOx 값에 따라 Limestone 최적 값을 출력하는 프로그램을 제공.

사용 기술 및 라이브러리

  • Python
  • Scikit-learn
  • Matplotlib

담당한 부분

  • 배경지식 조사
  • 데이터 전처리
  • EDA
  • 모델 하이퍼파라미터 튜닝

배운 점

  • 실제 현업에서 발생한 데이터를 다뤄보니 예상보다 결측치나 이상치들이 다양하게 있어서 전처리하는게 쉽지 않다는 점을 알 수 있었다.
  • 석고 순도에 큰 영향을 미치는 변수들은 관련 데이터셋을 찾아보았지만 확보할 수 없어 기존 데이터셋에서 파생 변수를 생성해서 최대한 반영해보았다.
  • 모델링에서 굳이 타겟 변수를 관계식의 y값인 변수로 하지 않고 다른 변수로 주어 feature engineering을 할 수 있는 점을 배웠다.