incastle의 콩나물

Auxiliary Target [Google Brain - Ventilator Pressure Prediction] 본문

python/kaggle

Auxiliary Target [Google Brain - Ventilator Pressure Prediction]

incastle 2021. 11. 9. 16:17

Google Brain - Ventilator Pressure Prediction대회가 끝나고 승자의 커널들을 보다 처음보는 개념이 있어서 공유한다. 

 

Auxiliary Target이라는 건데 직역하면 '보조 타겟' 이다. 

Aux선 할 때 그 Aux

 

이 대회의 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