使用列表作为惩罚的tensorflow中的自定义损失函数

时间:2018-12-16 20:30:10

标签: python tensorflow customization tensor loss-function

我是tensorflow的新手,在定义客户流失问题的自定义损失函数时遇到了问题,其中包括值列表作为惩罚。

到目前为止,我复制了均方误差函数,该函数用整数惩罚错误的预测。

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

我想使用此功能列(或列表)作为惩罚,从而对高度有价值的客户提高错误预测的准确性。我很高兴每个想法都能做到这一点,甚至使用S型函数作为二进制分类案例也是如此。

谢谢!

0 个答案:

没有答案