ich habe einen Entscheidungsbaum mit GBM implementiert. Die Daten werden zuerst in Training (X_train, y_train) und Test (X_test, y_test) unterteilt.
Dann wird eine individuelle Loss-Function implementiert (betaloss ist eine zuvor definierte Variable):
Code: Alles auswählen
def custom_asymmetric_train(y_true, y_pred):
residual = ((y_true - y_pred)^2 + betaloss*10).astype("float")
grad = np.where(residual>6, -2*10.0*residual, -2*residual)
hess = np.where(residual>6, 2*10.0, 2.0)
return grad, hess
def custom_asymmetric_valid(y_true, y_pred):
residual = ((y_true - y_pred)^2 + betaloss*10).astype("float")
loss = np.where(residual > 6, (residual**2)*10.0, residual**2)
return "custom_asymmetric_eval", np.mean(loss), False
Code: Alles auswählen
gbm = lightgbm.LGBMClassifier()
gbm.set_params(**{'objective': custom_asymmetric_train})
Code: Alles auswählen
gbm.fit(
X_train,
y_train,
eval_set=[(X_test, y_test)],
eval_metric=custom_asymmetric_valid,
verbose=False,
)
Weiß jemand woran das liegen könnte?
Danke!!