Olá colegas trituradores de números
Eu quero gerar n pontuações aleatórias (junto com um rótulo de classe) como se tivessem sido produzidas por um modelo de classificação binária. Em detalhes, são necessárias as seguintes propriedades:
- cada pontuação está entre 0 e 1
- toda pontuação está associada a um rótulo binário com os valores "0" ou "1" (este é a classe positiva)
- a precisão geral das pontuações deve ser, por exemplo, 0,1 (<- parâmetro do gerador)
- a proporção de pontuações com o rótulo "1" deve ser maior que a precisão geral na seção superior e menor na seção inferior (<- a "qualidade do modelo" também deve ser um parâmetro do gerador)
- as pontuações devem ser de tal maneira que uma curva roc resultante seja suave (e não por exemplo, que várias pontuações com o rótulo "1" estejam no topo e o restante das pontuações com o rótulo "1" esteja na parte inferior de a lista).
Alguém tem uma idéia de como abordar isso? Talvez através da geração de uma curva roc e depois gerando os pontos dessa cura? Desde já, obrigado!
Respostas:
Algum tempo se passou e acho que posso ter uma solução em mãos. Descreverei brevemente minha abordagem para lhe dar uma idéia geral. O código deve ser suficiente para descobrir os detalhes. Eu gosto de anexar código aqui, mas é muito, e o stackexchange não facilita. É claro que estou feliz em responder a quaisquer comentários, também aprecio qualquer crítica.
O código pode ser encontrado abaixo.
A estratégia:
Aqui está um exemplo de curva ROC para AUC = 0,6 e precisão geral = 0,1 (também no código abaixo)
Notas:
código:
fonte