안녕하세요! Brightics 서포터즈 3기
입니다.💙

지난 팀미션 1탄에서는 팀 분석 주제를 소개드리고,
일정 계획과 역할 분담에 대해 포스팅했었는데요!
오늘은 이어서 팀미션 2탄 EDA와 데이터 전처리 그리고 분석 모델링을 진행할 예정입니다(*^o^*)
시작하기에 앞서 팀미션 1탄을 아직 안 읽으셨다면, 지난 주 포스팅으로!
https://blog.naver.com/belita18/222850070177

저는 분석 모델링과 모델 비교 역할을 수행했는데요,
설명에 앞서, 저희 브월 조가 역할 분담을 통해
수행한 과정이 자세하게 설명된 포스팅을 각각 걸어두도록 하겠습니다!
참고 부탁드려요*^0^*
데이터 소개
저희팀은 "DACON 자율주행 센서의 안테나 성능 예측 AI 경진대회"에 참여하기로 했는데요! DACON에서 제공하는 데이터는 다음과 같습니다.
1. 학습(Train) 데이터셋 (39607개)
파일명: train.csv
설명: ID, X Feature(56개), Y Feature(14개)
2. 테스트(Test) 데이터셋 (39608개)
파일명: test.csv
설명: ID, X Feature(56개)
3. sample_submission.csv (제출양식)
설명 : ID, 예측한 Y Feature(14개)
4. ./meta/x_feature_info.csv
설명: 비식별화된 X Feature에 대한 세부 설명 자료
5. ./meta/y_feature_info.csv
설명 : 비식별화된 Y Feature에 대한 세부 설명 자료
6. ./meta/y_feature_spec_info.csv
설명 : 각 샘플의 정상, 불량을 판정할 수 있는 Y Feature 별 스펙 기준 자료
위와 같은 데이터가 제공되었습니다. 간략하게 설명드리자면 1/2는 모델을 만들기 위한 test,train 데이터셋, 3은 제출양식을 통일하기 위한 기본 데이터셋, 4/5/6은 1/2의 각 column별 설명이 담긴 info 데이터셋입니다.
독립변수 "X_"
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 납 량
종속변수 "Y_"
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)
독립변수는 56개, 종속변수는 14개로 데이터셋이 다변량변수임을 확인하실 수 있습니다!
정말 많죠...? 스크롤이 끝없이 내려가요ㅎ...
EDA
독립변수: Radar 센서 제작 공정의 순서에 따라 측정된 인자
종속변수: 각도 별 Radar 센서의 안테나와 신호대에서 측정된 인자
다음으로, 각각의 변수에 대해 EDA를 수행한 포스팅입니다 !
https://blog.naver.com/dvbh6592/222857414121

데이터 전처리1
다음으로, 결측치와 이상치를 탐색하고 처리하는 과정을 설명해둔 포스팅입니다!
X_34~X_37은 스크류 체결 시 분당 회전수를 의미하는 변수인데,
주최 측에서 같은 장비로 측정한 회전 수라고 답변해주셨습니다!
이에 저희 팀은 [분당 회전 수 평균]이라는 파생 변수를 만들어도 되겠다고 판단했습니다.
https://blog.naver.com/munsb2002/222856454987

데이터 전처리2
다음으로, 결측치는 동일하게 처리했지만
처리 방법을 달리한 과정을 설명한 포스팅입니다!
또한 독립변수가 많기 때문에 모델 성능 저하 위험을 대비하고자 데이터 표준화와, 모델의 복잡함을 줄이기 위한 주성분분석을 진행해주셨어요. ^_^
https://blog.naver.com/smilingmj_/222850229482

[삼성SDS Brightics Studio] 팀 분석 과제 ① - prologue : 자율주행 센서 성능, 딱 기다려!
모델링
드디어 제가 담당한 업무네요ㅎㅎ
저는 5가지 모델링을 진행했는데요, 하나씩 설명드리도록 하겠습니다1
우선 저희의 데이터셋은 일반적인 데이터셋과 달리 종속변수가 여러개인 데이터입니다.
그래서 아쉽게도 Brightics Studio 내에 있는 regression model 함수들은
feature columns은 여러 개 선택 가능하지만,
label colum은 단 1개밖에 선택이 안되더라고요ㅠ.ㅠ

BUT!!! Brightics Studio는 플랫폼이기 떄문에 Python이나 R 등의 언어도 script 함수를 이용해 가져다 쓸 수 있다는 점~~
그래서 저는 sklearn의 MultiOutputRegressor을 import해
python script를 작성했습니다!
짜잔~~~~!!
select function에서 python을 입력하시면 python script를 발견하실 수 있습니당ㅎ.ㅎ

1. LinearRegression
전체 python script는 다음과 같습니다. 하나씩 자세히 한 번 봐볼까요???

우선, sklearn에서 필요한 함수를 import하고!
seed를 고정하기 위한 코드를 작성했습니다.

다음으로, 제공된 train.csv파일을 input[0]을 train_df으로 입력해주었어요.
오른쪽 화면에서 In Table Variable을 찾으셨나요?? input이 여러개인 경우 input[#]으로 순서대로 #(number)을 부여해줍니다. 순서 확인하는게 중요하겠죠?ㅎㅎ
이후 train_df를 X Featrue와 Y Featrue로 나누어주었어요. 각각 독립변수와 종속변수를 의미합니다.

다음으로 모델의 핵심 코드 차례에요. 중요하니까 아래에 적어둘게요!
#LR = MultiOutputRegressor(LinearRegression()).fit(train_x, train_y)
input[1]은 test.csv를 의미합니다.
만들어둔 함수 LR에 test_x를 활용해 preds를 도출해줍니다.

마지막으로 submit은 데이콘 대회의 제출 양식을 따르기 위해 제공된 sample_submission.csv 파일이에요! input[2]를 submit으로 입력해줍니다.
submit의 ID에 맞추어 예측된 preds를 넣어주었어요.

여기서 진짜 주의할 점!!
도출할 output을 정해주어야 합니다! 데이터셋이 큰 경우 모델을 돌리는데 시간이 상당히 소요되는데, output을 정해주지 않으면 다시 돌려야 한다는 점...(제 경험담입니다ㅠ)
저는 output으로 제출할 submit을 입력하고 TABLE 형식을 선택해주었어요!

2. XGBRegressor
이후부터는 모델의 핵심 코드를 제외하고는,
모두 같은 과정이기 때문에 핵심 코드만 적어두도록 하겠습니다ㅎㅎ
xgb = MultiOutputRegressor(xgb.XGBRegressor(n_estimators=100, learning_rate=0.08, gamma = 0, subsample=0.75, colsample_bytree = 1, max_depth=7) ).fit(train_x, train_y)
3. GradientBoostingRegressor
GBR=MultiOutputRegressor(GradientBoostingRegressor(random_state=0)).fit(train_x, train_y)
4. Random Forest Regressor
RFR = MultiOutputRegressor(RandomForestRegressor(n_estimators=100, max_depth=30, random_state=0)
5. Light Gradient Boosting Machine
base_model=LGBMRegressor(objective='l1', subsample_freq=1, silent=False, random_state=18, importance_type='gain', **base_params)
오늘은 데이터 소개와, EDA, 데이터 전처리 그리고 모델링 과정에 대해 설명드렸어요.
Brightics Studio를 활용하면 분석하지 못할게 없다는 점~
다음 포스팅은 팀 분석 3탄으로 오늘 설명한 모델을 비교해보고 성능 평가와 결과 보고서 작성 (PPT)에 대해 자세히 소개해 드리도록 하겠습니다!
다음주에 만나용@__@

* 본 포스팅은 삼성SDS Brightics 서포터즈 3기 활동의 일환으로 작성하였습니다.
#삼성SDSBrightics#삼성SDS#Brightics#Brightics서포터즈#Brightics서포터즈3기#BrighticsStudio#브라이틱스#모델링#데이터분석#코딩없이데이터분석#브라이틱스와함께하는데이터분석
'삼성 SDS Brightics' 카테고리의 다른 글
| [삼성 SDS Brightics] 08 DACON 자율주행 센서의 안테나 성능 예측 AI 경진대회 후기_팀미션4탄(마지막) (0) | 2022.09.06 |
|---|---|
| [삼성 SDS Brightics] 07 DACON 자율주행 센서의 안테나 성능 예측 AI 경진대회 후기_팀미션3탄 (0) | 2022.09.02 |
| [삼성 SDS Brightics] 05. DACON 자율주행 센서의 안테나 성능 예측 AI 경진대회 후기_팀미션1탄 (0) | 2022.08.16 |
| [삼성 SDS Brightics] 04. 반도체 공정 이상 예측_개인미션3탄 (0) | 2022.07.11 |
| [삼성 SDS Brightics] 03. 반도체 공정 이상 예측_개인미션2탄 (0) | 2022.07.05 |