2º Ciclo de Estudos – Mestrado Informática Médica



Baixar 237,72 Kb.
Encontro23.10.2018
Tamanho237,72 Kb.

2º Ciclo de Estudos – Mestrado Informática Médica

Faculdade de Medicina do Porto

Faculdade de Ciências do Porto


Sistemas de Apoio

à

Decisão Clínica
Docente: Inês Dutra
Alunos: Luís Martinez – MIM0809

Ricardo Casal – MIM08010

João Janeiro – MIM08011


Porto

Março 2009


Índice


1 Introdução 3

2 Métodos 5

3 Resultados 6

3.1 OneR 6

3.1.1 Informações sobre o algoritmo 6

3.1.2 Cross Validation 6

3.1.3 Percentage Split 7

3.1.4 Análise do modelo 8

3.2 J48 8

3.2.1 Informações sobre o algoritmo 8

3.2.2 Cross Validation 9

3.2.3 Percentage Split 10

3.2.4 Análise do modelo 10

3.3 Naive Bayes 11

3.3.1 Informações sobre o algoritmo 11

3.3.2 Cross Validation 11

3.3.3 Percentage Split 13

3.3.4 Análise do modelo 15

4 Discussão 15

5 Bibliografia 16




  1. Introdução


No âmbito da Unidade Curricular de Sistemas de Apoio à Decisão Clínica foi proposto trabalho com o objectivo de conhecer ferramentas e métodos de análise e processamento de dados, conhecer principais técnicas de mineração de dados e aprendizagem de máquina e desenvolver capacidade de análise de dados e alteração de parâmetros.
Este trabalho incide sobre um classificador de vinhos através dos seguintes atributos:

  • Alcohol

  • Malic acid

  • Ash

  • Alcalinity of ash

  • Magnesium

  • Total phenols

  • Flavanoids

  • Nonflavanoid phenols

  • Proanthocyanins

  • Color intensity

  • Hue

  • OD280/OD315 of diluted wines

  • Proline

Pretendemos demonstrar os resultados obtidos na execução de algoritmos de classificação, usando o software Weka®, obtido em http://www.cs.waikato.ac.nz/ml/weka/, que possui diversos algoritmos de mineração de dados, incluindo alguns de classificação, implementados em Java.

O nosso Dataset incide num conjunto de dados, retirado do site http://archive.ics.uci.edu/ml/.

O ficheiro original fornece, sob a forma de dados separados por vírgulas, resultados de análise química de vinhos da mesma região de Itália mas derivados de três diferentes “cultivars”. Na viticultura, o termo Cultivar ou Casta designa um conjunto de videiras com características comuns, provenientes de uma ou de várias plantas morfologicamente semelhantes. Contudo, embora algumas componentes aromáticas próprias da casta se mantenham, consoante o tipo de solo e o clima, a mesma casta pode originar vinhos com característica diferenciadas.

Na nossa base de dados, foram analisadas várias características das uvas, entre as quais os flavonóides existentes. Estes polifenóis de baixa massa molecular são um tipo de compostos fenólicos, conhecidos principalmente pelas suas propriedades protectoras antioxidantes, e que estão amplamente distribuídos no reino vegetal, sendo encontrados em maior quantidade em frutos, vegetais, especiarias, cacau, chá verde e vinho tinto.

Após conversão do ficheiro para o formato ARFF (Attribute-Relation File Format) foi necessário transformar a classificação em variável discreta para possibilitar a aplicação dos classificadores.


Conceitos básicos:
Kappa Statistic: Índice que compara o valor encontrado nas observações com aquele que se pode esperar do acaso. È o valor calculado dos resultados encontrados nas observações e relatado como um decimal (0 a 1). Quanto menor o valor de Kappa, menor a confiança de observação, o valor 1 implica a correlação perfeita.
Mean Absolute Error: média da diferença entre os valores atuais e os preditos em todos os casos, é a média do erro da predição.
True Positives (TP): são os valores classificados verdadeiramente positivos.
False Positives (FP): são os falsos positivos, são os dados classificados erroneamente como positivos pelo classificador.
Precision (Precisão): É o valor da predição positiva (número de casos positivos por total de casos cobertos), muito influenciada pela especificidade e pouco pela sensitividade. Sensitividade é o número de casos positivos que são verdadeiramente positivos e especificidade é o número de casos negativos que são verdadeiramente negativos.
Recall (Cobertura): É o valor da cobertura de casos muito influenciada pela sensitividade e pouco pela especificidade. É calculada por número de casos cobertos pelo número total de casos aplicáveis.
F-measure: Usada para medir o desempenho, pois combina valores de cobertura e precisão de uma regra numa única fórmula [2*Prec*Rec / (Prec+Rec)].
Root Relative Squared Error: reduz o quadrado do erro relativo na mesma dimensão da quantidade sendo predita incluindo raiz quadrada. Assim como a raiz quadrada do erro significativo (root mean-squared error), este exagera nos casos em que o erro da predição foi significativamente maior do que o erro significativo.
Relative Absolute Error: É o erro total absoluto. Em todas as mensurações de erro, valores mais baixos significam maior precisão do modelo, com o valor próximo de zero temos o modelo estatisticamente perfeito.
Root Mean-Squared Error: usado para medir o sucesso de uma predição numérica. Este valor é calculado pela média da raiz quadrada da diferença entre o valor calculado e o valor correto. O root mean-squared error é simplesmente a raiz quadrada do mean-squared-error (dá o valor do erro entre os valores atuais e os valores preditos).
  1. Métodos


Seleccionámos três algoritmos, sendo eles OneR, J48, NaiveBayes, sendo cada algoritmo executado 2 vezes, utilizando 2 técnicas diferentes de teste.

Na primeira técnica escolhemos “Cross Validation”, com 10 folds.

Na segunda técnica escolhemos “Percentage Split”, com percentagem 66, definida por defeito no software Weka®.

A base de dados contém 177 instâncias classificadas em 3 classes ( 1,2,3 ).


No “Cross Validation” (10 folds) a amostra é dividida em k (10) partes de igual tamanho, de preferência as partes (ou folds) devem possuir a mesma quantidade de padrões, garantindo a mesma proporção de classes para cada subconjunto. O algoritmo é executado sob k-1 “folds” (subconjuntos) gerando as regras, posteriormente é validado sob o fold que sobrou. Assim neste caso onde usamos 10 partes (10 folds), o conjunto de treino é criado sob 9 (nove) partes e testado calculando a taxa de acerto sob os dados da parte não utilizada, a parte que sobrou. No final a taxa de acerto é uma média das taxas de acerto nas k iterações realizadas.

Para a técnica de fragmentação “Percentage Split” separa uma percentagem dos dados para testar as regras do classificador.


  1. Resultados

    1. OneR

      1. Informações sobre o algoritmo


As informações descritas abaixo sobre o algoritmo 1R foram retiradas da biblioteca Weka.

Nome da Classe: weka.classifiers.rules.OneR

Descrição: Classe para construir e usar o classificador 1R, em outras palavras, usar o atributo de erro mínimo para predição, discretizando atributos numéricos (Holte, 1993).
      1. Cross Validation


Listagem obtida:
Test mode: 10-fold cross-validation
=== Classifier model (full training set) ===
Flavanoids:

< 1.29 -> 3

< 2.31 -> 2

< 2.525 -> 1

< 2.665 -> 2

< 3.745 -> 1

>= 3.745 -> 2

(148/177 instances correct)

Time taken to build model: 0 seconds


=== Stratified cross-validation ===

=== Summary ===


Correctly Classified Instances 140 79.096 %

Incorrectly Classified Instances 37 20.904 %

Kappa statistic 0.6833

Mean absolute error 0.1394

Root mean squared error 0.3733

Relative absolute error 31.747 %

Root relative squared error 79.6835 %

Total Number of Instances 177


=== Detailed Accuracy By Class ===
TP Rate FP Rate Precision Recall F-Measure ROC Area Class

0.931 0.16 0.74 0.931 0.824 0.886 1

0.676 0.132 0.774 0.676 0.722 0.772 2

0.792 0.031 0.905 0.792 0.844 0.88 3

Weighted Avg. 0.791 0.114 0.798 0.791 0.789 0.839
=== Confusion Matrix ===
a b c <-- classified as

54 4 0 | a = 1

19 48 4 | b = 2

0 10 38 | c = 3



      1. Percentage Split


Listagem obtida:
Test mode: split 66.0% train, remainder test
=== Classifier model (full training set) ===
Flavanoids:

< 1.29 -> 3

< 2.31 -> 2

< 2.525 -> 1

< 2.665 -> 2

< 3.745 -> 1

>= 3.745 -> 2

(148/177 instances correct)

Time taken to build model: 0 seconds


=== Evaluation on test split ===

=== Summary ===

Correctly Classified Instances 46 76.6667 %

Incorrectly Classified Instances 14 23.3333 %

Kappa statistic 0.6399

Mean absolute error 0.1556

Root mean squared error 0.3944

Relative absolute error 35.1538 %

Root relative squared error 83.4836 %

Total Number of Instances 60


=== Detailed Accuracy By Class ===
TP Rate FP Rate Precision Recall F-Measure ROC Area Class

0.84 0.143 0.808 0.84 0.824 0.849 1

0.609 0.135 0.737 0.609 0.667 0.737 2

0.917 0.083 0.733 0.917 0.815 0.917 3

Weighted Avg. 0.767 0.128 0.766 0.767 0.762 0.819
=== Confusion Matrix ===
a b c <-- classified as

21 4 0 | a = 1

5 14 4 | b = 2

0 1 11 | c = 3



      1. Análise do modelo


Com este algoritmo os dados são organizados em 3 classes, de acordo com a concentração de flavonóides.

Usando “10-fold cross-validation” obtêm-se 37 respostas erradas (20.904%), Com “percentage split” obtêm-se 14 respostas erradas (23.3333%). O modelo implementado é o mesmo com ambas as técnicas, embora com avaliações no conjunto teste ligeira mas não significativamente diferentes. Da análise efectuada (Tabela 1), verificamos que não existem diferenças significativas usando “cross-validation” ou “percentage split”.


Tabela 1 – Comparação entre aplicação das técnicas “Cross Validation” ou “Percentage Split” sobre regras OneR




Cross-Validation

Percentage Split 66%

Correctly Classified Instances

140

79.096%

46

76.6667 %

Incorrectly Classified Instances

37

20.904%

14

23.3333 %

Kappa statistic

0.6833

0.6399

Mean absolute error

0.1394

0.1556

Root mean squared error

0.3733

0.3944

Relative absolute error

31.747%

35.1538 %

Root relative squared error

79.6835 %

83.4836 %

Total Number of Instances

177

60

As classes mais fáceis de classificar foram as classes 1 e 3, em que o modelo acerta mais vezes, obtendo-se melhores índices (F-measure). A classe 2 confunde-se mais frequentemente; esta é a classe em que a concentração de flavonóides é mais variável.


    1. J48

      1. Informações sobre o algoritmo


As informações descritas abaixo sobre o algoritmo J48 foram retiradas da biblioteca Weka.

Nome da Classe: weka.classifiers.trees.J48.

Descrição: Classe para gerar uma árvore de decisão podada ou não, utilizando o algoritmo C45 (Quinlan, 1993).

Parâmetros:

  • Unpruned: Verdadeiro se a poda não é executada (por defeito falso).
      1. Cross Validation


Listagem obtida:
Test mode: 10-fold cross-validation
=== Classifier model (full training set) ===
J48 pruned tree

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


Flavanoids <= 1.57

| Color intensity <= 3.8: 2 (13.0)

| Color intensity > 3.8: 3 (49.0/1.0)

Flavanoids > 1.57

| Proline <= 720: 2 (54.0/1.0)

| Proline > 720

| | Color intensity <= 3.4: 2 (4.0)

| | Color intensity > 3.4: 1 (57.0)


Number of Leaves : 5
Size of the tree : 9

Time taken to build model: 0 seconds


=== Stratified cross-validation ===

=== Summary ===


Correctly Classified Instances 165 93.2203 %

Incorrectly Classified Instances 12 6.7797 %

Kappa statistic 0.8973

Mean absolute error 0.0516

Root mean squared error 0.2123

Relative absolute error 11.7576 %

Root relative squared error 45.3099 %

Total Number of Instances 177


=== Detailed Accuracy By Class ===
TP Rate FP Rate Precision Recall F-Measure ROC Area Class

0.966 0.042 0.918 0.966 0.941 0.954 1

0.887 0.038 0.94 0.887 0.913 0.901 2

0.958 0.023 0.939 0.958 0.948 0.969 3

Weighted Avg. 0.932 0.035 0.933 0.932 0.932 0.937
=== Confusion Matrix ===
a b c <-- classified as

56 2 0 | a = 1

5 63 3 | b = 2

0 2 46 | c = 3



      1. Percentage Split


Listagem obtida:
Test mode: split 66.0% train, remainder test
=== Classifier model (full training set) ===
J48 pruned tree

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


Flavanoids <= 1.57

| Color intensity <= 3.8: 2 (13.0)

| Color intensity > 3.8: 3 (49.0/1.0)

Flavanoids > 1.57

| Proline <= 720: 2 (54.0/1.0)

| Proline > 720

| | Color intensity <= 3.4: 2 (4.0)

| | Color intensity > 3.4: 1 (57.0)


Number of Leaves : 5
Size of the tree : 9

Time taken to build model: 0 seconds


=== Evaluation on test split ===

=== Summary ===


Correctly Classified Instances 52 86.6667 %

Incorrectly Classified Instances 8 13.3333 %

Kappa statistic 0.7926

Mean absolute error 0.0889

Root mean squared error 0.2981

Relative absolute error 20.0879 %

Root relative squared error 63.1077 %

Total Number of Instances 60


=== Detailed Accuracy By Class ===
TP Rate FP Rate Precision Recall F-Measure ROC Area Class

0.76 0 1 0.76 0.864 0.88 1

0.957 0.189 0.759 0.957 0.846 0.884 2

0.917 0.021 0.917 0.917 0.917 0.948 3

Weighted Avg. 0.867 0.077 0.891 0.867 0.868 0.895
=== Confusion Matrix ===
a b c <-- classified as

19 6 0 | a = 1

0 22 1 | b = 2

0 1 11 | c = 3



      1. Análise do modelo


O modelo de classificação utiliza primeiro uma dicotomia com cutt-off num valor de flavonóides, e seguidamente pela intensidade de cor antecedida ou não por distinção segundo concentração de prolina (Figura 1).

Usando “10-fold cross-validation” obtêm-se 12 respostas erradas (6.77%), Com “percentage split” obtêm-se 8 respostas erradas (13.3333%). O modelo implementado é também o mesmo com ambas as técnicas, embora com avaliações no conjunto teste diferentes.



Os resultados obtidos com este algoritmo superam o exemplo com a utilização de regras (OneR).


Figura 1 – Árvore de classificação J48.

    1. Naive Bayes

      1. Informações sobre o algoritmo


As informações descritas abaixo sobre o algoritmo NaïveBayes foram retiradas da biblioteca Weka.

Nome da Classe: weka.classifiers.bayes.NaiveBayes.

Descrição: Classe para classificação utilizando o Naïve Bayes (John e Langley, 1995).
      1. Cross Validation


Listagem obtida:
Test mode: 10-fold cross-validation
=== Classifier model (full training set) ===
Naive Bayes Classifier
Class

Attribute 1 2 3

(0.33) (0.4) (0.27)

=============================================================

Alcohol

mean 13.7359 12.2784 13.1538



std. dev. 0.4579 0.5336 0.5253

weight sum 58 71 48

precision 0.0306 0.0306 0.0306
Malic acid

mean 2.0165 1.9329 3.3334

std. dev. 0.6872 1.0078 1.0749

weight sum 58 71 48

precision 0.0383 0.0383 0.0383
Ash

mean 2.4537 2.2439 2.4397

std. dev. 0.2281 0.3129 0.1818

weight sum 58 71 48

precision 0.0243 0.0243 0.0243
Alcalinity of ash

mean 17.0586 20.2511 21.4142

std. dev. 2.5338 3.3325 2.2398

weight sum 58 71 48

precision 0.318 0.318 0.318
Magnesium

mean 105.9959 94.5915 99.366

std. dev. 10.1842 16.6237 10.916

weight sum 58 71 48

precision 1.8039 1.8039 1.8039
Total phenols

mean 2.8401 2.2618 1.681

std. dev. 0.3386 0.5412 0.3553

weight sum 58 71 48

precision 0.0302 0.0302 0.0302
Flavanoids

mean 2.9836 2.0809 0.7794

std. dev. 0.3972 0.7002 0.2897

weight sum 58 71 48

precision 0.0365 0.0365 0.0365
Nonflavanoid phenols

mean 0.291 0.3646 0.4478

std. dev. 0.0707 0.1229 0.123

weight sum 58 71 48

precision 0.0139 0.0139 0.0139
Proanthocyanins

mean 1.8916 1.631 1.1518

std. dev. 0.4099 0.5992 0.4046

weight sum 58 71 48

precision 0.0317 0.0317 0.0317
Color intensity

mean 5.532 3.0906 7.3889

std. dev. 1.2415 0.9185 2.2882

weight sum 58 71 48

precision 0.0902 0.0902 0.0902
Hue

mean 1.0614 1.0559 0.6836

std. dev. 0.1161 0.2013 0.1129

weight sum 58 71 48

precision 0.016 0.016 0.016
OD280/OD315 of diluted wines

mean 3.1438 2.7848 1.683

std. dev. 0.3429 0.4931 0.2715

weight sum 58 71 48

precision 0.0228 0.0228 0.0228
Proline

mean 1116.7655 519.8261 629.683

std. dev. 221.7822 154.7719 113.0791

weight sum 58 71 48

precision 11.6833 11.6833 11.6833

Time taken to build model: 0.01 seconds


=== Stratified cross-validation ===

=== Summary ===


Correctly Classified Instances 173 97.7401 %

Incorrectly Classified Instances 4 2.2599 %

Kappa statistic 0.9657

Mean absolute error 0.0163

Root mean squared error 0.1011

Relative absolute error 3.7211 %

Root relative squared error 21.5742 %

Total Number of Instances 177


=== Detailed Accuracy By Class ===
TP Rate FP Rate Precision Recall F-Measure ROC Area Class

0.966 0 1 0.966 0.982 0.999 1

0.972 0.019 0.972 0.972 0.972 0.998 2

1 0.016 0.96 1 0.98 1 3

Weighted Avg. 0.977 0.012 0.978 0.977 0.977 0.999
=== Confusion Matrix ===
a b c <-- classified as

56 2 0 | a = 1

0 69 2 | b = 2

0 0 48 | c = 3



      1. Percentage Split


Listagem obtida:
Test mode: split 66.0% train, remainder test
=== Classifier model (full training set) ===
Naive Bayes Classifier
Class

Attribute 1 2 3

(0.33) (0.4) (0.27)

=============================================================

Alcohol

mean 13.7359 12.2784 13.1538



std. dev. 0.4579 0.5336 0.5253

weight sum 58 71 48

precision 0.0306 0.0306 0.0306
Malic acid

mean 2.0165 1.9329 3.3334

std. dev. 0.6872 1.0078 1.0749

weight sum 58 71 48

precision 0.0383 0.0383 0.0383
Ash

mean 2.4537 2.2439 2.4397

std. dev. 0.2281 0.3129 0.1818

weight sum 58 71 48

precision 0.0243 0.0243 0.0243
Alcalinity of ash

mean 17.0586 20.2511 21.4142

std. dev. 2.5338 3.3325 2.2398

weight sum 58 71 48

precision 0.318 0.318 0.318
Magnesium

mean 105.9959 94.5915 99.366

std. dev. 10.1842 16.6237 10.916

weight sum 58 71 48

precision 1.8039 1.8039 1.8039
Total phenols

mean 2.8401 2.2618 1.681

std. dev. 0.3386 0.5412 0.3553

weight sum 58 71 48

precision 0.0302 0.0302 0.0302
Flavanoids

mean 2.9836 2.0809 0.7794

std. dev. 0.3972 0.7002 0.2897

weight sum 58 71 48

precision 0.0365 0.0365 0.0365
Nonflavanoid phenols

mean 0.291 0.3646 0.4478

std. dev. 0.0707 0.1229 0.123

weight sum 58 71 48

precision 0.0139 0.0139 0.0139
Proanthocyanins

mean 1.8916 1.631 1.1518

std. dev. 0.4099 0.5992 0.4046

weight sum 58 71 48

precision 0.0317 0.0317 0.0317
Color intensity

mean 5.532 3.0906 7.3889

std. dev. 1.2415 0.9185 2.2882

weight sum 58 71 48

precision 0.0902 0.0902 0.0902
Hue

mean 1.0614 1.0559 0.6836

std. dev. 0.1161 0.2013 0.1129

weight sum 58 71 48

precision 0.016 0.016 0.016
OD280/OD315 of diluted wines

mean 3.1438 2.7848 1.683

std. dev. 0.3429 0.4931 0.2715

weight sum 58 71 48

precision 0.0228 0.0228 0.0228
Proline

mean 1116.7655 519.8261 629.683

std. dev. 221.7822 154.7719 113.0791

weight sum 58 71 48

precision 11.6833 11.6833 11.6833

Time taken to build model: 0 seconds


=== Evaluation on test split ===

=== Summary ===


Correctly Classified Instances 58 96.6667 %

Incorrectly Classified Instances 2 3.3333 %

Kappa statistic 0.948

Mean absolute error 0.0278

Root mean squared error 0.143

Relative absolute error 6.2804 %

Root relative squared error 30.2724 %

Total Number of Instances 60


=== Detailed Accuracy By Class ===
TP Rate FP Rate Precision Recall F-Measure ROC Area Class

0.92 0 1 0.92 0.958 1 1

1 0.054 0.92 1 0.958 0.998 2

1 0 1 1 1 1 3

Weighted Avg. 0.967 0.021 0.969 0.967 0.967 0.999
=== Confusion Matrix ===
a b c <-- classified as

23 2 0 | a = 1

0 23 0 | b = 2

0 0 12 | c = 3



      1. Análise do modelo


O modelo de classificação utiliza a combinação das probabilidades individuais de ocorrência de cada atributo, de acordo com o teorema de Bayes. A transposição do modelo é menos simples que nos modelos apresentados anteriormente e, ao contrário daqueles, a aplicação não exporta o código para implementação do modelo.

Usando “10-fold cross-validation” obtêm-se 4 respostas erradas (2.2599%), Com “percentage split” obtêm-se 2 respostas erradas (3.3333%). O modelo implementado é também o mesmo com ambas as técnicas, embora com avaliações no conjunto teste diferentes.

A aplicação deste modelo Bayesiano simples proporcionou a melhor solução de classificação, com o menor número de erros. Analisando a matriz de confusão é possível verificar que a maior dificuldade se encontra na separação das classes 1 e 2. A classe 3 foi a mais facilmente discriminada neste modelo.

  1. Discussão


Analisando os dados estatísticos oferecidos pela ferramenta Weka como, por exemplo, a estatística Kappa, que indica o grau de concordância, e os valores de erros, conclui-se que o modelo induzido pelo algoritmo Naive Bayes é o mais indicado, uma vez que os indicadores de erros, no seu geral, apresentam valores inferiores nesse algoritmo em relação ao J48 e OneR.

O modelo com melhor prestação foi o algoritmo Naive Bayes. No entanto, devido à pequena diferença de desempenho entre os outros algoritmos, outras alternativas poderiam ser escolhidas como, por exemplo, o algoritmo J48 ou o OneR dependendo da técnica de framentação utilizada e do grau de simplicidade desejado no modelo.

A aplicação desta ferramenta de mineração de dados permitiu, partindo de um conjunto de dados relativamente “amorfo”, determinar um modelo capaz de classificar com bastante acuidade as amostras, sem à partida existir relevante conhecimento técnico.

Este trabalho realça a capacidade das ferramentas do tipo “Weka” na extracção de conhecimento partindo de bases dados, por exemplo na saúde.


  1. Bibliografia


  1. George H. John and Pat Langley. “Estimating Continuous Distributions in Bayesian Classifiers”. Proceedings of the Eleventh Conference on Uncertainty in Artificial Intelligence. 1995. pp. 338-345.

  2. Holte, R. “Very simple classification rules perform well on most commonly used datasets”. Machine Learning. 1993. Vol. 11, pp. 63-91.

  3. R. Quinlan. "Induction of decision trees". Machine Learning. 1985.Vol.1, No.1, pp. 81-106.

  4. R. Quinlan. "C4.5: Programs for Machine Learning", 1993. Morgan Kaufmann Publishers, San Mateo, CA.






©livred.info 2017
enviar mensagem

    Página principal