Я новичок в tenorflow и у меня проблемы с определением пользовательской функции потерь для проблемы оттока клиентов, которая включает в себя список значений в качестве штрафа.
До сих пор я реплицировал функцию среднеквадратичной ошибки, которая штрафует неправильнопредсказания с целым числом.
def rfm_penalty(y_true, y_pred):
penalty = # Integer value, to be replaced by list
loss = tf.where(tf.less(y_true * y_pred, 0),
penalty * tf.square(y_true - y_pred), # penalize negat. (wrong) preds
tf.square(y_true - y_pred)) # no penalty for pos. preds
return tf.reduce_mean(loss, axis=-1)
Этот работает, но я хотел бы изменить его: ранее я рассчитал метрику, которая измеряет ценность клиента, называемую RFM (для недавности, частоты и денежной стоимости прошлых покупок),Эта метрика представляет собой целочисленное значение от 3 до 12, которое суммирует три метрики R, F и M. Оно хранится в столбце функций моего df_train.
df_train['RFM_Score'] = [3,6,5,9,11,12,4,...,4] # same dimensions as y_true
Я хотел бы использовать этот столбец функций(или перечислить) в качестве штрафа, тем самым штрафуя неправильные прогнозы выше для очень ценных клиентов.Я был бы рад за любую идею сделать это, даже лучше с сигмовидной функцией, так как это случай двоичной классификации.
Спасибо!