30
Mestrado em Análise de Dados e Sistemas de Apoio à Decisão Disciplina: Extracção e conhecimento de dados I Trabalho nº2: Comparação de métodos de classificação recorrendo aos softwares R e Weka Data: 18 de Novembro de 2005 Aluna: Elisabeth Silva Fernandes Nº 050414012

Disciplina: Extracção e conhecimento de dados I3.1.1- Árvore de decisão- Método J48- C 0.25 _M 2 As vantagens do algoritmo de árvores de decisão estão na grande capacidade

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Disciplina: Extracção e conhecimento de dados I3.1.1- Árvore de decisão- Método J48- C 0.25 _M 2 As vantagens do algoritmo de árvores de decisão estão na grande capacidade

Mestrado em Análise de Dados e Sistemas de Apoio à Decisão

Disciplina: Extracção e conhecimento de dados I

Trabalho nº2: Comparação de métodos de classificação recorrendo aos

softwares R e Weka

Data: 18 de Novembro de 2005

Aluna: Elisabeth Silva Fernandes

Nº 050414012

Page 2: Disciplina: Extracção e conhecimento de dados I3.1.1- Árvore de decisão- Método J48- C 0.25 _M 2 As vantagens do algoritmo de árvores de decisão estão na grande capacidade

2

Índice

1- Introdução

1.1- Objectivo e enunciado do trabalho………….………………………………3

1.2- Análise preliminar dos dados…….…………………………………………4

2- Classificação

2.1-O que é uma árvore de decisão?

2.1.1- Construção de uma árvore de decisão 2.1.2- Como segmentar ou

dividir um nó?

2.1.3- A Poda

2.1.4- Relação Custo-Complexidade- Regra 1-SE

2.2- Análise descriminante………………………………………………………9

3- Aplicação de alguns métodos de classificação ao conjunto de treino ………………10

3.1-Aplicação de alguns métodos de classificação em Weka

3.1.1- Árvore de decisão- Método J48- C 0.25 _M 2

3.1.2- Discriminante Logístico………………………………………….13

3.1.3- Arvore de decisão vs Descriminante logístico…………………...14

3.2- Aplicação de alguns métodos de classificação em R……………………...15

3.2.1- Árvores de decisão

3.2.2- Discriminante linear

3.2.3- Arvores de decisão vs Discriminante Linear

4- Previsão……………………………………………………………………………...22

5- Conclusão……………………………………………………………………………23

Biblografia

Anexos

Page 3: Disciplina: Extracção e conhecimento de dados I3.1.1- Árvore de decisão- Método J48- C 0.25 _M 2 As vantagens do algoritmo de árvores de decisão estão na grande capacidade

3

1 –Introdução

1.1-Objectivo e enunciado do trabalho

O objectivo do trabalho consiste em seleccionar um classificador a partir do conjunto de

treino e com o modelo obtido classificar os exemplos do conjunto de teste.

O trabalho consiste em:

1. Estimar a taxa de erro de dois classificadores utilizando um método de

amostragem:

o árvores de decisão,

o discriminante linear.

3. Estudar o efeito do parametro c no J48 (Weka).

4. Estudo comparativo da taxa de erro entre a árvore de decisão do R (rpart)

e o discriminante linear (lda) do R.

2. Escolher um classificador para classificar os exemplos do conjunto de teste.

Page 4: Disciplina: Extracção e conhecimento de dados I3.1.1- Árvore de decisão- Método J48- C 0.25 _M 2 As vantagens do algoritmo de árvores de decisão estão na grande capacidade

4

1.2- Análise preliminar dos dados

O quadro de dados em estudo tem 620 indivíduos e 15 variáveis sendo a última

variável a classes a que cada individuo pertence.

O quadro seguinte mostra o comportamento das variáveis:

A azul estão representados os indivíduos da classe 0 e a vermelho os da classe 1.

As variáveis 1,4,11,12 só apresentam valores discretos entre 1 e 3, poderão ser variáveis

nominais, logo não fará muito sentido calcular estatísticas destas variáveis no entanto

fiz um summary para ver como se comportam as variáveis em estudo.

Antes da escolha dos classificadores o método de amostragem que utilizei foi a

validação cruzada porque é o método mais fiável uma vez que o número de indivíduos

não é muito elevado. Com a validação cruzada o que o método faz é dividir os dados em

10 partes, selecciona uma parte constrói um classificador com as 9 partes restantes e

testa a classificação com a parte seleccionada, o processo é repetido 10 vezes.

Page 5: Disciplina: Extracção e conhecimento de dados I3.1.1- Árvore de decisão- Método J48- C 0.25 _M 2 As vantagens do algoritmo de árvores de decisão estão na grande capacidade

5

2- Classificação

O objectivo da análise discriminante é determinar uma regra de classificação que

permite afectar um indivíduo a uma de várias classes especificadas a priori com base

nos valores observados de p variáveis associadas ao individuo.

Neste trabalho estuda-se uma pequena parte da classificação, as árvores de

decisão e os descriminantes linear e logístico, para obter as classificações utilizei os

softwares Weka e R.

2.1-O que é uma árvore de decisão?

Uma árvore de decisão utiliza uma estratégia de “dividir-para-conquistar”:

- um problema complexo é decomposto em sub-problemas mais simples;

- recursivamente a mesma estratégia é aplicada a cada sub-problema.

A árvore de decisão é usada para a dedução da classe de um conjunto de

atributos (objecto não-classificado), que possui as seguintes propriedades:

- um nó folha representa uma única classe, mas uma classe pode estar

representada em mais de um nós folha;

- um nó interno é chamado de nó-decisão pois representa em teste sobre o

valor de um atributo do conjunto de dados;

- cada aresta que sai de um nó de decisão até um dos seus nós filhos

representa um dos possíveis resultados do teste sobre o valor do atributo.

Podemos considerar o conjunto de todos os objectos possíveis como pontos num

espaço n-dimensional – com um eixo para cada atributo, enumerando todos os valores

possíveis para o mesmo. Assim, nota-se que cada nó divide o espaço de objectos em k

partições, onde k é o número de arestas que partem o nó. Cada nó da árvore representa

um sub-espaço. O nó-raiz representa o próprio espaço de objectos. Os nós-filho de um

nó representam as partições da partição do espaço representado pelo nó-pai. Os nós-

folha representam as partições em que, pelo menos teoricamente, só estão contidos

elementos da mesma classe.

2.1.1- Construção de uma árvore de decisão:

A ideia base consiste em

- escolher um atributo;

- estender a árvore adicionando um ramo para cada valor do atributo;

- passar os exemplos para as folhas (tendo em conta o valor do atributo

escolhido);

Page 6: Disciplina: Extracção e conhecimento de dados I3.1.1- Árvore de decisão- Método J48- C 0.25 _M 2 As vantagens do algoritmo de árvores de decisão estão na grande capacidade

6

- para cada folha: se todos os exemplos são da mesma classe, associar essa classe

à folha; senão repetir os passos anteriores.

As regras derivadas das árvores – especialmente árvores grandes – são muitas

vezes um pouco complicadas e devem ser reduzidas para uma ajuda interpretativa. É

possivel aumentar a árvore tão grande quanto queiramos, maxT , e obter erro zero (ou

seja, em cada folha está uma observação), mas pode não ser bom para avaliar o futuro

objecto a classificar. Este método é muito mau para avaliar outros valores porque esta

árvore não dá bons resultados num conjunto independente de observações.

O que é que se faz?

Para resolver esta questão existem duas estratégias

1ª- Parar de crescer a árvore mais cedo (nunca deu bons resultados porque

ninguém sabe onde parar!);

2ª- Podar a árvore maxT .

2.1.2- Como segmentar ou dividir um nó?

Para cada nó t vamos escolher a divisão que diminui a impureza, ou seja o

objectivo é que os “filhos sejam mais puros que os pais”. Torna-se então necessário

definir uma medida de impureza de um nó.

1 2( ) ( , ,..., )ki t i p p p

onde ( \ )i ip P t , a qual deve satisfazer:

i) (1,0,...,0) (0,0,...,1) 0i i ;

ii) 1 1 1

, ,...,ik k k

máxima;

A mais popular medida é a Entropia.

Critério da Entropia

Este critério é o que o R usa.

A Entropia é um conceito estabelecido na Teoria da Informação para medir o

grau de aleatoriedade dos valores que uma variável aleatória X pode assumir ou,

fazendo a analogia com o conceito físico, o grau de desordem no sistema considerado:

1

( ) ( ).log ( )n

i i

i

i t p X x p X x

Page 7: Disciplina: Extracção e conhecimento de dados I3.1.1- Árvore de decisão- Método J48- C 0.25 _M 2 As vantagens do algoritmo de árvores de decisão estão na grande capacidade

7

Quanto maior a entropia, maior a aleatoriedade dos valores que X pode assumir,

ou seja, a entropia máxima é encontrada numa variável aleatória de distribuição

uniforme.

Critério de Gini

Este critério é o que o Weka usa e consiste numa generalização da impuridade

da variância, aplicado para duas ou mais categorias.

( ) | . |i j

i j

i t p C c t p C c t

A função dada tem um mínimo igual a zero quando a partição do nó t contém

apenas instâncias da classe j, e um máximo igual a 2

1 1/ 1/n n n - para valores

grandes de n – quando todas as classes foram igualmente frequentes.

2.1.3- A Poda

Após construir a Árvore de Decisão é possível que ela esteja muito ajustada ao

conjunto de treino utilizado e não classifique bem os objectos do conjunto de teste

(overfitting). Para evitar esta situação, os algoritmos indutores acrescentam uma fase de

poda da árvore construída, ou seja, a remoção de alguns nós da árvore aumentando a

generalização da mesma.

A poda pode ser:

- Pré-Poda: executada durante o processo de indução da árvore, impõe um

threshold para a proporção da classe mais frequente para o qual um nó é forçado

ser folha, não prosseguindo o particionamento por este ramo

- Pós-Poda: é executada após a árvore ter sido construído, apartir dos nós-folha, a

sub-árvore formada por eles e seu nó-pai são analisados. Se a taxa de erros de

classificação for reduzida perante uma substituição da sub-árvore por um único

nó terminal, então a árvore é podada nesta parte.

Neste trabalho o tipo de poda usado foi Pós-poda.

Page 8: Disciplina: Extracção e conhecimento de dados I3.1.1- Árvore de decisão- Método J48- C 0.25 _M 2 As vantagens do algoritmo de árvores de decisão estão na grande capacidade

8

2.1.4-Relação Custo-Complexidade- Regra 1-SE

A técnica mais conhecida de podar árvores é a de Breiman & al.(1984)

Seja ( )R t uma medida de qualidade da árvore:

onde T é o conjunto de folhas, ( )p t a probabilidade de atingir a folha e ( )r t o erro na

folha t. O tamanho de T, que se designa por tam(T), pode ser, por exemplo, o número de

folhas de uma árvore.

O que este autores propuseram foi que se escolhe a sub-árvore de maxT que

minimize:

.t T

R T R T tam T R T

em que R T é uma medida de qualidade

da árvore e .tam T é a penalização segundo o tamanho da árvore, ou seja,

penalizam-se as árvores grandes.

Se 0 então não há penalização e a subárvore óptima é a maxT .

À medida que vai crescendo a sub-árvore óptima é constituída só pela raiz. Breiman

& al.(1984) demonstraram que o subconjunto de árvores ( )T verificam:

max 1

0 1

...

........

T T raiz

isto é, 1,i i a subárvore óptima é iT .

Após a poda obtém-se

max 0 1 2 1... ( )KT T T T T T t raiz

correspondentes a

0 1 2 ... K

em que

1 min ,l l

l lt T T

g t T

e portanto 1 max 1l lT T

1: , ,l l l lt T g s T s T antepassado de t .

Temos que obter um estimador do erro de cada árvore da sequência, lR T , e

escolher a que tem menor erro. Os autores de CART sugeriram o Método de Validação

Cruzada.

Page 9: Disciplina: Extracção e conhecimento de dados I3.1.1- Árvore de decisão- Método J48- C 0.25 _M 2 As vantagens do algoritmo de árvores de decisão estão na grande capacidade

9

2.2- Análise descriminante

O objectivo da análise descriminante é reconhecer a classe a que pertence um

dado objecto, de forma a que a classe encontrada maximize a probabilidade de um dado

pertencer a essa classe. Para isso assumimos um determinado modelo para as funções

densidade de probabilidade, isto é, supõem-se que kjxff jjj ,,1),,( , onde j

são parâmetros desconhecidos, sendo necessário estima-los. Estes parâmetros,

normalmente, são estimados pelo método de máxima verosimilhança.

Sejam então os parâmetros estimados k̂ . Têm-se )ˆ,(ˆˆjjj xff . Estimemos

agora as probabilidades à posteriori para cada classe:

)(ˆ

)(ˆˆ)\(ˆ

xf

xfxcP kk

k

(2.4.1)

onde kf é a função densidade de probabilidade para a classe kc e k̂ é a probabilidade

à priori da classe kc e é dada por n

ni , onde jn representa o número de dados

pertencentes à classe j e n o número total de dados.

Depois de calculadas as probabilidades à posteriori usamos a regra de Bayes de

erro mínimo

jxc )(ˆ se )\(ˆmax)\(ˆ xcPxcP ii

j

Ou seja, pretende-se encontrar a classe que maximiza a probabilidade de um

dado pertencer a essa classe.

De acordo com o tipo de fronteiras (linear ou quadrática) vamos ter dois tipos de

modelos: o modelo normal homocedástico (ou melhor regra linear) e o modelo normal

heterocedástico (ou melhor regra quadrática).

Page 10: Disciplina: Extracção e conhecimento de dados I3.1.1- Árvore de decisão- Método J48- C 0.25 _M 2 As vantagens do algoritmo de árvores de decisão estão na grande capacidade

10

3-Aplicação de alguns métodos de classificação ao dados de treino

3.1- Em Weka

3.1.1- Árvore de decisão- Método J48- C 0.25 _M 2

As vantagens do algoritmo de árvores de decisão estão na grande capacidade de

descrição das árvores para um grande número de dados, o que leva a que seja fácil de

interpretar. Como não assume nenhuma distribuição permite a construção modelos para

qualquer função desde que o número de exemplos de treino seja suficiente. E é robusto

à presença de pontos extremos e atributos irrelevantes.

Os problemas que surgem estão relacionados com o sobre-ajustamento da árvore

ao conjunto de treino o que leva a que para novos indivíduos as classificações sejam

péssimas. No caso de se alterar o conjunto de treino podemos obter uma árvore

completamente diferente o que mostra a instabilidade deste método.

O objectivo principal deste método é obter um modelo de decisão que faça boas

previsões para o futuro.

Este método obtêm estimativas fiáveis do erro a partir do conjunto de treino e

poda com base numa estimativa do erro no conjunto de treino, neste caso, assume uma

distribuição binomial para os exemplos de um nó, isto é, vai estimar o erro a população

e usa as estimativas para podar a árvore.

No conjunto de treino em estudo a árvore que obtive tem 41 folhas, quanto ao

número de instâncias bem classificadas foram 524, correspondendo a uma boa

percentagem de 84.5% dos dados de treino. O erro obtido foi de 15.48%.

O valor de c é de 0.25 e o de M é 2, estes são os valores que o weka apresenta

por defeito sendo possível alterá-los, o c permite aumentar e diminuir o intervalo de

confiança para o erro, e o M dá o valor máximo de indivíduos por folha.

Page 11: Disciplina: Extracção e conhecimento de dados I3.1.1- Árvore de decisão- Método J48- C 0.25 _M 2 As vantagens do algoritmo de árvores de decisão estão na grande capacidade

11

A árvore obtida foi a seguinte:

=== Stratified cross-validation ===

=== Summary ===

Correctly Classified Instances 524 84.5161 %

Incorrectly Classified Instances 96 15.4839 %

Kappa statistic 0.6857

Mean absolute error 0.188

Root mean squared error 0.3575

Relative absolute error 38.0509 %

Root relative squared error 71.9302 %

Total Number of Instances 620

Os valores do quadro seguinte são calculados da seguinte forma:

FNTP

TPTPRate

;

TNFP

FPFPRate

;

i classe da linha da somarelevantes atributos #

i classe à atribuídos são que atributos#Re call ;

i classe da coluna da somarelevantes atributos #

i classe à atribuídos são que atributos#Pr ecision ;

FNFPTP

TPMeasureF

*2

*2 ;

em que :TP-True positive; FN-False negative; TN- True negative; FP-False Positive.

=== Detailed Accuracy By Class ===

TP Rate FP Rate Precision Recall F-Measure Class

0.872 0.188 0.852 0.872 0.862 0

0.812 0.128 0.836 0.812 0.824 1

=== Confusion Matrix ===

a b <-- classified as

300 44 | a = 0

52 224 | b = 1

Por exemplo, FP é quando o resultado é incorrectamente previsto, ou seja, foi

atribuído positivo quando de facto é negativo. A classe 1 apresenta um maior número de

indivíduos aos quais a classe foi mal atribuída.

Page 12: Disciplina: Extracção e conhecimento de dados I3.1.1- Árvore de decisão- Método J48- C 0.25 _M 2 As vantagens do algoritmo de árvores de decisão estão na grande capacidade

12

Estudo do nível de confiança fixado para o erro.

O nível de confiança fixado é o parâmetro c, logo o intervalo de confiança

obtido para o erro é para (1-c)100%.

Este método poda a árvore com base numa estimativa do erro no conjunto de

treino, e como assume uma binomial para os exemplos do nó podemos obter o intervalo

de confiança para c como mostro a seguir.

Seja N

errosf , esta variável pode ser aproximada por uma normal

estandardizada uma vez que 30N , logo:

)1,0(~)1(

N

N

pp

pfX

Então o intervalo de confiança é obtido da seguinte forma: czXP , z é um

valor tabelado.

Na tabela seguinte é possível observar os valores de c, os erros de classificação

obtidos e o número de folhas:

Método J48

Valores de c

% Instâncias mal

classificadas

Nº de

folhas

0,05 15,6452% 21

0,1 14,8387% 29

0,2 14,6774% 29

0,25 15,4839% 41

0,3 15,9677% 67

0,5 17,2581% 73

0,7 18,0645% 89

Neste exemplo o erro converge para 18.065%.

Quanto maior for o valor de c maior vai ser o ajustamento da árvore aos dados

de treino, logo a percentagem de instâncias mal classificadas aumenta, ou seja o erro

aumenta à medida que se aumenta o número de nós.

Quando a poda é pouco severa a árvore está muito ajustada aos dados de treino

logo para novos valores o erro de classificação irá ser maior.

Page 13: Disciplina: Extracção e conhecimento de dados I3.1.1- Árvore de decisão- Método J48- C 0.25 _M 2 As vantagens do algoritmo de árvores de decisão estão na grande capacidade

13

3.1.2- Discriminante Logístico

Uma vez que o Weka não tem implementado o discriminante linear decidi

experimentar o discriminante logístico.

Este método consiste em obter um modelo para as probabilidades à posteriori.

O discriminante logístico é linear e contrói hiperplanos da forma:

)|(

)|(log

1 xP

xPxH iT

iii

Para estimar os valores i e i utiliza o método da máxima verosimilhança.

xCPxCPL n

nl

ln |...|,..., 11

Os resultados obtidos para o caso em estudo foram os seguintes (ver anexo2):

=== Stratified cross-validation ===

=== Summary ===

Correctly Classified Instances 539 86.9355 %

Incorrectly Classified Instances 81 13.0645 %

Kappa statistic 0.7371

Mean absolute error 0.1956

Root mean squared error 0.3195

Relative absolute error 39.596 %

Root relative squared error 64.291 %

Total Number of Instances 620

=== Detailed Accuracy By Class ===

TP Rate FP Rate Precision Recall F-Measure Class

0.858 0.116 0.902 0.858 0.879 0

0.884 0.142 0.833 0.884 0.858 1

=== Confusion Matrix ===

a b <-- classified as

295 49 | a = 0

32 244 | b = 1

Neste método obtive uma percentagem superior de instâncias bem classificadas, a classe

0 apresenta um maior número de instâncias mal atribuídas.

Page 14: Disciplina: Extracção e conhecimento de dados I3.1.1- Árvore de decisão- Método J48- C 0.25 _M 2 As vantagens do algoritmo de árvores de decisão estão na grande capacidade

14

3.1.3- Arvore de decisão vs Descriminante logístico

No quadro seguinte apresento alguns valores que mostram valores obtidos nos

dois métodos:

MAE RMSE RAE RRSE

Taxa de

acerto

J 48 0,188 0,3575 38,05% 71,93% 84,52%

D.Logistico 0,1956 0,3195 39,60% 64,29% 86,94%

O discriminante logístico tem maior taxa de acerto, e apresenta maior valor de

erro médio quadrático, logo apesar de ter maior acerto a distância entre as classes

atribuídas e as classes verdadeiras é maior ( ver anexo tabela1).

Page 15: Disciplina: Extracção e conhecimento de dados I3.1.1- Árvore de decisão- Método J48- C 0.25 _M 2 As vantagens do algoritmo de árvores de decisão estão na grande capacidade

15

3.2- Aplicação de alguns métodos de classificação em R.

3.2.1- Árvores de decisão

A ferramenta do R utilizada para obter a árvore de decisão foi o rpart, que se

encontra na biblioteca rpart. Factorizei as variáveis em que os valores são discretos pois

o R assumia que estas tomavam todos os valores entre os valores discretos, usando o

comando factor o R assume que estas variáveis só tomam os valores por exemplo 0, 1,

2. Ao conjunto de treino denominie-o por A.

library(rpart)

>A<-read.table('D:/economia/extrconhdados/trabalho2/treino.txt');

> A$V1 <- factor(A$V1)

> A$V15 <- factor(A$V15)

> A$V4 <- factor(A$V4)

> A$V8 <- factor(A$V8)

> A$V9 <- factor(A$V9)

> A$V11 <- factor(A$V11)

> A$V12 <- factor(A$V12)

> arvore<-rpart(V15~.,A)

> text(arvore, use.n=TRUE)

A arvore obtida foi a seguinte:

> arvore

n= 620

node), split, n, loss, yval, (yprob)

* denotes terminal node

1) root 620 276 0 (0.55483871 0.44516129)

2) V8=0 296 21 0 (0.92905405 0.07094595) *

3) V8=1 324 69 1 (0.21296296 0.78703704)

6) V9=0 124 51 1 (0.41129032 0.58870968)

12) V5< 8.5 77 36 0 (0.53246753 0.46753247)

24) V13>=111 50 17 0 (0.66000000 0.34000000)

48) V6< 6.5 37 9 0 (0.75675676 0.24324324) *

49) V6>=6.5 13 5 1 (0.38461538 0.61538462) *

25) V13< 111 27 8 1 (0.29629630 0.70370370) *

13) V5>=8.5 47 10 1 (0.21276596 0.78723404) *

7) V9=1 200 18 1 (0.09000000 0.91000000) *

|V8=a

V9=a

V5< 8.5

V13>=111

V6< 6.5

0

0 1 1

1

1

Pode ainda obter-se uma representação mais sofisticada da árvore da seguinte

forma:

> plot(arvore,uniform=T,branch=0.2,margin=0.1,compress=T)

>text(arvore,fancy=T,cex=0.57,font=08,fwidth=0.3,fheight=0.3,use.n=T,all=T,dig

its=2,pretty=1)

Page 16: Disciplina: Extracção e conhecimento de dados I3.1.1- Árvore de decisão- Método J48- C 0.25 _M 2 As vantagens do algoritmo de árvores de decisão estão na grande capacidade

16

“Através da informação seguinte é possível obter, para cada valor do

parâmetro de cost complexity pruning (CP), qual o valor do erro relativo no conjunto

de treino, bem como o erro estimado por validação cruzada e o respectivo erro padrão

desta estimativa. A cada valor de CP corresponde uma sub-àrvore, sendo a última linha

da tabela a árvore retornada pela função rpart, e a primeira linha uma sub-árvore

formada unicamente por uma folha.”[5]

> printcp(arvore)

Classification tree:

rpart(formula = V15 ~ ., data = A)

Variables actually used in tree construction:

[1] V13 V5 V6 V8 V9

Root node error: 276/620 = 0.44516

n= 620

CP nsplit rel error xerror xstd

1 0.673913 0 1.00000 1.00000 0.044836

2 0.019324 1 0.32609 0.32609 0.031780

3 0.010870 4 0.26812 0.30797 0.031030

4 0.010000 5 0.25725 0.31522 0.031334

Page 17: Disciplina: Extracção e conhecimento de dados I3.1.1- Árvore de decisão- Método J48- C 0.25 _M 2 As vantagens do algoritmo de árvores de decisão estão na grande capacidade

17

cp

X-v

al R

ela

tive

Err

or

0.2

0.4

0.6

0.8

1.0

Inf 0.11 0.014 0.01

1 2 5 6

size of tree

Após análise destes outpus penso que a melhor poda desta árvore é ficar só com

2 testes, em vez de 4. Para tal usei os seguintes comandos.

> Poda<-prune(arvore,cp=0.033)

> plot(Poda,uniform=T,branch=0.2,margin=0.1,compress=T)

>text(Poda,fancy=T,cex=0.57,font=08,fwidth=0.3,fheight=0.3,use.n=T,all

=T,digits=2,pretty=1)

E obtive a árvore podada seguinte:

“Uma outra forma de podar a árvore com base em estimativas por validação cruzada é

escolher a menor árvore apresentada pela função printcp que tenha um erro dentro

do intervalo ERR , em que ERR é o erro menor dos erros estimados por validação

cruzada e o respectivo desvio padrão. Esta regra é conhecida como regra 1-SE” (ver

2.1.4). [5]

Page 18: Disciplina: Extracção e conhecimento de dados I3.1.1- Árvore de decisão- Método J48- C 0.25 _M 2 As vantagens do algoritmo de árvores de decisão estão na grande capacidade

18

> arvore.grande<-rpart(V15~.,A,cp=0)

> valcruz.Poda<-function(treino, se =1){

linha.min.erro<- which.min(arvore$cptable[,4])

erro.total<-

arvore$cptable[linha.min.erro,4]+arvore$cptable[linha.min.erro,5]

linha<-which(arvore$cptable[,4]<=erro.total)[1]

prune.rpart(arvore,cp=arvore$cptable[linha,1]+1e-7)

}

> arvore.final<-valcruz.Poda(arvora.grande)

> plot(arvore.final,uniform=T,branch=0.2,margin=0.1,compress=T)

>text(arvore.final,fancy=T,cex=0.57,font=08,fwidth=0.3,fheight=0.3,use

.n=T,all=T,digits=2,pretty=1)

A árvore obtida foi a seguinte:

> arvore.final

n= 620

node), split, n, loss, yval, (yprob)

* denotes terminal node

1) root 620 276 0 (0.55483871 0.44516129)

2) V8=0 296 21 0 (0.92905405 0.07094595) *

3) V8=1 324 69 1 (0.21296296 0.78703704) *

|

V8=0

V8=1

0

3.4e+02/2.8e+02

0

2.8e+02/21

1

69/2.6e+02

Page 19: Disciplina: Extracção e conhecimento de dados I3.1.1- Árvore de decisão- Método J48- C 0.25 _M 2 As vantagens do algoritmo de árvores de decisão estão na grande capacidade

19

Previsão dos valores de treino e estudo dos erros

No caso da Validação cruzada obtêm-se o intervalo de confiança para o erro

calculando a média e o desvio padrão dos erros obtidos em cada iteração.

No quadro seguinte é possível observar o procedimento usado para obter o intervalo de

confiança.

O algoritmo seguinte foi retirado do trabalho [6], em anexo descrevo passo a passo o

que este faz pois não fiz uma cópia sem perceber o que estava a fazer!

valcruz<-function(treino,k){

library(rpart)

Ncol<-nrow(treino)

permutar<-sample(620)

dim(permutar)<-c(k,as.integer(num/k))

erro<-rep(0,10)

for (i in 1:k){

teste<-treino[permutar[i,],]

Treino<-treino[-permutar[i,],]

arvore<-rpart(V15~.,treino)

arvore.final<-valcruz.Poda(arvore)

Arvore.prev<-predict(arvore.final,teste,type="class")

m.conf<-table(teste$V15,Arvore.prev)

elem.nao.diag<-col(m.conf)!=row(m.conf)

perc.erro<-100*sum(m.conf[elem.nao.diag])/sum(m.conf)

erro[i]<-perc.erro}

print(erro)

print(summary(erro))

mean(erro)}

Os resultados obtidos foram os seguintes:

> valcruz(A,10)

[1] 9.67742 11.29032 17.74194 19.35484 11.29032 12.90323 20.96774

12.90323 12.90323 16.12903

Min. 1st Qu. Median Mean 3rd Qu. Max.

9.677 11.690 12.900 14.520 17.340 20.970

[1] 14.51613

A média dos erros é de 14.5% e desvio padrão 4.507.

Se efectuar este procedimento 100 vezes obtenho que o erro médio é de 14.52%.

Page 20: Disciplina: Extracção e conhecimento de dados I3.1.1- Árvore de decisão- Método J48- C 0.25 _M 2 As vantagens do algoritmo de árvores de decisão estão na grande capacidade

20

3.2.2- Discriminante linear

Para cada classe o discriminante linear é um hiper-plano que é combinação linear dos

atributos:

i

T

ii xH em que ii 1 e i

T

iii Cp 12/1log

O objectivo é encontrar a classe j que maximiza )(ˆ

)(ˆˆ)|(ˆ

xf

xfxcP kk

k

, que é

equivalente a maximizar apenas )(ˆˆ xf kk , porque )(ˆ xf é igual para todas as classes.

Mas maximizar )(ˆˆ xf kk é equivalente a maximizar ))(ˆˆln( xf kk .

))(ˆˆln(max xf kk

j

T

jpj xx

ˆˆ2

1exp

)2(

1lnˆlnmax 1

22

1

= ˆln2

1ˆlnmax j -

j

T

j XXp

ˆˆ2

1)2ln(

2

1

Maximizar esta expressão é equivalente a minimizar a seguinte função linear:

jj

T

jj X ˆln2ˆˆˆˆ2 11

è com esta expressão que se encontra a melhor regra linear.

O algoritmo utilizado para determinar o discriminante linear foi o lda da

biblioteca MASS de R (ver anexo) . Assume-se igual probabilidade, á priori, para

ambas as classes.

> val.cruz.descrmin.linear(A,10)

[1] 19.35484 14.51613 19.35484 17.74194 9.67742 11.29032 9.67742

17.74194 16.12903

[10] 11.29032

Min. 1st Qu. Median Mean 3rd Qu. Max.

9.677 11.290 15.320 14.680 17.740 19.350

[1] 14.67742

O primeiro vector contém os erros de cada uma das partições sendo a média dos

erros é 14.67742% e o desvio padrão 3.47. O erro médio do erro no discriminante linear

é de 14.19%.

Page 21: Disciplina: Extracção e conhecimento de dados I3.1.1- Árvore de decisão- Método J48- C 0.25 _M 2 As vantagens do algoritmo de árvores de decisão estão na grande capacidade

21

3.2.3- Arvores de decisão vs Discriminante Linear

Na árvore de decisão a média dos erros é de 14.5% e desvio padrão 4.507 e o

erro médio é de 14.52%.

No discriminante linear a média dos erros é 14.67%, o desvio padrão 3.47 e o

erro médio é de 14.65%.

Logo para este quadro de dados parece-me que o melhor modelo é a árvore de decisão.

Cálculo do Intervalo de confiança

> errodislin<-c(19.35484, 14.51613, 19.35484, 17.74194, 9.67742,

11.29032, 9.67742, 17.74194, 16.12903, 11.29032)

> erroArv<-c(9.67742, 11.29032, 17.74194, 19.35484, 11.29032,

12.90323, 20.96774, 12.90323, 12.90323, 16.12903)

> t.test(errodislin,erroArv,paired=T)

Paired t-test

data: errodislin and erroArv

t = 0.0885, df = 9, p-value = 0.9314

alternative hypothesis: true difference in means is not equal to 0

95 percent confidence interval:

-3.961297 4.283877

sample estimates:

mean of the differences

0.16129

Como o p-value =0.9314> 0.05 concluo com 95% de confiança que os dois modelos são

bastante semelhantes para este caso, logo para escolher o método para classificar o

conjunto de teste vou olhar para os erros médios. Como no discriminante linear o erro é

superior decido a árvore de decisão

Page 22: Disciplina: Extracção e conhecimento de dados I3.1.1- Árvore de decisão- Método J48- C 0.25 _M 2 As vantagens do algoritmo de árvores de decisão estão na grande capacidade

22

4- Previsão

Para prever as classes a que pertencem os indivíduos do conjunto de teste utilizo

a função predict do R.

Como escolhi a árvore de decisão como sendo o melhor método para este caso

uso o seguinte procedimento:

teste<-read.table('D:/economia/extrconhdados/trabalho2/teste.txt');

Arvore.prev<-predict(arvore.final,teste)

Neste derradeiro passo surgiu-me um problema que não consegui perceber, é que cada

vez que tentei fazer a previsão o R desliga-se acusando um erro.

Page 23: Disciplina: Extracção e conhecimento de dados I3.1.1- Árvore de decisão- Método J48- C 0.25 _M 2 As vantagens do algoritmo de árvores de decisão estão na grande capacidade

23

5- Conclusão

Dos métodos utilizados no Weka o discriminante logístico apresenta maior taxa

de acerto que a árvore de decisão. Para o Caso em estudo a árvore de decisão apresenta-

se como sendo o método que melhor classificaria o conjunto de teste.

Este trabalho não me permite tirar conclusões do género “ o melhor método é…”

porque tudo depende dos casos. Cada método tem características que o tornam melhor

ou pior para classificar determinado quadro de dados.

Por exemplo a árvore de decisão obtida pelo R pode ser melhor ao pior que a

árvore obtida pelo J48,uma vez que usam medidas de partição diferentes, tudo depende

das características do conjunto de dados.

Page 24: Disciplina: Extracção e conhecimento de dados I3.1.1- Árvore de decisão- Método J48- C 0.25 _M 2 As vantagens do algoritmo de árvores de decisão estão na grande capacidade

24

Bibliografia

[1]- Acetatos das aulas teóricas

[2]- “Data Mining” – Ian H. Witten, Eibe Frank;

[3]- “Análise de Algoritmos de Classificação”- Carla Sofia Figueiredo Carvalho;

[4]- “Machine Learning” – Tom M. Mitchell;

[5]- Guia prático-“Árvores de regressão”- do Professor Luís Torgo

[6]- Análise de algoritmos de Classificação-Carla Sofia Figueiredo Carvalho

Page 25: Disciplina: Extracção e conhecimento de dados I3.1.1- Árvore de decisão- Método J48- C 0.25 _M 2 As vantagens do algoritmo de árvores de decisão estão na grande capacidade

25

Anexo 1 – Árvore de decisão J48

=== Run information ===

Scheme: weka.classifiers.trees.J48 -C 0.25 -M 2

Relation: treino_conj

Instances: 620

Test mode: 10-fold cross-validation

=== Classifier model (full training set) ===

J48 pruned tree

------------------

atr8 <= 0

| atr3 <= 0.165

| | atr5 <= 6: 0 (10.0)

| | atr5 > 6

| | | atr6 <= 4

| | | | atr2 <= 21.92: 0 (6.0/1.0)

| | | | atr2 > 21.92: 1 (9.0/2.0)

| | | atr6 > 4: 1 (2.0)

| atr3 > 0.165: 0 (269.0/11.0)

atr8 > 0

| atr9 <= 0

| | atr14 <= 445

| | | atr6 <= 5

| | | | atr13 <= 383

| | | | | atr4 <= 1

| | | | | | atr12 <= 1: 1 (3.0/1.0)

| | | | | | atr12 > 1: 0 (13.0/2.0)

| | | | | atr4 > 1

| | | | | | atr5 <= 9

| | | | | | | atr13 <= 112

| | | | | | | | atr14 <= 14: 1 (13.0/1.0)

| | | | | | | | atr14 > 14: 0 (4.0/1.0)

| | | | | | | atr13 > 112

| | | | | | | | atr14 <= 13: 0 (27.0/8.0)

| | | | | | | | atr14 > 13: 1 (3.0)

| | | | | | atr5 > 9: 1 (8.0)

| | | | atr13 > 383: 0 (8.0)

| | | atr6 > 5

| | | | atr14 <= 101

Page 26: Disciplina: Extracção e conhecimento de dados I3.1.1- Árvore de decisão- Método J48- C 0.25 _M 2 As vantagens do algoritmo de árvores de decisão estão na grande capacidade

26

| | | | | atr4 <= 1

| | | | | | atr2 <= 36.75: 1 (5.0/1.0)

| | | | | | atr2 > 36.75: 0 (2.0)

| | | | | atr4 > 1

| | | | | | atr7 <= 4.335

| | | | | | | atr7 <= 1.665: 1 (6.0/1.0)

| | | | | | | atr7 > 1.665: 0 (3.0)

| | | | | | atr7 > 4.335: 1 (7.0)

| | | | atr14 > 101: 1 (3.0)

| | atr14 > 445: 1 (19.0/1.0)

| atr9 > 0: 1 (200.0/18.0)

Number of Leaves : 21

Size of the tree : 41

Page 27: Disciplina: Extracção e conhecimento de dados I3.1.1- Árvore de decisão- Método J48- C 0.25 _M 2 As vantagens do algoritmo de árvores de decisão estão na grande capacidade

27

Anexo 2- Descriminante logistico-Weka

=== Run information ===

Scheme: weka.classifiers.functions.Logistic -R 1.0E-8 -M -1

Relation: treino_conj

Instances: 620

Test mode: 10-fold cross-validation

=== Classifier model (full training set) ===

Logistic Regression with ridge parameter of 1.0E-8

Coefficients...

Variable Coeff.

1 0.0844

2 -0.0085

3 0.0466

4 -0.6768

5 -0.1869

6 -0.0794

7 -0.0793

8 -3.3029

9 -0.4786

10 -0.1059

11 0.1902

12 -0.5434

13 0.0018

14 -0.0004

Intercept 6.5928

Odds Ratios...

Variable O.R.

1 1.088

2 0.9916

3 1.0477

4 0.5082

5 0.8295

6 0.9237

7 0.9238

8 0.0368

9 0.6196

10 0.8995

11 1.2095

12 0.5808

13 1.0018

14 0.9996

Page 28: Disciplina: Extracção e conhecimento de dados I3.1.1- Árvore de decisão- Método J48- C 0.25 _M 2 As vantagens do algoritmo de árvores de decisão estão na grande capacidade

28

Anexo 3- Validação cruzada em R

Explicação detalhada do algoritmo

valcruz<-function(treino,k){

library(rpart)

Contagem do número de indivíduos no conjunto de treino A

Ncol<-nrow(A)

Geração de números aleatórios

permutar<-sample(num)

Divisão dos números aleatórios nos k=10 conjuntos para a amostragem

dim(permutar)<-c(k,as.integer(num/k))

Vector com os erros obtidos nos k conjuntos

erro<-rep(0,10)

Ciclo que vai obter os erros das k=10 repetições de teste da árvore obtida com os k-1=9

conjuntos

for (i in 1:k){

O subconjunto de treino possui as k-1=9 partições do conjunto de treino A.

teste<-treino[permutar[i,],]

Treino<-treino[-permutar[i,],]

Árvore de decisão que obtêm o modelo dos indivíduos de A cuja classe está na coluna

V15

arvore<-rpart(V15~.,treino)

Árvore podada

arvore.final<-valcruz.Poda(arvore)

Previsão dos individuos do conjunto de treino

Arvore.prev<-predict(arvore.final,teste,type="class")

Cálculo do erro de classificação

m.conf<-table(teste$V15,Arvore.prev)

elem.nao.diag<-col(m.conf)!=row(m.conf)

perc.erro<-100*sum(m.conf[elem.nao.diag])/sum(m.conf)

erro[i]<-perc.erro}

print(erro)

print(summary(erro))

mean(erro)}

Page 29: Disciplina: Extracção e conhecimento de dados I3.1.1- Árvore de decisão- Método J48- C 0.25 _M 2 As vantagens do algoritmo de árvores de decisão estão na grande capacidade

29

Repetição do algoritmo anterior 100 vezes

Rep.100<-function(dados,k,n){

erro<-rep(0,n)

for(i in 1:n)

erro[i]<-valcruz(dados,k)}

summary(erro))}

Anexo4 - Discriminante Linear

val.cruz.descrmin.linear<-function(dados,k){

library(MASS)

num<-nrow(dados)

indices<-sample(num)

dim(indices)<-c(k,as.integer(num/k))

erros<-rep(0,10)

for(i in 1:k){

teste<-dados[indices[i,],]

treino<-dados[-indices[i,],]

disc<-lda(V15~.,treino,prior=c(1,1)/2,tol=1.0e-37)

previsao<-predict(disc,teste)$class

m.conf<-table(teste$V15,previsao)

elem.nao.diag<-col(m.conf)!=row(m.conf)

perc.erro<-100*sum(m.conf[elem.nao.diag])/sum(m.conf)

erros[i]<-perc.erro}

print(erros)

print(summary(erros))

mean(erros)

}

Rep.100<-function(dados,k,n){

erro<-rep(0,n)

for(i in 1:n)

erro[i]<-val.cruz.descrmin.linear(dados,k)}

summary(erro))}

Page 30: Disciplina: Extracção e conhecimento de dados I3.1.1- Árvore de decisão- Método J48- C 0.25 _M 2 As vantagens do algoritmo de árvores de decisão estão na grande capacidade

30

Anexo – Tabela 1

“Data Mining”- Ian H. Witten