- 안녕하세요 INNOZINC 아연 도금 공정의 불량 예측 모델을 연구한 4조입니다.
도메인에 대한 자세한 내용들을 상세히 적어놨으니 후에 첨부된 자료를 통해 한번 더 확인해보시면 좋을 것 같습니다.
- 목차는 다음과 같습니다.
- 먼저 도메인에 대한 소개인데요.
핵심 요소들만 간략히 설명하고 넘어가도록 하겠습니다.
- 도금이라는 것은 양극인 + 가 음금인 - 로 움직이는 원리인 환원 과정을 통해 아연에 있던 이온이 금속 표면에 입혀지는 것을 말합니다.
- 저희는 그런 도금 공정 중 이노징크라는 공정에 대해 소개하려고합니다. 일반 아연 도금보다 훨씬 우수한 특성을 지닌 새로운 차세대 도금 방식으로 내식성이 우수하고 환경문제 해소가 가능하다고 합니다. 더 자세한 설명은 뒤에 남겨놨으니 추후에 확인 하시길 바랍니다.
- 다음은 이노징크의 공정 과정입니다. 이노징크의 공정과정은 크게 3가지로 나뉘는데 1차 공정에서는 크게 전처리 작업을 한다고 생각하시면 되고
- 기본적인 기름 및 산화물, 미세한 잔여 오염물을 제거하는 공정입니다.
- 다음 2차공정은 이노징크 아연도금 공정으로
- 물체의 표면에 아연 도금을 입히는 공정입니다.
- 다음 3차공정은 후처리 공정으로
- 일반 아연 도금과는 다른 이노징크의 특수성이 발생하는 공정입니다. 해당 공정에서는 세라믹 후처리를 통해 부식 인자 침투를 차단시켜줍니다.
- 이 공정과정은 저희 프로젝트에서 굉장히 중요한데요. 해당 데이터는 위에서 언급한 3가지 공정 과정 중 어느 공정에서 데이터를 수집한지 모르기 때문에 다음과 같은 프로젝트의 가설을 세우고 시작하고자 합니다.
프로젝트의 가설의 참과 거짓을 판별하고 이에 따른 적합한 개선점을 도출하는 것이 이프로젝트의 진짜 목표인 것이죠.
- 프로젝트 목표는 다음과 같습니다. 세부 목표부터 예상 결과까지 적어 두었으니 나중에 확인해보시면 될 것 같습니다.
16 넘어가
17 넘어가
- 분석에 앞서 변수에 대한 설명을 짧게 하고 넘어가도록하겠습니다.
- 변수 내용은 다음과 같고 pH, Time, Current, Voltage가 주 변수이며 도금조 내부에서 측정한 값입니다.
- 데이터의 특성을 조금 더 뜯어보면 1개의 제품을 생산 할 때 대략 345초가 걸리며 하루에 22개의 제품을 생산하고 있습니다.
여기서 에러를 조금 중요시 보시면 될 것 같은데, 1개의 로트에 69개의 데이터가 존재하지만 해당 제품이 불량이면 69개의 데이터가 모두 불량으로 표시되기 때문에 분석 시 주의가 필요합니다.
- 프로젝트의 가설은 다음과 같습니다.
가설 1부터 4까지의 과정을 통해 불량과의 관계를 분석함과 동시에
프로젝트의 가설인 해당 데이터가 이노징크 도금 2차 공정에서 수집한 데이터인지에 대한 True False를 판별하고자 합니다.
- 가설 분석 방법으로 저희는 다음과 같이 진행을 했습니다.
- 먼저 가설 1입니다. 각 변수는 불량과 밀접한 관계가 있을 것이다.
- 각 변수들이 도금 공정에서 핵심 역할을 한다면, 다음과 같은 이유로 각 변수마다 상관관계를 갖을 것이라 판단하였습니다.
- 그러나 히트맵으로 보아도 특정 관계가 보이지 않았습니다.
- T검정을 진행해보았을때 p-value값이 어느정도 유의미하게 나왔습니다.
- 이것만으로는 불량과의 관계가 어느정도 있다고 볼 순 있느나 불량에 직접적인 영향을 준다고 하기엔 모호함이있습니다.
- 때문에 우리가 가지고 있는 변수를 제외한 새로운 변수가 필요하다고 생각을 했습니다. 수집한 데이터가 진짜로 2차 공정에서 가져온 데이터라면 아연도금에 있어 영향을 많이 받는 습도에 대해 조사할 필요가 있다고 판단하였습니다.
이로인해 날씨가 불량에 영향을 미칠 것이다 라는 가설을 세웠고
- 다음과 같은 이유로 날씨 중에서도 습도가 영향을 미쳤을 것이라 생각했습니다.
- 외부데이터인 날씨 데이터 수집이 가능할 것이라 판단한 이유는 데이터를 수집한 공장의 위치로부터 날씨를 관측하는 기상대까지 거리가 가까웠고, 기상대가 한 곳이 아닌 두곳이 있어서 데이터의 교차 검증이 가능했기 때문입니다.
- 날씨데이터를 수집하기 위해 기상청 오픈 API데이터를 활용하였지만
- 문제가 발생하였습니다. 수집된 데이터는 5초 단위로 측정이 되었지만, 기상청 API 데이터는 1시간 단위여서 해당 데이터를 사용하는 것에 문제가 있다고 판단하였습니다.
- 때문에 저희가 기상청 자체 데이터에서 분단위로 수집을 하였습니다.
- 분석에 앞서 울산공항 기상대와 울산기상대의 양품과 불량품의 평균 습도를 비교해 보았는데요, 2곳 모두 습도 간 평균의 차이가 존재하였습니다.
- 외부데이터를 적용함에 있어 거리상으로는 울산공항 기상대가 가까우나 공항 특성상 기상 영향이 적은 곳에 위치하는 경우가 많습니다. 보통 활주로의 대기가 거의 일정한 곳에 공항을 짓기 때문에 울상공항 기상대가 아닌 울산기상대의 데이터를 사용했다는 점 참고 바랍니다.
- 울산기상대 데이터를 합쳐서 새로운 데이터 프레임을 생성하고 히트맵을 통해 상관관계를 보았지만 기존과 크게 달라진 점은 없었습니다.
- 그러나 의사결정나무 에서는 습도 데이터의 중요도가 너무 높아서 습도 데이터로만 판단하는 결과가 나타나서 랜덤포레스트를 사용해 보기로 하였습니다.
- 랜덤포레스트 확인결과 습도가 불량에 굉장히 크게 영향을 미치고 있는 것으로 보이기는 하지만
- 직접적인 원인으로 보기에는 어려움이 있다고 판단이 됩니다.
- 이렇게 여러 시도를 해보았으나 원하는 결과가 나오지 않아서 데이터 전처리를 새로운 시각에서 살펴보고자 이번에는 불량을 발생하는 특정 수치가 있을 것이라고 판단하여 다음과 같은 가설을 세웠습니다.
- 또한 345초의 제품생산 시간 중 불량이 발생하는 구간을 파악해보기 위해 기존 5초 단위로 묶여있었던 데이터를 15초, 115초 단위로 묶어서 살펴보았습니다.
그치만 여전히 눈에 띄는 결과는 보이지 않았습니다.
- 이번에는 데이터 전체의 형태를 보면 무엇인가 보이지 않을까라는 생각에 불량과 양품을 비교해서 나타내봤습니다.
274개중 일부 튀는 값들이 불량에서 발견이 되었고 나머지 값들은 양품과 불량품이 거의 비슷하게 나타나는 것을 확인할 수 있습니다. 때문에 데이터 전체를 더 세밀하게 분석할 새로운 기준이 필요하다고 느꼈습니다.
- 변수 중 전류 값 전체를 히스토그램으로 그려보니 다음과 같이 나왔고 군집을 이루는 것과 그렇지 못한 데이터가 있다는 것이 눈에 띄게 보이고 있습니다.
이를 바탕으로 튀는 값들을 이상치가 아닌 불량의 원인이라 판단하였고 이를 바탕으로 불량 발생을 특정하는 기준을 설정해보고자 하였습니다.
- 전체 데이터를 히스토그램으로 본 결과 다음과 같은 특정 기준치를 설정하였고 데이터 분류를 진행하였습니다.
- pH 3초과, 온도 20도 미만, 전류 전압 3미만의 기준치에 해당하면 count가 1회 올라가도록 설정하였고 Count_sum 을 통해 한 열에 몇회의 특정치가 발생하는지 집계하였습니다.
- 해당 데이터를 바탕으로 다음과 같은 검증 결과가 나왔습니다. 불량데이터의 경우 특정치 발생 횟수가 평균 적으로 10.5회 발생하였고 양품일때는 3회정도 발생하는 것을 확인 할 수 있었고, 특정치 값의 반복 횟수가 많아질수록 불량일 확률이 높다는 것을 확인했습니다.
- 이를 바탕으로 변수 별 특정 수치의 반복 횟수는 불량과 관계가 있다는 가설을 세울 수 있었습니다.
- 해당 가설을 간략히 확인하고자 Count_sum을 랜덤포레스틀 통해 확인해봤는데 상당히 높은 정확도가 나온 것으로 확인 할 수 있었습니다. 즉 불량 여부를 결정하는 주요한 특징은 특정치의 발생 횟수이며 이를 통해 불량을 예측할 수 있을 것 같습니다.
- 그러나 기존 방식에서 한계점이 명확히 존재하고 있습니다. 기존 데이터 분석에서 개별 측정값이 양품과 유사한 경우가 많아 불량을 명확히 판별하기 어려움이 있었는데, 이게 무슨 말이냐면, 위 표를 봐주시길 바랍니다.
같은 날짜에 불량인 데이터와 불량이 아닌 데이터를 비교해보면 값의 차이가 크게 나질 않고 있습니다.
그러나 데이터에서는 1개의 제품에서 발생하는 69개의 데이터인 274개 모두 불량으로 식별을 하고 있죠. 때문에 불량과 양품을 구분할 새로운 데이터 프레임이 필요합니다.
- 새로운 데이터 프레임을 생성하기에 앞서, 외부데이터인 습도처럼 새로운 변수를 추가하여 불량 예측 모델을 더욱 정확하게 만들고자 하였습니다. 주어진 데이터인 pH, Temp, Current, Voltage 를 활용해 도금조 내부 전해질 농도를 구할 수 있어서 Concentration 변수를 새롭게 추가하였습니다.
- 현재 데이터는 5초 간격으로 69번 측정하는 시계열 데이터입니다. 그러나 불량 여부가 로트단위로 결정되므로, 개별 측정값을 그대로 사용하면 데이터가 왜곡될 가능성이 큽니다. 따라서 날짜별 로트 단위로 데이터를 집계하는 방식이 필요할 것 같습니다.
69개의 데이터를 1개로 요약할 때 평균, 표준편차, 최대,최소 값, 변동성 지표, 정규화된 이상 횟수인 Count_ratio, Z-score 등을 활용해 변수로 나타냈습니다.
- 기존 데이터 프레임과는 달리 새로운 변수가 41개나 생성이 되었습니다. 변수가 많아서 선형 회귀 분석 이전 PCA를 통해 변수를 정리 하여
- 적용시켜본 결과 원하는 결과가 나오지 않아서 비선형 회귀분석을 진행하기로 했습니다.
- 먼저 의사결정나무는 recall 값 0.57 로 불량을 절반정도 예측하는 것으로 나와서 추가적인 머신러닝을 진행해봤습니다.
- 불량데이터의 불균형 문제를 해결하기 위해 Split 이후 보더라인 스무트를 사용했지만
- XGboost, 랜덤포레스트만 예측값이 상당히 높게 나온 것을 확인 할 수 있었습니다. 다른 머신러닝 모델보다 XGBoost와 랜덤포레스트의 모델 성능이 높게 나와서 두 모델을 선택하였습니다.
- 두 머신러닝을 하기에 앞서 후진 제거법을 활용해서
- 특성 중요도가 높은 변수들만을 추출했고
- 그것을 바탕으로 하이퍼파라미터와 앙상블 모델을 적용해봤지만 값이 크게 높아지지는 않았습니다.
60 넘어가
- 이렇게 가설을 검증하는 과정을 통해 특정치의 반복 횟수가 많을 수록 제품이 불량일 가능성이 높다는 것을 확인했고
- 위 가설들을 통해 수집된 데이터는 INNOZINC 아연 도금 공정의 데이터라는 것을 확인 할 수 있었습니다.
가설 검증을 통해 불량과 밀접한 관계를 가진 pH, Current, Voltage의 값을 도출했고, 양품의 수치를 계산해보니 INNOZINC 도금 공정의 표준 수치에 들어갑니다.
- 따라서 프로젝트 가설인, 해당 데이터는 2차공정에서 수집된 데이터라는 것을 확인할 수 있습니다.
- 넘어가
- 2차공정에 맞는 공정 개선점은 다음과 같습니다.
먼저 공정 변수의 최적 범위를 설정해야합니다.
표준치에 가까운 최적 값 범위를 설정하고 이상값이 발생하는 구간을 최소화도록 공정을 조정해야합니다.
- 다음은 실시간 공정 모니터링 시스템과 머신러닝 기반 공정 자동 최적화가 필요합니다.
불량 예측 모델을 기반으로 이상값이 감지 되면 경고가 실시간으로 발생하고, 공정 조건을 실시간으로 분석하여 불량 발생 가능성이 높아지면 자동으로 조정하게 끔 바꿔야합니다.
이렇게 불량 예측 시스템을 활용하면 불량 제품이 생산되기 전에 예방이 가능하기 대문에 위와 같은 개선이 이루어진다면 기업의 성장과 생산효율이 높아질 것 으로 판단됩니다.
이상으로 4조의 발표를 마치겠습니다. 감사합니다.