그 외에 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)
    )
    
    신간 소식 구독하기
    뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.