그 외에 Subtype 타깃 또한 별도로 손실 함수를 구성해 총 3개의 손실 함수를 더한 것을 최종 에러로 계산합니다.
FINAL_LOSS_WEIGHT = 1.2 # 최종 loss의 영향력 조절
W_a = 0.25 # 각 submetrics의 가중치
NEW_IDENTITY_COLUMNS = [
"homosexual_gay_or_lesbian",
"jewish",
"muslim",
"black",
"white",
"psychiatric_or_mental_illness",
]
# Overall
overall = np.ones((len(df_train),))
# Bias
any_subgroup_binary = (
df_train[NEW_IDENTITY_COLUMNS].fillna(0).values >= 0.5
).any(axis=1)
positive_binary = df_train["target"].values >= 0.5
bpsn_binary = (
(~any_subgroup_binary & positive_binary)
| (any_subgroup_binary & ~positive_binary)
)