Quero prever algum valor e estou tentando obter alguma previsão que otimize entre ser o mais baixo possível, mas ainda ser maior que . Em outras palavras: Y ( x ) Y ( x ) custo { Y ( x ) ≳ Y ( x ) } > > custo { Y ( x ) ≳ Y ( x ) }
Eu acho que uma regressão linear simples deve funcionar totalmente bem. Então, eu sei como implementar isso manualmente, mas acho que não sou o primeiro com esse tipo de problema. Existem pacotes / bibliotecas (de preferência python) por aí fazendo o que eu quero fazer? Qual é a palavra-chave que preciso procurar?
E se eu conhecesse uma função onde . Qual é a melhor maneira de implementar essas restrições?
machine-learning
logistic-regression
asPlankBridge
fonte
fonte
Respostas:
Se eu entendi direito, você quer errar ao superestimar. Nesse caso, você precisa de uma função de custo assimétrica apropriada. Um candidato simples é ajustar a perda ao quadrado:
onde é um parâmetro que você pode usar para trocar a penalidade de subestimação contra superestimação. Valores positivos de penalizam a superestimação, portanto, você deseja definir negativo. Em python, isso parece- 1 < α < 1 α α
def loss(x, a): return x**2 * (numpy.sign(x) + a)**2
Em seguida, vamos gerar alguns dados:
Por fim, faremos nossa regressão
tensorflow
, uma biblioteca de aprendizado de máquina do Google que oferece suporte à diferenciação automatizada (simplificando a otimização baseada em gradiente de tais problemas). Vou usar este exemplo como ponto de partida.cost
é o erro quadrático regular, enquantoacost
é a função de perda assimétrica mencionada acima.Se você usar,
cost
você obtémSe você usar,
acost
você obtémacost
claramente tenta não subestimar. Não verifiquei a convergência, mas você entendeu.fonte
acost
Porém, uma pergunta para a definição da função. Importa que você calculey_model-Y
duas vezes?Escolha uma função de perda assimétrica. Uma opção é a regressão quantílica (linear, mas com diferentes inclinações para erros positivos e negativos).
fonte