Creo que una regresión lineal simple debería funcionar totalmente bien. Así que sé cómo implementar esto manualmente, pero supongo que no soy el primero con este tipo de problema. ¿Hay algún paquete / biblioteca (preferiblemente python) que haga lo que quiero hacer? ¿Cuál es la palabra clave que debo buscar?
¿Qué pasaría si supiera una función donde ? ¿Cuál es la mejor manera de implementar estas restricciones?
machine-learning
logistic-regression
asPlankBridge
fuente
fuente
Respuestas:
Si te entiendo correctamente, quieres equivocarte por sobreestimar. Si es así, necesita una función de costo asimétrica adecuada. Un candidato simple es ajustar la pérdida al cuadrado:
donde es un parámetro que puede utilizar para compensar la penalización de la subestimación por la sobreestimación. Los valores positivos de α penalizan la sobreestimación, por lo que querrá establecer α negativo. En python esto parece- 1 < α < 1 α α
def loss(x, a): return x**2 * (numpy.sign(x) + a)**2
A continuación, generemos algunos datos:
Finalmente, haremos nuestra regresión en
tensorflow
una biblioteca de aprendizaje automático de Google que admite la diferenciación automatizada (simplificando la optimización basada en gradiente de tales problemas). Usaré este ejemplo como punto de partida.cost
es el error al cuadrado regular, mientras queacost
es la función de pérdida asimétrica mencionada anteriormente.Si
cost
usas obtienesSi
acost
usas obtienesacost
claramente trata de no subestimarlo. No verifiqué la convergencia, pero entiendes la idea.fuente
acost
embargo, hay una pregunta para la definición de la función. ¿Importa que calculesy_model-Y
dos veces?Elija una función de pérdida asimétrica. Una opción es la regresión cuantil (lineal pero con diferentes pendientes para errores positivos y negativos).
fuente