[Exemplo] Analisando a coluna vertebral - utilizando o reconhecimento de padrões na área médica

1) Introdução


A área da medicina é uma das mais prestigiadas e importantes áreas da ciência. Curar doenças e detecta-las muitas vezes passa pelo crivo de profissionais renomados e de anos de experiência para que o resultado seja satisfatório. 

No entanto, esta área tem sido "invadida" pela tecnologia e cada dia mais os médicos têm contado com exames, robôs cirurgiões, literatura na palma da mão, etc. Todos estes recursos permitem que o profissional desempenhe melhor seu trabalho.

Neste artigo veremos como é possível utilizar a ciência da computação e técnicas de Inteligência Artificial (reconhecimento de padrões) para conseguir um diagnóstico. 



2) Aprendizado supervisionado

Para reconhecer se algo é normal ou não, precisamos primeiro saber o que é normal. certo? Inconscientemente nós fazemos isso o tempo todo. Por exemplo, observamos o rosto de pessoas todos os dias, conhecemos diversas expressões, traços de idade, imperfeições, maquiagem, etc. Mas quando vemos algo diferente, logo nosso cérebro nos manda um sinal... Opa! isso não é normal. 

Então, podemos dizer que o normal depende muito do que você já viu como exemplos e julgará ao final a "normalidade". Imagine que você vive em um local que todas as pessoas possuem 6 dedos, qual sua reação a ver uma pessoa com 5 dedos?

3) Quem são nossos exemplos?

O dataset escolhido contém dados numéricos sobre a coluna do paciente e usa os dados para classificar uma exemplo em normal ou anormal. Neste conjunto de dados, estão presentes 310 exemplos, 13 atributos, 12 atributos numéricos, 1 classe binária.


4) Um pouco de conhecimento apresentado no dataset 

O dataset foi extraído de um repositório publico e está disponível aqui.

A dor lombar pode ser causada por uma variedade de problemas em qualquer parte da complexa e interconectada rede de músculos, nervos, ossos, discos ou tendões da coluna lombar. 

Fontes típicas de dor lombar incluem: 

  • As grandes raízes nervosas na região lombar que vão para as pernas podem ficar irritadas. 
  • Os nervos menores que suprem a região lombar podem ficar irritados. 
  • Os grandes músculos das costas inferiores (eretores da espinha) podem ficar tensos. 
  • Os ossos, ligamentos ou articulações podem estar danificados. 
  • O disco intervertebral pode estar degenerando uma irritação ou problema em qualquer uma dessas estruturas pode causar dor lombar e / ou dor que irradia ou é referida a outras partes do corpo. 
  • Muitos problemas nas costas também causam espasmos musculares nas costas, que não parecem muito, mas podem causar dor e incapacidade severas.

Embora a dor lombar seja extremamente comum, os sintomas e a gravidade da dor lombar variam muito. Uma simples distensão do músculo lombar pode ser excruciante o suficiente para exigir uma visita à sala de emergência, enquanto um disco em degeneração pode causar apenas desconforto leve e intermitente



Hiperlordoses e hipercifosessão caracterizadas por um aumento de uma ou mais lordose ou cifose da coluna. As hipolordoses e hipocifoses são caracterizadas por uma diminuição de uma ou mais lordose ou cifose da coluna.

EscolioseA escoliose é uma curvatura anormal da coluna para um dos lados do tronco, podendo causar assimetria e dor.

EspondilolisteseDistúrbio da coluna em que um osso (vértebra) desliza para frente sobre o osso abaixo dele.

5) Algoritmos usados

Weka j48

O algoritmo J48, desenvolvido por Ross Quinlan, constrói árvores de decisão a partir de um conjunto de dados de treinamento. As árvores de decisão geradas pelo algoritmo podem ser utilizadas para classificação, logo são conhecidas como classificadores estatísticos. 


CART

CART ou Classification And Regression Tree (árvore de classificação e regressão) é um algoritmo usado na mineração de dados que usa dois conceitos principais: A análise da árvore de classificação é feita quando o resultado previsto é a classe à qual os dados pertencem. A análise de árvore de regressão é quando o resultado previsto pode ser considerado um número real (por exemplo, o preço de uma casa ou o tempo de permanência de um paciente em um hospital). Esse algoritmo usa a métrica de Gini para dividir as categorias em grupos separados.



Os algoritmos citados foram aplicados utilizando o Weka. Faça download da ferramenta aqui.

Figura 1 - Tela inicial do weka quando carregado o dataset

Ao utilizar o J48 com as seguintes opções: unpruned - false, confidence factor: 0.25, sem a seleção de atributos. Veja o resultado:

=== Run information ===
Test mode: 10-fold cross-validation
----------------- degree_spondylolisthesis <= 19.854759 | pelvic_radius <= 125.212716 | | sacral_slope <= 40.475232 | | | sacrum_angle <= 4.894807: Abnormal (71.0/20.0) | | | sacrum_angle > 4.894807: Normal (5.0) | | sacral_slope > 40.475232 | | | degree_spondylolisthesis <= 9.064582 | | | | pelvic_tilt <= 18.898407: Normal (20.0) | | | | pelvic_tilt > 18.898407 | | | | | lumbar_lordosis_angle <= 56.3 | | | | | | scoliosis_slope <= 28.3449: Abnormal (4.0) | | | | | | scoliosis_slope > 28.3449: Normal (2.0) | | | | | lumbar_lordosis_angle > 56.3: Normal (5.0) | | | degree_spondylolisthesis > 9.064582: Abnormal (6.0/1.0) | pelvic_radius > 125.212716: Normal (52.0/7.0) degree_spondylolisthesis > 19.854759: Abnormal (145.0/2.0) Number of Leaves : 9 Size of the tree : 17 Time taken to build model: 0.01 seconds

=== Stratified cross-validation === === Summary === Correctly Classified Instances 253 81.6129 % Incorrectly Classified Instances 57 18.3871 % Kappa statistic 0.5597 Mean absolute error 0.2071 Root mean squared error 0.3912 Relative absolute error 47.331 % Root relative squared error 83.6934 % Total Number of Instances 310

=== Detailed Accuracy By Class === TP Rate FP Rate Precision Recall F-Measure MCC ROC Area PRC Area Class 0.905 0.370 0.837 0.905 0.870 0.565 0.816 0.844 Abnormal 0.630 0.095 0.759 0.630 0.689 0.565 0.816 0.690 Normal Weighted Avg. 0.816 0.281 0.812 0.816 0.811 0.565 0.816 0.794

=== Confusion Matrix === a b <-- classified as 190 20 | a = Abnormal 37 63 | b = Normal



Agora observe os resultados utilizando o Simple CART:

=== Run information === Test mode: 10-fold cross-validation === Classifier model (full training set) === CART Decision Tree degree_spondylolisthesis < 14.85401384 | pelvic_radius < 125.30192704999999 | | sacral_slope < 40.56599579 | | | sacrum_angle < 4.968382: Abnormal(50.0/20.0) | | | sacrum_angle >= 4.968382: Normal(5.0/0.0) | | sacral_slope >= 40.56599579: Normal(28.0/8.0) | pelvic_radius >= 125.30192704999999: Normal(44.0/6.0) degree_spondylolisthesis >= 14.85401384: Abnormal(146.0/3.0) Number of Leaf Nodes: 5 Size of the Tree: 9 Time taken to build model: 0.03 seconds === Stratified cross-validation === === Summary === Correctly Classified Instances 258 83.2258 % Incorrectly Classified Instances 52 16.7742 % Kappa statistic 0.6121 Mean absolute error 0.2176 Root mean squared error 0.3561 Relative absolute error 49.7267 % Root relative squared error 76.1705 % Total Number of Instances 310 === Detailed Accuracy By Class === TP Rate FP Rate Precision Recall F-Measure MCC ROC Area PRC Area Class 0.886 0.280 0.869 0.886 0.877 0.612 0.877 0.930 Abnormal 0.720 0.114 0.750 0.720 0.735 0.612 0.877 0.684 Normal Weighted Avg. 0.832 0.227 0.831 0.832 0.831 0.612 0.877 0.850 === Confusion Matrix === a b <-- classified as 186 24 | a = Abnormal 28 72 | b = Normal


6) Conclusão

Com estes dados, o algoritmo foi treinado para receber um novo exemplo e a partir do modelo construido
podemos avaliar com uma precisão de 84.5% se uma coluna é anormal e 75% se a coluna é normal.
Este modelo poderia auxiliar médicos a realizar um diagnóstico com maior agilidade e precisão.

Este trabalho foi desenvolvido por Rafaela Bennet e está disponível neste link.
[Exemplo] Analisando a coluna vertebral - utilizando o reconhecimento de padrões na área médica [Exemplo] Analisando a coluna vertebral - utilizando o reconhecimento de padrões na área médica Reviewed by Vinicius dos Santos on 06:32:00 Rating: 5

Nenhum comentário

Escreve ai sua opinião!