Compreendendo a curva ROC

57

Estou tendo problemas para entender a curva ROC.

Existe alguma vantagem / melhoria na área sob a curva ROC se eu construir modelos diferentes de cada subconjunto exclusivo do conjunto de treinamento e usá-lo para produzir uma probabilidade? Por exemplo, se tem valores de { um , um , um , um , b , b , b , b } , e eu construir modelo A , usando um dos valores de 1ª a 4ª de y valores e 8º dia 9 de y e construir modelo B usando dados permanentes de trem. Por fim, gere probabilidade. Quaisquer pensamentos / comentários serão muito apreciados.y{a,a,a,a,b,b,b,b}AayyB

Aqui está o código r para uma melhor explicação para minha pergunta:

Y    = factor(0,0,0,0,1,1,1,1)
X    = matirx(rnorm(16,8,2))
ind  = c(1,4,8,9)
ind2 = -ind

mod_A    = rpart(Y[ind]~X[ind,])
mod_B    = rpart(Y[-ind]~X[-ind,])
mod_full = rpart(Y~X)

pred = numeric(8)
pred_combine[ind]  = predict(mod_A,type='prob')
pred_combine[-ind] = predict(mod_B,type='prob')
pred_full          = predict(mod_full, type='prob')

Então, minha pergunta é, a área sob a curva ROC de pred_combinevs pred_full.

Tay Shin
fonte
3
Um exemplo melhor faria muito para melhorar a questão.
Mvctas
Meu entendimento é que você deseja aumentar a AUC escolhendo algumas amostras específicas? Se esse é o seu objetivo, acredito firmemente que esta abordagem de seleção parcial de amostras esteja completamente errada, pelo menos se o seu objetivo for encontrar uma boa medida para o desempenho da classificação.
Rapaio 2/07

Respostas:

174

Não sei se entendi a pergunta, mas como o título pede explicação das curvas do ROC, tentarei.

As curvas ROC são usadas para ver quão bem seu classificador pode separar exemplos positivos e negativos e para identificar o melhor limite para separá-los.

Para poder usar a curva ROC, seu classificador deve ser classificado - ou seja, ele deve ser capaz de classificar exemplos de modo que aqueles com classificação mais alta provavelmente sejam positivos. Por exemplo, a Regressão logística gera probabilidades, que é uma pontuação que você pode usar para classificação.

Desenho de curva ROC

Dado um conjunto de dados e um classificador de classificação:

  • ordenar os exemplos de teste pela pontuação do maior para o menor
  • (0,0)
  • x
    • x1/pos
    • x1/neg

posneg

Essa bela imagem animada por gif deve ilustrar esse processo com mais clareza

construindo a curva

yx

Área sob ROC

área sob roc

A área sob a curva ROC (sombreada) mostra naturalmente a que distância a curva está da linha de base. Para a linha de base, é 0,5 e, para o classificador perfeito, é 1.

Você pode ler mais sobre a AUC ROC nesta pergunta: O que a AUC representa e o que é?

Selecionando o melhor limite

Descreverei brevemente o processo de seleção do melhor limite e mais detalhes podem ser encontrados na referência.

Para selecionar o melhor limite, você vê cada ponto da sua curva ROC como um classificador separado. Este mini classificador usa a pontuação que o ponto obteve como limite entre + e - (ou seja, classifica como + todos os pontos acima do atual)

Dependendo da fração pos / neg em nosso conjunto de dados - paralelo à linha de base no caso de 50% / 50% -, você cria Linhas de Precisão ISO e escolhe aquela com a melhor precisão.

Aqui está uma figura que ilustra isso e, para mais detalhes, convido novamente a referência

selecionando o melhor limiar

Referência

Alexey Grigorev
fonte
Obrigado pelo ótimo comentário! Lamento que eu não poderia upvote sua resposta parece que precisa ter mais de 15 reputação :(
Tay Shin
Apenas curioso, o tamanho da sua etapa teria que depender do número de rótulos positivos / negativos produzidos pelo seu classificador, correto? Ou seja, no gif, o tamanho da etapa para cima é 0,1, se você tivesse um rótulo extra positivo (no lugar de um rótulo negativo), a "curva" terminaria em 1,1 no eixo vertical (ou talvez esteja faltando alguma coisa ?). Então, nesse caso, o tamanho do seu passo precisa ser menor?
Kyphos
Não, o tamanho da etapa depende do número de exemplos positivos / negativos no conjunto de dados, não da precisão do classificador.
Alexey Grigorev
2
@gung entendido. Alexey: em vez de exemplos positivos e negativos, acho que deveria ser: verdadeiros positivos e falsos positivos. Você pode ver minha edição da resposta, que foi revertida pelo gung. graças
Escachator
3
@AlexeyGrigorev, adore a resposta que você dá e vote. Não tenho certeza se existem duas definições de ROC. Refiro-me à definição do ROC aqui ( en.wikipedia.org/wiki/Receiver_operating_characteristic ), o eixo x deve ser uma taxa de falsos positivos, que é (número de previsões positivas, mas negativas) / (# do total negativo), acho que na referência, acho que o eixo x não está desenhando taxa de falso positivo, o que não considera o (# do total negativo)?
Lin Ma