incastle의 콩나물
Auxiliary Target [Google Brain - Ventilator Pressure Prediction] 본문
python/kaggle
Auxiliary Target [Google Brain - Ventilator Pressure Prediction]
incastle 2021. 11. 9. 16:17Google Brain - Ventilator Pressure Prediction대회가 끝나고 승자의 커널들을 보다 처음보는 개념이 있어서 공유한다.
Auxiliary Target이라는 건데 직역하면 '보조 타겟' 이다.
이 대회의 Target value는 pressure이라는 numeric 변수이고, sequence형태의 데이터를 predict해야한다.
TensorFlow Transformer - [0.112]
Explore and run machine learning code with Kaggle Notebooks | Using data from vent-transformer
www.kaggle.com
이 때 pressure 값만 target으로 예측하는 것 외에도 'pressure.diff()' 및 'pressure.cumsum()'을 Auxiliary Target으로 사용하여 함께 예측하는데 사용했다. 이 방법으로 성능 스코어를 꽤 상승시켰다고 한다.
자세한 코드는 위 케글 노트북에 정리됐고,
Auxiliary Target 부분만 공유를 하자면 다음과 같다.
앞서 설명했던 Auxiliary Target을 만드는 부분
train['pressure_diff'] = train.groupby('breath_id').pressure.diff().fillna(0)
train['pressure_integral'] = train.groupby('breath_id').pressure.cumsum()/200
## transformer을 사용하기 위해서 데이터 형태를 (샘플수, sequence길이, target feature길이)로 변환
targets = train[['pressure', 'pressure_diff', 'pressure_integral']].to_numpy().reshape(-1,80,3)
모델을 학습할 때도 최종 output은 3차원으로 만들고
outputs = layers.Dense(3, activation="linear")(x)
model = keras.Model(inputs=inputs, outputs=outputs)
최종 예측 값에 대한 걸 받아올 때는 진짜 target인 'pressure'만 가져오고, 이를 다시 펴주는(?) 약간의 작업을 해준다.
oof_preds.append( model.predict(X_valid, verbose=VERBOSE)[:,:,0].squeeze().reshape(-1, 1) )
Comments