안녕하세요 브월 팀의 막내 수빈입니다~!
오늘은 드디어!!! 지난번 주제 선정에 이어 데이터 전처리를 진행하려고 합니다!
지난번 블로그 포스팅을 못 보신 분들은 아래의 링크를 참고해 주세요!
👇👇👇
제가 맡은 부분은 데이터 전처리입니다! 전처리는 데이터 정제(결측값 처리, 이상치 처리), 데이터 변환(범주형 변수 변환 등), 파생 변수 생성, 행과 열의 핸들링과 정렬, 데이터 결합 및 형태 변환 등을 포함합니다.
● 독립변수 설명
Feature
|
설명
|
X_01
|
PCB 체결 시 단계별 누름량(Step 1)
|
X_02
|
PCB 체결 시 단계별 누름량(Step 2)
|
X_03
|
방열 재료 1 무게
|
X_04
|
1차 검사 통과 여부
|
X_05
|
PCB 체결 시 단계별 누름량(Step 3)
|
X_06
|
PCB 체결 시 단계별 누름량(Step 4)
|
X_07
|
방열 재료 1 면적
|
X_08
|
방열 재료 2 면적
|
X_09
|
방열 재료 3 면적
|
X_10
|
방열 재료 2 무게
|
X_11
|
방열 재료 3 무게
|
X_12
|
커넥터 위치 기준 좌표
|
X_13
|
각 안테나 패드 위치(높이) 차이
|
X_14
|
1번 안테나 패드 위치
|
X_15
|
2번 안테나 패드 위치
|
X_16
|
3번 안테나 패드 위치
|
X_17
|
4번 안테나 패드 위치
|
X_18
|
5번 안테나 패드 위치
|
X_19
|
1번 스크류 삽입 깊이
|
X_20
|
2번 스크류 삽입 깊이
|
X_21
|
3번 스크류 삽입 깊이
|
X_22
|
4번 스크류 삽입 깊이
|
X_23
|
2차 검사 통과 여부
|
X_24
|
커넥터 1번 핀 치수
|
X_25
|
커넥터 2번 핀 치수
|
X_26
|
커넥터 3번 핀 치수
|
X_27
|
커넥터 4번 핀 치수
|
X_28
|
커넥터 5번 핀 치수
|
X_29
|
커넥터 6번 핀 치수
|
X_30
|
스크류 삽입 깊이1
|
X_31
|
스크류 삽입 깊이2
|
X_32
|
스크류 삽입 깊이3
|
X_33
|
스크류 삽입 깊이4
|
X_34
|
스크류 체결 시 분당 회전수 1
|
X_35
|
스크류 체결 시 분당 회전수 2
|
X_36
|
스크류 체결 시 분당 회전수 3
|
X_37
|
스크류 체결 시 분당 회전수 4
|
X_38
|
하우징 PCB 안착부 1 치수
|
X_39
|
하우징 PCB 안착부 2 치수
|
X_40
|
하우징 PCB 안착부 3 치수
|
X_41
|
레이돔 치수 (안테나 1번 부위)
|
X_42
|
레이돔 치수 (안테나 2번 부위)
|
X_43
|
레이돔 치수 (안테나 3번 부위)
|
X_44
|
레이돔 치수 (안테나 4번 부위)
|
X_45
|
안테나 부분 레이돔 기울기
|
X_46
|
실란트 본드 소요량
|
X_47
|
3차 검사 통과 여부
|
X_48
|
4차 검사 통과 여부
|
X_49
|
Cal 투입 전 대기 시간
|
X_50
|
RF1 부분 SMT 납 량
|
X_51
|
RF2 부분 SMT 납 량
|
X_52
|
RF3 부분 SMT 납 량
|
X_53
|
RF4 부분 SMT 납 량
|
X_54
|
RF5 부분 SMT 납 량
|
X_55
|
RF6 부분 SMT 납 량
|
X_56
|
RF7 부분 SMT 납 량
|

먼저 데이터를 load 해줍니다! load 이후 profile table 함수로 결측값, 변수의 특징 등을 살펴봅니다.
Profile Table 기능은 제가 좋아하는 기능 중 하나랍니다 ㅎㅎ
Profile Table
(데이터 특징 파악해보기)

Overview를 살펴보면 Total missing(%)가 0.0%라고 나와있는데 이는 데이터 안에서 결측치가 하나도 없다는 걸 의미합니다.

이 함수로 변수의 특징까지 파악할 수 있습니다. 먼저 X_10과 X_11변수는 99.9%의 데이터가 0으로 이루어져 있는 걸 확인할 수 있습니다. 또한 두 변수는 왜도(skewed) 문제를 가지고 있는 것으로 보입니다.
X_10은 방열 재료 2 무게이고 X_11은 방열 재료 3 무게인데 무게가 0인 데이터로 주로 이루어져 있다면 잘못된 데이터가 아닐지 의심해 볼 필요가 있습니다. (변수 설명은 맨 위의 표를 참고해 주세요!)
X_04,X_23,X_47,X_48 변수는 모두 1인 데이터로 이루어져 있는데 그 이유는 검사 통과 여부이기 때문입니다.
이 데이터는 모두 검사를 통과한 데이터로 보면 되겠습니다.
왜도란?
자료가 어느 쪽으로 얼마만큼 기울어져 있는가, 즉 분포의 비대칭성을 나타내는 척도입니다.



profile table에서 X_38, X_10, X_11 변수들이 왜도 문제가 있다고 하여 히스토그램으로 확인했을 때 크게 왼쪽이나 오른쪽으로 치우쳐 있는 모습이 아니기에 왜도 문제를 해결할 수 있는 로그 변환 과정은 생략하겠습니다!
99.9% 0으로 이루어진 X_10/ X_11 변수는 결측값 일까?
데이콘의 데이터 세부 설명 관련 문의에 대한 답변은 다음과 같습니다.
Q. X_10 / X_11 방열재료 2, 3의 무게 값이 0이 많은데 결측값인지 실제로 방열재료 2, 3 이 공정에 사용되지 않았는지?
A. 실제 방열재료 2, 3은 공정에 사용되고 있으며 0으로 표현된 값은 결측값라고 생각하시면 될 것 같습니다.
따라서 X_10, X_11 데이터의 결측값을 처리하는 과정이 필요합니다.
결측값 처리
결측값 처리에 대한 고민 없이 결측값을 무조건 제거한다면 많은 양의 정보가 손실될 뿐만 아니라 분석 결과에 편향이 발생할 수 있습니다. 정보의 손실을 최소화하는 전략이 필요합니다. 저는 데이터에서 결측값을 대체하는 방법을 사용하려고 합니다.
참고: 브라이틱스와 함께하는 데이터 분석


왼쪽은 파이썬 스크립트 실행 전 / 오른쪽은 파이썬 스크립트 실행 후입니다.
먼저 위 왼쪽 데이터는 결측값이 0으로 표시된 경우에 해당합니다. Brightics에서 결측치를 대체하기 위해서는 오른쪽 사진과 같이 null 값으로 표시되어 있어야 인식하는데 결측값이 0으로 표시되어 있기에 brightics에서 결측값 대체 기능을 이용할 때 인식을 하지 못합니다.
X_10, X_11 변수의 결측값을 0으로 바꾸는 과정이 필요하며 0으로 바꾸는 과정은 파이썬 스크립트를 이용했습니다.

파이썬 스크립트 실행 후 0값이 null 값으로 바뀐 것을 볼 수 있습니다.

Replace Missing Number 함수를 통해 결측값을 평균으로 대체해 줍니다. 결측값 대체 방법에는 평균 이외에도 중간값, 최솟값 등이 있지만 저는 평균으로 대체해 봤습니다!
독립변수 이상치 처리
이상치 처리 방법에는 크게 3가지가 있습니다. 이상치 제외, 이상값 대체, 변수 변환이 있습니다. 이 중 저는 이상치 제외 방법을 사용해 보겠습니다.

Outlier detection 함수로 그래프를 그려 이상치를 확인해 봤을 때 X_30(36.5%)에서 이상치가 가장 많이 나타나므로 X_30의 변수의 이상치를 제거합니다.

히스토그램을 그려봤을 때 오른쪽으로 동떨어진 값을 확인할 수 있는데 이는 1.46 초과이므로 1.46 초과인 데이터를 이상치로 간주합니다.

filter 함수를 통해 이상치인 값을 데이터에서 제외하도록 하겠습니다!
위 기준으로 이상치 제거 시 데이터 개수 (39,607 -> 37,810)로 줄어듭니다.
종속변수 이상치 제거
종속변수 설명
Feature
|
설명
|
Y_01
|
안테나 Gain 평균 (각도1)
|
Y_02
|
안테나 1 Gain 편차
|
Y_03
|
안테나 2 Gain 편차
|
Y_04
|
평균 신호대 잡음비
|
Y_05
|
안테나 Gain 평균 (각도2)
|
Y_06
|
신호대 잡음비 (각도1)
|
Y_07
|
안테나 Gain 평균 (각도3)
|
Y_08
|
신호대 잡음비 (각도2)
|
Y_09
|
신호대 잡음비 (각도3)
|
Y_10
|
신호대 잡음비 (각도4)
|
Y_11
|
안테나 Gain 평균 (각도4)
|
Y_12
|
신호대 잡음비 (각도5)
|
Y_13
|
신호대 잡음비 (각도6)
|
Y_14
|
신호대 잡음비 (각도7)
|


종속변수는 총 14개로 이번엔 Box plot으로 이상치를 탐색해 보겠습니다. 14개 중 Y_06과 Y_10에서 매우 작은 값에 몰려 있으므로 이상치로 보입니다.

Outlier Detection에서 Turkey 방식으로 이상치를 제거해 보겠습니다!

제거했을 때 데이터 셋 (37,801 -> 36,789)이 줄어듭니다.
파생 변수 추가

X_34~X_37은 스크류 체결 시 분당 회전수를 의미하는 변수입니다. 같은 장비로 측정한 회전 수이기에 파생 변수로 만들어도 되겠다고 생각했습니다. 만든 파생 변수는 분당 회전 수 평균입니다!
데이터 분석 전처리를 하면서 어떤 근거로 데이터 분석을 진행했는지 근거를 찾아가는 과정이 재밌었고 개념을 다시 복습할 수 있었어요 ㅎㅎ
무엇보다 팀원분들과 모르는 부분이나 해결 안 되는 부분을 얘기해서 해결할 수 있어서 좋았습니다!
브월 팀 언니들 너무너무 고생했어요 ∗❛⌄❛∗
이해 안 되는 부분은 언제든지 댓글로 남겨주세요 그럼 안뇽

* Brighitcs 서포터즈 활동의 일환으로 작성된 포스팅입니다.
#삼성SDS #삼성SDSBrightics #Brightics #브라이틱스 #Brightics서포터즈 #브라이틱스서포터즈 #BrighticsAI #BrighitcsStudio #AI #인공지능 #데이터분석 #빅데이터 #SamsungSDS #분석초보 #브라이틱스스튜디오 #모델링 #코딩 #코딩초보 #분석툴 #Python #R #Scala #SAS #통계 #대학생 #대외활동 #대학생대외활동 #데이콘
'Brightics 서포터즈 3기' 카테고리의 다른 글
[삼성 SDS brightics] 팀 영상 미션 1. 영상 기획 (0) | 2022.09.15 |
---|---|
[삼성 SDS brightics]# 팀 프로젝트 마지막 편 자율주행 성능 예측하기(feat. 표준화) (0) | 2022.09.06 |
[삼성 SDS Brightics] 자율주행 센서의 성능UP! #팀 분석 프로젝트 1편 #팀 분석 프로젝트 1편 (0) | 2022.08.16 |
[삼성 SDS Brightics] 개인분석 #1-3 브라이틱스로 고객 이탈 여부를 얼마나 잘 맞출까?(feat.로지스틱회귀분석) (0) | 2022.07.12 |
[삼성 SDS Brightics Studio ]#1-2 고객 이탈 여부 예측하기 2탄!(더미변수가 뭐람) (0) | 2022.07.03 |