1

Ich habe ein Regressionsproblem, aber die Kostenfunktion ist anders: Die Kosten für eine zu niedriger Schätzung als eine Überhöhung höher sind. Wenn zum Beispiel der vorhergesagte Wert < wahrer Wert ist, sind die Kosten 3 * (richtig vorhergesagt)^2; Wenn der vorhergesagte Wert> wahrer Wert ist, sind die Kosten 1 * (richtig vorhergesagt)^2.Unterschiedlich Kosten für Unterschätzung und Überschätzung

I klassischen Regressionsmodelle unter Verwendung von wie lineare Regression, zufällige Wald usw. Welche Änderungen sollte ich für diese Kostenfunktion anzupassen machen denke?

Wie ich weiß, der ML-API wie Scikit-Learn nicht die Funktionalität bieten, um direkt die Kostenfunktion zu ändern. Wenn ich diese APIs verwenden muss, was kann ich tun?

Irgendwelche empfohlene Lesung?

Antwort

1

können Sie verwenden Tensorflow (oder Theanos) für Funktionen individuell Kosten. Die übliche lineare Regressionsimplementierung ist here.

Um herauszufinden, wie Sie Ihre individuelle Kostenfunktion Blick auf eine huber Verlustfunktion implementiert in tensorflow Sie könnte helfen, implementieren kann. Hier kommt Ihre individuelle Kostenfunktion, die Sie in dem verknüpften Code ersetzen sollten so statt

cost = tf.reduce_sum(tf.pow(pred-Y, 2))/(2*n_samples) 

im verknüpften Code musst du:

error = y_known - y_pred 
condition = tf.less(error, 0) 
overestimation_loss = 1 * tf.square(error) 
underestimation_loss = 3 * tf.square(error)  
cost = tf.reduce_mean(tf.where(condition, overestimation_loss, underestimation_loss)) 

hier, wenn die Bedingung wahr ist, Fehler geringer ist als Null, was bedeutet, dass y_known kleiner ist als y_pred, so dass Sie eine Überschätzung haben und die tf.where-Anweisung wird also overestimation_loss wählen, sonst unterschätzter Verlust.

Das Geheimnis ist, dass Sie beide Verluste berechnen werden und wählen, wo sie tf.where und Zustand mit verwenden.

Update:

Wenn Sie möchten, dass andere Bibliotheken verwenden, wenn huber loss implementiert Sie einen Blick können Ideen zu bekommen, weil huber Verlust eine bedingte Verlustfunktion ähnlich wie bei Ihnen ist.

Verwandte Themen