我是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型函数作为二进制分类案例也是如此。
谢谢!