2. 목차
1
2
3
STEP 1
STEP 2
STEP 3
https://dacon.io 2
대회 소개 & EDA
모델 구축 & 검증
결과 및 결언
대회 소개 & EDA
모델 구축& 검증
결과 및 결언
• 모델링
• 대회 후기
• 대회 소개
• EDA
3. https://dacon.io 3
1. 데이터 전처리 & EDA – 대회 소개
1. 배경
빛을 응용한 뇌 내 성분 검사는 피부 상처 없이 다양한 성분 정보를 알 수 있습니다. 이는 뇌 활동 연구를 위
해 신경영상을 얻을 수 있는 방법으로, 바늘(전극)을 찔러 넣는 방법인 뇌전도 검사를 대체할 방안으로 각광
받고 있습니다.
제공된 데이터로 뇌 내 성분 분석 알고리즘을 만들어 주세요. 여러분의 노력으로 따끔한 바늘에서 멀어질
수 있습니다!
신경영상 및 뇌 활동 검사를 위해 제공된 모의 시뮬레이션 데이터를 기반으로 하는 AI 알고리즘 개발
2. 평가 지표
➢ MAE
3. 대회 기간
➢ 기간 (5월 15일 10:00 ~ 6월 26일 17:59)
4. 대회 규칙
➢ 외부 데이터 사용불가
➢ 최대 팀 3명, 일일 제출 제한 3회
➢ Public: 20%, Private: 80%
5. 상금
총 360만원
#1 : 160만원
#2 : 80만원
#3 : 40만원
#4 : 20만원
#5~10 : 10만원
4. https://dacon.io 4
1. 데이터 전처리 & EDA – EDA
데이터 소개
• train 10000개, test 10000개
• id: 1개
• 650~990 파장대의 src: 35개
• 650~990 파장대의 dst: 35개
• rho: 1개
• target: hhb, hbo2, ca, na
4개의 Output이 나와야 하는 Multioutput Regresssion 문제
주요 문제점
• src와 dst 간 단위가 다르다.
• dst에는 다수의 null값이 존재한다.
• target 값들은 서로 상관관계가 있고 hhb를 예측할때 다른 target값을 사용하면 점수가 좋다.
• rho에 따라 dst의 값이 다르다.
• src는 몇가지 패턴이 존재한다.
• hhb, na에는 0이 존재한다.
5. https://dacon.io 5
1. 데이터 전처리 & EDA – EDA
Scaling & Interpolation- Tree 계열
Interpolation: polynomial 2차, akima, cubic 평균 사용
rho에 따라서 dst에 일정 값을 곱함
6. https://dacon.io 6
1. 데이터 전처리 & EDA – EDA
Scaling & Interpolation – Deep Learning
Interpolation과 rho에 따라 곱하는 것 까지 같고 rho 별로 scale 다르게 수행
아래 코드에서 10, 15, 20, 25 순
다양한 Scale 실험에서 원래 분포를 가장 해
치지 않는 변환을 선택
8. https://dacon.io 8
1. 데이터 전처리 & EDA – EDA
Feature Engineering
Tree 계열
1. dst Column으로 itertools.combination을 활용하여 파장 간 차를 구함 ( 대략적으로 0.03~0.05 향상
• 여기서 핵심은 dst_max 혹은 dst_std같은 값으로 차이를 나눠서 차이간의 scale을 맞춰주는
것입니다.
2. dst간 ratio / src 간 ratio ( 대략적으로 0.05~0.07 향상)
• 소스와 타겟 간의 scale이 달라 직접 비교가 힘들었고 source에 따라 dst가 어떻게 변하는지
알고 싶었습니다.
• 그래서 서로 간의 비율을 통해서 비교하면 좋을 것 같다는 생각을 했고 dst combination(2)
으로 비율을 계산하고 src combination(2)으로 비율을 계산하여 서로 나눠주었습니다.
3. zip(src, dst)로 src, dst 차이, 비율을 구함
9. https://dacon.io 9
2. 모델 구축 & 검증 – Permutation Importance
Permutation Importance란 기능을 사용할 수 없을 때 Score(LogLoss, Accuracy 등)가 얼마나 감
소하는지를 측정하여 Feature의 영향도를 측정하는 방법입니다.
각 데이터 세트에서 기능을 제거하고 다시 학습시켜 점수를 확인해야 하는데 이렇게 되면 Feature
가 많을 때 계산 비용이 많이 발생합니다.
이러한 것을 해결하고자 전체 데이터로 한번 학습하고 predict시 원본 feature를 제거하고 제거된
feature 값에 random-noise를 추가하여 학습합니다. 이렇게 되면 이 피쳐는 더 이상 feature 기능
을 하지 않는 것이기 때문에 제거한 것과 마찬가지의 효과를 가지고 이 때 점수가 얼마나 감소하는
지 확인하는 방법입니다. (특히 random-noise를 추가하는 가장 간편한 방법은 값을 섞는 것이라
고 합니다.)
eli5 library의 Permutation Importance를 사용하여 학습이 끝난 뒤 get_score_importance에 score
계산을 해주는 함수, x, y, iteration, seed값을 넣고 score가 얼마나 감소하는지 return 받습니다.
이렇게 Permutation Importance가 구해지고 나면 실험을 통해 적절한 Cutoff를 정하여 추후 학습
시 이 피쳐들을 제거합니다.
성능 향상이 약 CV, LB 0.02~0.03 정도 있었습니다.
11. https://dacon.io 11
2. 모델 구축 & 검증 – 모델링
FeatureSet1, FeatureSet2는 조금 다른 Feature로 거의 비슷한데, 다양성을 추가하기 위해서 추가
LGBM Dart, gbdt는 Model을 한번 돌리고 Target의 예측 값을 추가하여 다시 한 번 더 Model 예측
수행
Featureset1 lgbm dart, lgbm gbdt, catboost, xgboost와 Featureset2 lgbm dart, lgbm gbdt,
catboost, xgboost 총 8개의 output을 모아서 stacking 수행, 2nd Layer는 Ridge 사용
12. https://dacon.io 12
2. 모델 구축 & 검증 – 모델링
그 후 2개의 DeepLearning Model을 수행
한 개는 Target별로 각각 예측을 수행했고 하나는 Target 4개를 한꺼번에 예측하는 Model
1등 점수가 너무 높아서 왠지 LightGBM으로는 안될 것 같아 대회 막바지에 Deep Learning 수행
rho별로 dst에 일정 배수(1e9, 1e10등)을 곱하고 log, sqrt로 변환
Activation을 Swish 혹은 Mish를 활용
Deep Learning은 Multi Output으로 만들 수 있어서 통합 Target으로 하니 성능 향상
모델은 위에서 Feature Engineering한 결과를 일반 MLP를 수행한 것과 dst, src, rho만 넣은 1d
convolution, 마찬가지로 dst, src, rho만 넣은 LSTM을 수행
LSTM Attention, Convolution LSTM, GRU, Seq2Seq 등 이것저것 해봤는데 큰 성능 향상 없음
Deep Learning 최종은 약 0.89
13. https://dacon.io 13
2. 모델 구축 & 검증 – 모델링
Deep Learning과 Tree 계열 Model의 Ensemble 시 점수 향상이 큼
Deep Learning 모델 끼리 Target별로 가중치를 다르게 하여 Ensemble 수행
Deep Learning과 Tree 계열 Model도 마찬가지로 Target별로 가중치를 다르게 하여 Ensemble 수
행
Tree 계열: 0.8
Deep Learning: 0.89
Ensemble: 0.791
14. https://dacon.io 14
3. 결과 및 결언 – 대회 후기
대회 후기
• 대회는 항상 힘들고 어렵습니다.
• 이번에도 좋은 성적을 거두어서 기분이 좋기도 하고 아쉽기도 합니다.
• 딥러닝에 많은 공부가 되었고 다음엔 더 잘 할 수 있을 것 같습니다!
• 같이 팀으로 해서 정말 많이 배우고 즐거웠습니다.