본문 바로가기
삼성 SDS Brightics

[삼성 SDS Brightics] 02-2. 반도체 공정 이상 예측_개인미션1탄

by 도은 2022. 6. 28.

안녕하세요! Brightics 서포터즈 3기

입니다.

앞으로 3 주간 2~4차 미션을 진행하며

Brightics를 활용한 개인 데이터 분석 프로젝트소개해드릴예정입니다.

오늘은 대망의 첫.번.째 개인 프로젝트를 포스팅할 예정인데요~

아무래도 처음이니만큼 기초부터 진행해보려고 합니다.

(만약, 아직 Brightics Studio 설치가 되지 않으셨다면, 하단의 링크로 들어가 다운로드 및 설치 방법 확인하실 수 있답니다!)

먼저, 데이터 분석의 전체 플로우를 소개해볼게요

문제정의 - Data Preprocessing - Data EDA -Feature Selection - Modeling - Evaluation

데이터 분석은 위와 같은 플로우로 이루어진답니다.

감이 좀 오시나요? 데이터 분석을 처음 접해보셨다면 알쏭달쏭하실텐데

앞으로의 개인 미션을 통해 각각 어떤 과정인지 설명해드리도록 하겠습니다

기대해주세요~!!

제가 1차미션에서 소개해드렸던 Brightics Tutorial 기억나시나요??

저는 오늘 첫번째 미션으로 파트 1~2에서

해당 분석에 필요한 목차들만 쏙쏙 활용해 진행해보려고 합니다.

그럼 지금부터 시작하도록 하겠습니다!

문제 정의

문제 정의에서는 어떠한 데이터를 사용하여 어떻게 분석을 할 것인지를 정의해주어야 합니다.

제가 개인 미션에서 다루어볼 주제는 Kaggle의 UCI SECOM Dataset을 활용해

반도체 생산 공정의 수율 향상을 위한 불량품 분류예측을 목표로 하도록 하겠습니다.

과연 코딩없는 Brightics를 사용해 분석한다면 얼마나 편리하고 얼마나 효과적일지

제가 한 번 분석해보겠습니다!

데이터는 하단의 링크를 참조해주세욥~~

(데이터 분석시 사용할 데이터셋 확보 시, 지적재산권 및 저작권을 침해하지 않도록

Kaggle, 공공 데이터 포탈과 같은 오픈 데이터셋 사이트를 활용했습니다.)

파트 I. Common

1) 프로젝트 생성

우선 프로젝트를 "Brightics_wafer_detection" 이라는 이름으로 하나 새로 생성합니다. (이름은 아무거나 해도 된다는 것 아시죠? 구분할수만 있도록!)

2) 데이터 업로드

Load 함수를 선택 후 원하는 데이터를 load 해줘야하는데요.

우선 Brightics 화면 오른쪽 가장 상단에 위치한 PALETTE 선택 후 Data 탭의 +Add 버튼을 클릭해 Local에 다운받은 데이터를 업로드해줍니다.

저는앞서 말씀 드렸던 캐글 데이터를 사용할 예정입니다.

PALETTE - Data 탭 을 클릭한다면 추가한 데이터를 확인하실 수 있습니다.

왼쪽 화면의 Path에서 해당 데이터를 선택 후 Load를 실행해준다면!

아래 사진처럼 Out Table에서 Data의 기본적인 구조를 확인해보실 수 있어요

+) 분석 중 정규화가 되지 않는 오류를 발견해 왜 그런가 확인 중, 데이터의 일부 열이 double data입에도 불구하고 string 으로 설정된 것을 확인할 수 있었습니다ㅠㅠ

여러분은 꼭 데이터 로드시 type을 확인해서 저처럼 바보같은 실수 하지 마세요

(1시간 헤멘 건 안 비밀..)

오늘도 하나 배웠다!

데이터 type이 string으로 되어 있는 열을 선택 후,

Double을 클릭해 format을 변경해준다음 파트2로 넘어가주세요!

파트 II.Pre-processing

1) 결측치 확인

우선 데이터 내에 결측치를 확인하기 위해 statistic summary 함수를 사용해 각 열의 null값을 확인해줍니다

Target statistic을 null count로 설정하면 됩니다.

2) 결측치 처리

count된 결측치를 처리하기 위해 Time 001~590 컬럼 중 결측치 데이터를 replace missing number 함수를 통해 모두 0으로 변환해줍니다.

3) Oversampling

여기서 잠깐! 제가 가지고 있는 데이터의 경우 Fail(1), Pass(-1)의 비율이 치우쳐져 있는 편입니다. 이는 out put 데이터의 chart graph를 통해 확인할 수 있었는데요!

왼쪽의 사진 처럼 결과 테이블 중 Pie를 선택 후 그래프의 기준이 될 컬럼(Pass_Fail)과 파이를 결정할 컬럼(Count)를 정한 뒤 돌리면), 오른쪽 사진같이 그래프를 확인하실 수 있답니다.

<Pie Parameter 선택>

Chart Type : Pie

Data Source : Over Sampling (SMOTE)

Color By : Pass_Fail

Show rows : 10,000

 
 

그렇다면 치우쳐진 데이터를 비슷한 비율로 바꿔지길 원하기 때문에 oversampling 함수 중

SMOTE 알고리즘을 통해 Fail의 값을 증가시켜줄 수 있습니다.

 
 

Select column을 통해 time 변수를 제거해준 뒤, 아래와 같이 변수를 선택하고 실행하면 오른쪽 사진처럼 Fail(1), Pass(-1)의 비율이 50:50이 된 것을 확인하실 수 있습니다!

<SMOTE Parameter 선택>

Label Column : Pass_Fail

Sampling Strategy : Minority

Seed : 42

K Neighbors : 5 (Default)

M Neighbors : 10 (Default)

Kind : Regular (Default)

N Jobs : 1 (Default)

4) 정규화

표준화를 하는 이유는 단위가 다르거나, 크기가 다를 경우 모델의 해석이 잘못될 수 있습니다.

이번 실습에서는 데이터를 StandardScaler를 사용해 표준화합니다. StandardScaler는 범위가 넓은 데이터를 표준화를 통해 평균이 0이고 분산이 1인 값으로 변환 시켜줍니다.

BUT, 표준화시 Y값(목표변수)는 Scale에서 제외해주셔야한다는 점~!

필요한 열을 선택 후 standardscaler 선택 후 RUN을 돌리면

오른쪽 화면같이 가장 끝 열에 변수명_standard가 추가된 모습을 확인하실 수 있습니다.

Data Analysis Flow

Brightics Studio의 장점!! 오늘 진행한 step별 함수의 전체를 확인할 수 있다는 점~!!

minimap으로도 제공해주기 때문에 분석을 진행하면서 전체 구조를 확인하실 수 있습니다. 프로젝트를 진행하다보면 코드가 길어짐에 따라 중간 중간 코드가 기억이 안 나 헤매는 경우가 종종 있었는데요, Brightics Studio가 있다면 걱정하시지 않아도 된다는 점!

지금까지 <모델 정의+데이터 전처리 과정>이었습니다.

코딩 하나 없이 클릭만으로 데이터 로드부터 전처리까지...!

데이터 분석에서 70%의 힘을 전처리에 들였던 저로써는 너무 편리한 기능이었는데요ㅎㅎ

오늘 포스팅이 여러분께 도움이 됐으면 하는 바람입니다.

추가적인 질문은 댓글로 부탁드려요!!

다음 포스팅은 개인 분석 2탄으로 진행한 모델링을 이어서 소개해드리도록 하겠습니다!

감사합니다~