Você está na página 1de 9

Anlise ROC

Felipe Castro da Silva

felipe@dpi.inpe.br
So Jos dos Campos, 6 de Dezembro de 2006

1 Introduo
ROC

1 uma tcnica para visualizar, avaliar, organizar e selecionar classicadores baseado em suas

performances. Para realizar estas anlises, grcos ROC podem mostrar o limiar entre taxas de acertos e alarmes falsos (taxas de erros) dos classicadores. Um dos primeiros usos dos grcos ROC em aprendizado por mquina foi desenvolvido por [Spackman, 1989], que demonstrou a utilidade das curvas ROC na avaliao e comparao entre algoritmos. A anlise ROC tambm tem sido de grande utilidade para visualizar e anali-

sar o comportamento de sistemas de diagnstico [Swets, 1988], principalmente na medicina. Em [Vilarino et al., 2006] os grcos ROC so utilizados para otimizar o limiar que classica classes de contrao ou no contrao intestinal em imagens geradas atravs no exame de endoscopia. Atualmente h um grande crescimento no uso de grcos ROC na comunidade de aprendizado por mquina, em parte pelo uso desta tcnica na anlise de classicadores. Grcos ROC so conceitualmente simples, mas existem algumas complexidades que surgem quando utilizados. Existem alguns conceitos vagos e diculdades quando so usados na prtica. Todas as denies descritas neste trabalho foram baseadas no trabalho de [Fawcett, 2005].

2 Performance dos Classicadores


Alguns classicadores geram como sada valores contnuos (e.g., um classicador que gera a probabilidade de uma instncia pertencer a uma dada classe), para os quais diferentes limiares podem ser aplicados para gerar diferentes conjuntos de sada (em um classicador contnuo pode-se aplicar um limiar para binariz-lo, i.e. gerar duas classes). Outros, geram resultados discretos indicando somente a classe. Considera-se um conjunto de amostras, onde uma instncia

pode assumir valores no conjunto

p, n,

positive e negative respectivamente. Tendo-se um classicador e uma instncia pode-se ter

1 Sigla para 2 Neste contexto,

Receiver Operating Characteristics.

instncia representa um elemento que no se sabe a qual classe pertence e deseja-se classic-lo.

situaes. Se a instncia positive e classicada como positive, conta-se como true positive; se classicada como negative, conta-se como false negative. Se a instncia negative e classicada como tal, conta-se como true negative; se classicada como positive, conta-se como false positive. Portanto, tendo um classicador e um conjunto de instncias pode-se construir uma matriz de confuso de

por

2,

no caso de

classes. Esta matriz serve como base para muitas mtricas que

podem ser aplicadas a classicao. A Figura 1 mostra a matriz de confuso.

Figura 1: Matriz de Confuso gerada apartir de um conjunto de instncias.

O conjunto de Equaes 1 demonstra as mtricas que podem ser calculadas a partir da matriz de confuso. Destacam-se as mtricas tp rate (tambm chamado de taxa de acerto do produtor) e
fp rate (tambm chamado de falso alarme do produtor) que serviro como base para a construo

do espao ROC. A mtrica

precision

a taxa de acerto do usurio, isto , quantas instncias de

uma determinada classe o classicador acertou. A mtrica

accuracy 2

representa a taxa de acerto classes e o nmero total de

de todo o classicador, isto , a razo entre a soma dos acertos das instncias.

tp rate = precision = accuracy =

TP P TP T P +F P

f p rate =

FP N
(1)

recall = tp rate = F measure =

T P +T N P +N

TP P 2(precision+1) recall

3 Grcos ROC
Antes de denir como so construdos os grcos ROC, tem-se que denir o espao em que estas curvas sero representadas. Alm disso, apresenta-se um algoritmo para gerar as curvas ROC.

3.1

Espao ROC

Os grcos ROC so bidimensionais, onde no eixo o valor de

plota-se o valor de

tp rate

e no eixo

f p rate.

A Figura 2 mostra um grco ROC simples, somente com classicadores

discretos. Classicadores discretos so aqueles que geram como sada somente uma classe. Estes classicadores fornecem um par (f p

rate, tp rate)

correspondendo a um ponto no espao ROC.

Muitos pontos so importantes no espao ROC. O ponto inferior esquerdo

(0, 0)

representa

uma estratgia que nunca gera uma classicao positiva; como um classicador que no comete

Figura 2: Grco ROC mostrando vador,

classicadores discretos.

dito um classicador conser-

o inverso de

E, D

um classicador perfeito e

dito aleatrio.

erros false positives, mas tambm no classica nenhum true positives.

A estratgia oposta, de

incondicionalmente gerar true positives representada pelo ponto superior direito O ponto classicador

(1, 1).

(0, 1) D.

representa uma classicao perfeita.

Este caso pode ser representado pelo

De maneira geral, um ponto, no espao ROC, melhor que outro se ele est mais Classicadores no lado esquerdo do grco ROC

noroeste (tp

rate maior e/ou f p rate menor).

(perto do eixo Y) so ditos conservadores, pois fazem classicaes positivas somente com uma evidncia forte, portanto comentem poucos erros false positives. Classicadores no lado direito

so ditos liberais, pois fazem classicaes positivas com pouca evidncia, mas comentem muitos erros false positives. Na Figura 2,

mais conservador que

B. (0, 0)
ao ponto

Qualquer classicador que est abaixo da linha diagonal que vai do ponto dito pior do que um classicador aleatrio.

(1, 1)

Por isso, o tringulo inferior de um grco ROC

est geralmente vazio. Pode-se ressaltar que se um classicador produz pontos abaixo da diagonal, pode-se neg-lo para produzir pontos acima dela. Na Figura 2,

igual

negado.

3.2

Curvas no Espao ROC

Muitos classicadores, tais como rvores de deciso ou conjunto de regras, so desenvolvidos para produzir uma nica classe, i.e.

ou

n,

para cada instncia. Portanto, um classicador discreto

gera apenas um ponto no espao ROC. Alguns classicadores, tais como Naive Bayes ou redes neurais, naturalmente produzem uma probabilidade ou valor para cada instncia que representa o grau de representatividade da classe sobre aquela instncia. A partir destes classicadores, pode-se gerar classicadores discretos com uma simples aplicao de um limiar. Cada limiar produzir um conjunto distinto de pontos no espao ROC.

A Figura 3 mostra um exemplo de uma curva ROC produzida a partir de na Tabela 1.


Inst 1 2 3 4 5 6 7 8 9 10 Classe p p n p p p n n p n Valor 0.9 0.8 0.7 0.6 0.55 0.54 0.53 0.52 0.51 0.505 Inst 11 12 13 14 15 16 17 18 19 20 Classe p n p n n n p n p n Valor 0.4 0.39 0.38 0.37 0.36 0.35 0.34 0.33 0.30 0.1

20 instncias descritas

Tabela 1: Instncias geradas por um classicador probabilstico.

Figura 3: Uma curva ROC criada pela limiarizao do conjunto de teste (Tabela 1).

Qualquer curva ROC que gerada por um nmero nito de instncia, produz uma funo degrau no espao ROC. Quanto maior o nmero de instncias, mais contnua a curva ca. No Anexo 1 deste trabalho apresenta-se uma funo para gerao dos pontos no espao ROC. Esta funo foi adaptada para gerar curvas ROC e foi escrita no MatLab. importante ressaltar que cada ponto criado no tempo depende do ponto

t do processo de gerao da curva ROC,

t 1.

Caso isso no seja considerado, a curva gerar uma nuvem de pontos e

no ponto de uma curva.

4 rea Abaixo da Curva ROC


Uma curva ROC uma demonstrao bidimensional da performance de um classicador. Para comparar classicadores preciso reduzir a curva ROC a um valor escalar. Um mtodo comum para realizar esta reduo calcular a rea abaixo da curva ROC (AUC ). Como a AUC uma poro da rea do quadrado unitrio (espao ROC) seus valores vo de

0.0

1.0.

Entretanto,

como classicadores piores que os aleatrios no so encontrados no espao ROC, no existem classicadores com AUC menor que 0.5 (0.5 a rea de uma classicador aleatrio). A Figura 4 mostra a rea abaixo de duas curvas ROC,

B.

O classicador

possui uma

rea maior e, portanto, tem uma melhor performance mdia. possvel que em algumas regies do espao ROC um classicador seja melhor que outro. Na Figura 4 o classicador melhor que

geralmente

exceto em

f p rate > 0.6

onde o

leva uma pequena vantagem. No Anexo 2 deste

trabalho apresenta-se uma funo para calcular AUC. Esta funo foi escrita no MatLab e retorna um valor escalar correspondente a AUC.

Figura 4: rea abaixo ds curvas ROC em alguns pontos

B.

Em mdia o classicador

melhor que

A,

porm

tem melhor performance que

B.

5 Mdia entre Curvas ROC


Alguns pesquisadores assumem que um grco ROC pode ser usado para selecionar o melhor classicador, simplesmente plotando-os no espao ROC e observando qual deles dominante. Isto no verdade. Sem uma medida de varincia no possvel comparar os classicadores. Fazer a mdia de curvas ROC uma operao simples. Toda a mdia feita no espao unidimensional, porm as curvas ROC encontram-se no espao ROC que, por sua vez bidimensional.

3 Sigla

de

Area Under Curve


5

Por isso, as curvas ROC podem ser projetadas em uma dimenso, sendo possvel o clculo da mdia. A questo , qual a projeo apropriada? Apresenta-se a seguir dois mtodos para realizar a mdia entre curvas ROC. O primeiro mtodo a mdia vertical das curvas ROC. Esse processo muito simples, e consiste em tomar um passo constante no eixo respectivos valores do eixo

f p rate

e calcular a mdia, entre as curvas ROC, dos

tp rate.

Essa medida adequada quando o passo do eixo

f p rate

pode

ser xado, ou quando uma simples medida de varincia desejada. A Figura 5 mostra o clculo da mdia vertical entre as curvas ROC

B.

O segundo mtodo a mdia dos limiares. Ao invs da mdia ser baseada na posio dos pontos no espao ROC, como o caso da vertical, ela baseada nas amostras geradas por diferentes limiares. Para cada limiar acha-se o ponto correspondente em cada curva ROC e assim faz-se a mdia desses pontos.

Figura 5: A curva ROC

representa a mdia vertical entre as curvas ROC

B.

6 ROC com Mltiplas Classes


At agora discutiu-se o problema da anlise ROC sobre trabalhos so realizados utilizando somente

classes.

Na literatura, a maioria dos

classes. Os dois eixos do espao ROC representam

fronteiras entre erros (false positives) e benefcios (true positives) que um classicador faz entre classes. Com

classes a matriz de confuso torna-se uma matriz de dimenso

nxn,

contendo uma

diagonal principal de tamanho

(acertos) e

n2 n

possveis erros. Uma maneira para manipular

classes produzir

grcos ROC diferentes, um para cada classe. Se

o conjunto de todas

as classes, o grco ROC

plota a performance do classicador usando a classe

ci

como a classe

positive (Equao 2), e todas as outras classes como negatives (Equao 3).

Pi = ci

(2)

Ni =
j =i

cj C n classes.

(3)

A rea abaixo da curva ROC tambm ir mudar quando temos

Uma alternativa para

o clculo da rea apresentada por [Provost and Domingos, 2001]. Eles calcularam as AUCs para o problema de mltiplas classes gerando uma curva para cada classe, medindo a rea abaixo da curva, e ento somando as AUCs de todas as classes, dando peso maior para a classe que prevalece sobre as outras (Equao 4).

AU Ctotal =
ci C
onde

AU C (ci )p(ci) ci .
Esta denio precisa apenas de

(4)

AU C (ci )

a rea abaixo da curva da classe

|C |

clculos

de AUC. Em [Hand and Till, 2001] apresentado uma simples generalizao para o problema do clculo da AUC para mltiplas classes. Eles desejavam uma medida que no dependesse da distribuio das classes e dos custos dos erros (Equao 5).

AU Ctotal =
onde

2 |C |(|C | 1)

AU C (ci , cj )
(ci ,cj )C

(5)

AU C (ci , cj )

a rea abaixo da curva ROC das classes

ci

cj .

Em [Everson and Fieldsend, 2006] apresentado um novo e recente mtodo para a anlise multiclasses.

7 Concluso
Uma viso sobre o que a anlise ROC foi apresentada neste trabalho. Apesar de ser um mtodo relativamente simples, a anlise ROC amplamente utilizada para visualizar, avaliar, organizar e selecionar classicadores baseado em suas performances. Existe uma limitao no processo apresentado, o fato de trabalhar-se sempre com duas classes para avaliar os classicadores. multiclasses. Existem na literatura algumas propostas de realizar a anlise

Algumas delas foram apresentadas e so baseadas em tomar-se pares de classes e

depois combin-las. Outra possibilidade que pode-se aplicar, a interpolao de classicadores. Isso pode ser

necessrio quando a performance desejada obtida com a combinao de mais de um classicador. Em [van der Putten and van Someren, 2000] apresentado um exemplo de como resolver este problema.

Referncias
[Everson and Fieldsend, 2006] Everson, R. M. and Fieldsend, J. E. (2006). Multi-class roc analysis froma multi-objective optimisation perspective. Pattern Recognition Letters, 27:918927.

[Fawcett, 2005] Fawcett, T. (2005). An introduction to roc analysis. Pattern Recognition Letters, pages 861874.

[Hand and Till, 2001] Hand, D. J. and Till, R. J. (2001). A simple generalization of the area under the roc curve to multiple class classication problem. Machine Learning, 45(2):171186.

[Provost and Domingos, 2001] Provost, F. and Domingos, P. (2001). Well-trained: Pets: Improving probability estimation trees. CeDER Working Paper.

[Spackman, 1989] Spackman, K. A. (1989). Signal detection theory: Valuable tools for evaluating inductive learning. Proc. Sixth Internat. Workshop on Machine Learning, pages 160163.

[Swets, 1988] Swets, J. (1988). Measuring the accuracy of diagnostic systems. Science, 240:1285 1293.

[van der Putten and van Someren, 2000] van der Putten, P. and van Someren, M. (2000).

Coil

challenge 2000: The insurance company case. Technical report, Institute of Advanced Computer ScienceS, Universiteit van Leiden.

[Vilarino et al., 2006] Vilarino, F., Kuncheva, L. I., and Radeva, P. (2006). Roc curves and video analysis optimization in intestinal capsule endoscopy. Pattern Recognition Letters, pages 875 881.

Anexo 1
function graph = ROC_Graph(L_class, f) tam_L_class = size(L_class); % sort L_class and f for i=1:tam_L_class(2) m = 0.0; m_index = i; for j=i:tam_L_class(2) if (f(j) > m) m = f(j); m_index = j; end; end; aux = f(m_index); f(m_index) = f(i); f(i) = aux; aux = L_class(m_index); L_class(m_index) = L_class(i); L_class(i) = aux; end; %count number of P and N P = 0; N = 0; for i=1:tam_L_class(2) if (L_class(i) == 'p') P = P + 1; else N = N + 1; end; end; TP = 0; FP = 0; R_index = 0; f_prev = -1; i = 1; while (i <= tam_L_class(2)) if (~(f(i) == f_prev)) R_index = R_index + 1; R(R_index, 1) = FP / N; R(R_index, 2) = TP / P; f_prev = f(i); end; if (L_class(i) == 'p') TP = TP + 1; else FP = FP + 1; end; i = i + 1; end; R_index = R_index + 1; R(R_index, 1) = FP / N; R(R_index, 2) = TP / P; hold on; plot(R(:, 1), R(:, 2), '*r'); plot(R(:, 1), R(:, 2));
9

Anexo 2
function area = ROC_Area(L_class, f) tam_L_class = size(L_class); % sort L_class and f for i=1:tam_L_class(2) m = 0.0; m_index = i; for j=i:tam_L_class(2) if (f(j) > m) m = f(j); m_index = j; end; end; aux = f(m_index); f(m_index) = f(i); f(i) = aux; aux = L_class(m_index); L_class(m_index) = L_class(i); L_class(i) = aux; end; %count number of P and N P = 0; N = 0; for i=1:tam_L_class(2) if (L_class(i) == 'p') P = P + 1; else N = N + 1; end; end; TP = 0; FP = 0; TP_prev = 0; FP_prev = 0; f_prev = -1; i = 1; A = 0; while (i <= tam_L_class(2)) if (~(f(i) == f_prev)) A = A + Trapezoid_Area(FP, FP_prev, TP, TP_prev); f_prev = f(i); FP_prev = FP; TP_prev = TP; end; if (L_class(i) == 'p') TP = TP + 1; else FP = FP + 1; end; i = i + 1; end; A = A + Trapezoid_Area(N, FP_prev, N, TP_prev); A = A / (P * N); area = A;

Você também pode gostar