Aplicação de um Algoritmo da área de Inteligência Artificial na base de dados Echocardiogram

Categorias Biologia, Computação, Inteligência Artificial, Medicina

Artigo original disponível em: Academia.edu

 

Alex Yukio Wassano¹
Marcelo Matos dos Santos²
Renato Lemes Peixoto³

Fundação – Universidade Federal de Mato Grosso do Sul (UFMS)
¹²³Departamento de Computação e Estatística
Inteligência Artificial
Caixa Postal 549 Campo Grande – MS 79070-900
¹alex_wassano@yahoo.com.br, ²marcelo.dork@gmail.com, ³rlpeixoto@gmail.com

30 de Maio de 2005

 

Resumo

Esse trabalho tem por finalidade a extração de informações em uma base de dados sobre ataques cardíacos, Echocardiogram, utilizando o Algoritmo do Perceptron de Múltiplas Camadas o Backpropagation e o software de apoio Weka®.

Todos os pacientes sofreram ataques de coração no passado. Alguns ainda estão vivos e outros não.
Existem duas variáveis que se baseia o estudo: pessoas que estão vivas e pessoas que não estão vivas. Essas variáveis relacionam-se as pessoas que sofreram ou não ao ataque cardíaco após um ano do ocorrido.

Na introdução são explicadas as características das doenças cardiovasculares e as peculiaridades do exame de eletrocardiograma elaborada para a geração da base de dados. Diagnósticos foram feitos em pacientes com problemas cardíacos, na qual foram gerados exames minuciosos das características de cada indivíduo do grupo de amostra.

Os resultados gerados são totalmente voltados para a base de dados gerada a partir desses diagnósticos, na qual foram desenvolvidas instancias, atributos e classes que farão parte do estudo do Echocardiogram.

 

1. Introdução

 

As doenças cardiovasculares constituem a principal causa de mortalidade na sociedade moderna. O eletrocardiograma ambulatorial ou Holter tem sido largamente utilizado para o diagnóstico da integridade cardíaca.

Com o intuito de definir critérios de comparação das principais características de pessoas que sofreram ou sofrem de alguma doença cardiovascular, pesquisas são feitas em cima de algumas características observadas nos pacientes cardíacos, tais como: sobrevivência, gordura, idade de ataque entre outros. Algumas das mais perturbadoras disfunções cardíacas, tais como: arritmia cardíaca, músculo cardíaco anormal são umas entre outras as mais comuns doenças cardíacas.

Os testes com os pacientes baseia-se em predizer se os pacientes envolvidos sobreviveram um ano após o enfarte-miocardico, e as principais características encontradas em pessoas que sofreu ou tem tendência a sofrer algum ataque cardiovascular. Para a classificação dos dados utilizou-se rede neural artificiais (RNA) do tipo feedforward, treinados com o algoritmo de Backpropagation.

Muitas técnicas são usadas para diagnósticos dessas doenças. O eletrocardiograma é um exame feito com intuito de definir algumas peculiaridades do estado normal do coração do paciente.

A técnica médica usada para os testes será o eletrocardiograma, definido como linha padrão de exames para testes para implementação em inteligência artificial.

Com o treinamento de técnicas de inteligência artificial pegando como base o eletrocardiograma, novas soluções e previsões poderão ser feitas para tentar amenizar e até salvar vidas de pacientes com deficiência cardiovascular.

 

2. Materiais e Métodos

 

Foram adotados 132 exames de pacientes, com 13 atributos.

Informação sobre os Atributos:

  1. Sobrevivência – o número de meses que os pacientes sobreviveram se ainda estão vivos. Porque todos os pacientes tiveram ataques cardíacos em épocas distintas. É possível que alguns pacientes tenham sobrevivido menos de um ano, porém ainda estão ainda vivos. Verifique a segunda variável para confirmar isto.  Tais pacientes não podem ser usados para a tarefa da predição mencionada acima, pois não faz sentido termos um paciente que tenha morrido e ainda esteja vivo.
  2. Ainda-Vivo – usa-se uma variável binária para indicar se o paciente encontra-se vivo ou morto. “0=morto” ou “1=ainda vivo”
  3. Idade do Ataque Cardíaco – idade do paciente quando ocorreu o ataque
  4. Fluido do Pericárdio – usa-se uma variável binária para indicar se possui ou não fluido em torno do coração “0=não possui” ou “1=possui”
  5. Percentual de Gordura – índice de gordura maligna no coração
  6. Ponto de Separação do Septo (EPSS) – uma outra medida de gordura. Os números maiores são cada vez mais anormais.
  7. Fim da Dimensão Diastólica Ventricular E Esquerda (LVDD) – Esta é uma medida do tamanho do coração no fim da diástole. Os corações grandes tendem a ser corações doentes.
  8. Contagem de Movimento da Parede (Wall-Motion-Score) — medida de como os segmentos do ventrículo esquerdo estão se movendo.
  9. Índice de Movimento da Parede (Wall-Motion-Index) – igual contagem de movimento da parede dividida pelo número de segmentos vistos. Geralmente 12-13 segmentos são vistos em um eletrocardiograma. Usar o índex em vez do score.
  10. Mult – Variável derivada que pode ser ignorada.
  11. Nome – nome do paciente.
  12. Grupo — sem sentido pode ser ignorado.
  13. Vivos — Booleano-avaliados.  Derivado dos primeiros dois atributos. Usa-se a variável 0 para pacientes mortos após 1 ano ou tinham sido seguidos por menos de 1 ano.  A variável 1, usada para pacientes que estavam vivos no período de 1 ano.

 

3. Base de dados

 

Como já foi citada anteriormente, a base de dados a ser utilizada, será a echocardiogram.data, no qual baseia-se um estudo para saber quantos pacientes sobreviveram ou morreram após o ataque cardíaco no período de um ano. Trabalharemos com a hipótese de um percentual de acerto de setenta para treino de nossa rede neural e trinta por cento utilizados para testes, após o treino de nosso algoritmo, que no caso utilizará o backpropagation.

Nossa base de dados resume-se a 2 classes, pacientes vivos ou não após o ataque cardíaco e 13 atributos que foram listados acima na metodologia e nos materiais.

A inteligência artificial utiliza vários algoritmos, também conhecidos como classificadores que podemos citar a titulo de exemplo redes Bayers, Decision Tree, Perceptron Simples e BackPropagation.

Como mencionado na primeira etapa que foi entregue o artigo, descrevemos que usaríamos o algoritmo de redes neurais supervisionado chamado de BackPropagation ou MultiLayer Perceptron (Perceptron de Múltiplas Camadas).

Perceptrons de várias camadas são redes feed-foward com uma ou mais camadas entre os nós de entrada e saída. São Perceptrons simples de várias camadas.

Um perceptron é basicamente um neurônio artificial que possuem características similares ao de um neurônio humano, mas também podemos descrever um perceptron como uma rede bem simples, no qual encontramos uma entrada, uma bia, um g a ser encontrado, um g(v) .

Os modelos da rede neural de várias camadas possuem: a camada de entradas, com uma variável i variando de 0 até n, as intermediárias entre as duas primeiras camadas, com uma variável j, variando de 0 até n também, e uma última camada, a de saída, com a variável k variando de 1 até n, pois nessa camada, podemos verificar que não existem bias.

O BackPropagation é um algoritmo que a partir de uma entrada padrão propaga a entrada até seu final.

Calculamos seus erros, reajustamos seus pesos, afim de que possamos passar novos padrões de entrada para um novo padrão de treino, para propagar novamente até o fim, repetindo este mesmo processo, até que todos os exemplos da matriz de treinamento sejam utilizados, e calculando o EQM, ou seja erro quadrático médio de cada época, sendo que uma época equivale a passar todos os exemplos de treino.

O cálculo do EQM é feito para diversas épocas, até que este seja menor que o erro objetivo para uma certa época.

Perceptron é apenas um nome, que advém da ideia de perceber um fato, essa ideia de percepção está correlacionada ao cérebro, que é o órgão no qual temos o feeling que nos faz distinguir um objeto de outro, uma pessoa de outra, enfim, a percepção sensorial humana.

O trabalho rodado no programa Weka utilizou o Algoritmo do MultiLayer Perceptron para tentar explicar seus resultados e sua saída.

 

4. Conclusão

 

O objetivo primordial de nosso trabalho, como foi citado acima, é o de identificar as pessoas que morreram, ou sobreviveram após o ataque cardíaco no decorrer de um ano após o fato.

A maior parte do tempo necessário para construir um modelo de redes neurais é gasto no processo de identificação da melhor topologia e na de treinamento.

Determinar uma boa estrutura de rede, ou topologia,é um dos caminhos para se diminuir esse tempo, mas só isto não basta para se ter uma rede que ofereça resultados aceitáveis.

Para que níveis satisfatórios sejam atingidos, muitos algoritmos devem ser levados em consideração e testados, visto que o BackPropagation é apenas um algoritmo dentre vários classificadores, dentre eles como já foram citados acima, redes Bayes, árvores de decisão, as próprias redes neurais etc…

Usamos os respectivos tipos de testes abaixo:

-Cross-validation;

-Percentage split;

Na saída do classificador, (aparece o tipo escolhido ultilayer Perceptron), o nome da base de dados (echocardiogrambase), o número de instâncias (132), o número de atributos ou classes (13), no qual as bases foram classificadas. Aparece o nome de cada um dos atributos e sua respectiva classificação, binário,numérico etc.

O fato da classificação é muito importante, pois influencia no andamento do weka, pois na fase de construção do arquivo arff, se algum destes atributos estiverem errados, provavelmente o weka não rodará o arquivo corretamente, avisando de possíveis erros.

A seguir, notamos, os valores dos pesos de cada nó, o percentual dos dados que foram classificados corretamente, incorretamente, o modo de teste, bem como sua matriz confusa.

No teste de ‘cross-validation’, foram classificados corretamente 21 instâncias ou 91.3043 %% e o restante, ou seja, 2 ou 8.6957 % foram classificados incorretamente.

Isto também pode ser visualizado na matriz de confusão abaixo:

 

=== Confusion Matrix ===

 

a           b             ß           classified as

15          1             |               a = 0

1           6             |               b = 1

 

Aqui podemos observar o seguinte, que 15 instâncias foram classificadas corretamente como ‘a’ (morto) e 1 foi classificado incorretamente como ‘a’. E 6 foram classificados corretamente como ‘b’ (ainda-vivo) e 1 classificado incorretamente como ‘b’.

A título de exemplificação explicamos por cima como o crossroads foi feito.

A seguir será explicitado sucintamente o outro tipo de teste, que é o que mais nos interessa.

No teste de ‘percentage-split’ com 66% da amostra, foram classificados corretamente 40 atributos ou 90.9091 % e apenas 4 instâncias foram classificadas como incorretas, dando um percentual de 9.0909 %.

Esse percentual foi calculado através da conta de 66% de 132 instâncias do total, o que retornaria em torno de 88,diminuídos de 132, temos o número de 44 instâncias a serem passados no teste.

Devemos notar que para que o teste seja corretamente feito, devemos selecionar o atributo objetivo, que no caso, será o atributo ainda-vivo, que especifica o nosso problema, ou seja, se o paciente que tenha sofrido a arritmia cardíaca, se ele ainda continua vivo.

Isso também pode ser visualizado na matriz de confusão abaixo:

 

=== Confusion Matrix ===

 

a  b   <– classified as

17  3 |  a = 1

1 23 |  b = 0

 

Instâncias classificadas corretamente: 17 + 23 =  40

Instâncias classificadas incorretamente: 3+1  =  4

 

O weka nos fornece ainda, o erro quadrático absoluto em módulo, este erro como já foi estudado, é calculado pelo somatório do erro calculado, menos o erro pretendido, elevado ao quadrado em módulo ou valor absoluto, o erro foi de 0.0942.

Enfim averiguamos, que o melhor tipo de teste, para termos uma noção real do que está acontecendo com a base de dados, é a partir  do percentage – split, pois neste, o weka, roda padrões de treino, tendo como resultado final o teste já validado, e conseqüentemente o algoritmo já treinado, para reconhecer os dados.

Utilizando-se da base echocardiogram, fizemos o uso da ferramenta Weka, garimpando dados que antes pareciam inexpressivos e sem sentido algum, com a mineração, os dados se juntaram e deram um significado plausível e o mais próximo possível de nossa realidade, atingindo nosso objetivo de sabermos uma percentagem para uma dada pergunta. Através de cálculos realizados, utilizamos o classificador do algoritmo backpropagation tirando assim, conclusões concretas sobre o estudo desta base.

 

5. Referencias

 

[1] Pilla Jr, Valfredo, e Lopes, Heitor Silvério, “Reconhecimento de Padrões em Sinais Eletrocardiográficos com Rede Neurofuzzy e Algoritmos Genéticos”, IV Congresso Brasileiro de Redes Neurais pp. 042-046 Jul 20-22,1999-Ita, São José dos Campos – SP – Brasil.

 

[2] Soares, Pedro P. da Silva, e Nadal Jurandir, “Aplicação de uma Rede Neural Feedforward com Algoritmo de Levenberg-Marquardt para Classificação de Alterações do Segmento ST do Eletrocardiograma”, IV Congresso Brasileiro de Redes Neurais pp. 384-389, Jul 20-22,1999-Ita, São José dos Campos – SP – Brasil

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *