UM ALGORITMO HÍBRIDO PARA EXTRAÇÃO DE CONHECIMENTO EM
BIOINFORMÁTICA
Ricardo Linden
TESE
SUBMETIDA
AO
CORPO
DOCENTE
DA
COORDENAÇÃO
DOS
PROGRAMAS DE PÓS-GRADUAÇÃO DE ENGENHARIA DA UNIVERSIDADE
FEDERAL DO RIO DE JANEIRO COMO PARTE DOS REQUISITOS NECESSÁRIOS
PARA A OBTENÇÃO DO GRAU DE DOUTOR EM CIÊNCIAS EM ENGENHARIA
ELÉTRICA.
Aprovada por:
Prof. Amit Bhaya, Ph.D.
Prof. Alexandre Gonçalves Evsukoff, Dr.
Profa. Ana Lúcia Cetertich Bazzan, Dr. Ing.
Prof. André Carlos Ponce de Leon de Carvalho, Ph.D.
Prof. Nelson Francisco Favilla Ebecken, D. Sc.
RIO DE JANEIRO, RJ – BRASIL
ABRIL DE 2005
LINDEN, RICARDO
Um Algoritmo Híbrido Para Extração
de Conhecimento em Bioinformática
[Rio de Janeiro] 2005
IX, 204p, 29,7 cm (COPPE/UFRJ,
D.Sc., Engenharia Elétrica, 2005)
Tese – Universidade Federal do Rio
de Janeiro, COPPE
1. Bioinformática
2. Classificação
3. Programação Genética
4. Lógica Nebulosa
I. COPPE/UFRJ II. Título (série)
ii
Dedicatória
Gostaria de dedicar esta tese à minha esposa Claudia Wolff, que foi minha companheira em
todos os momentos da elaboração desta tese, tanto os bons e ruins, e sofreu todas as dores
do parto comigo.
Gostaria também de dedicar esta tese a meus pais, que sempre me incentivaram, e que me
impediram de tentar ser jogador de futebol profissional.
Não poderia me esquecer de dedicar esta tese também aos meus amigos da D-11. Paulo,
Fátima, Marcelo, Guilherme, Bianco e Plutarcho foram sempre companheiros nesta longa
jornada.
iii
Agradecimentos
A realização desta tese não seria possível sem a ajuda e compreensão de duas pessoas
muito especiais.
A primeira é o meu amigo e chefe no CEPEL, Victor Navarro Araújo Lemos da Silva, que
sempre ofereceu sua amizade quando mais necessitei durante todo este período,
compreendendo todas as dificuldades impostas por um doutorado e ajudando sempre que
necessário.
A segunda é a reitora da Faculdade Salesiana Maria Auxiliadora, onde leciono, a Irmã
Maria Léa Ramos. A Irmã Léa criou um ambiente agradável e amistoso, onde é ótimo
trabalhar e sempre incentivou a todos os professores, e a mim especialmente, a procurar
crescer como profissionais.
Além disto, gostaria de agradecer ao Dr. Marcos Antônio dos Santos, que gastou seu tempo
explicando conceitos de oncologia e analisando os conjuntos de dados de sua área, dando
maior validade à análise realizada nesta tese.
A todos, meu mais sincero obrigado.
iv
Resumo da Tese apresentada à COPPE/UFRJ como parte dos requisitos necessários para a
obtenção do grau de Doutor em Ciências (D.Sc)
UM ALGORITMO HÍBRIDO PARA EXTRAÇÃO DE CONHECIMENTO EM
BIOINFORMÁTICA
Ricardo Linden
Abril/2005
Orientador: Amit Bhaya
Programa: Engenharia Elétrica
Nesta tese, lógica nebulosa, algoritmos evolucionários, e um algoritmo iterativo
para agrupamento de dados categóricos foram usados para propor um novo algoritmo para
analisar vários problemas para os quais existem dados insuficientes para a aplicação de
técnicas
estatísticas
tradicionais.
Este
algoritmo
permite
que
sejam
tratados
simultaneamente dados Booleanos, contínuos e categóricos ou não numéricos.
Este algoritmo foi utilizado em dois tipos de aplicações principais: engenharia
reversa de redes de regulação genética e classificação de dados numéricos e categóricos.
Os
problemas
de
bioinformática
analisados
consistem
em extração
de
relacionamentos regulatórios a partir de uma quantidade insuficiente de dados para permitir
uma análise utilizando técnicas convencionais, como estatística. Neste contexto, obtêm-se
resultados que servem como guias de pesquisa, permitindo que se façam menos
experimentos laboratoriais, efetivamente direcionados para a obtenção de reguladores reais.
No caso de problemas de classificação, o algoritmo proposto foi aplicado em alguns
dos problemas mais utilizados como benchmark no meio de classificação e mostrou-se
capaz de obter resultados comparáveis aos melhores métodos existentes, porém com maior
consistência e interpretabilidade para o usuário final.
v
Abstract of Thesis presented to COPPE/UFRJ as a partial fulfillment of the requirements
for the degree of Doctor of Science (D.Sc)
A HYBRID ALGORITHM FOR KNOWLEDGE EXTRACTION IN BIOINFORMATICS
Ricardo Linden
April/2005
Advisor: Amit Bhaya
Department: Electrical Engineering
In this work fuzzy logic, evolutionary algorithms and an iterative algorithm to
cluster categorical data are used to develop a new algorithm to analyze several problems for
which there is insufficient data to allow the application of traditional statistical techniques.
This algorithm allows for simultaneous usage of Boolean, numerical and categorical data.
This algorithm was used in two main applications: reverse engineering of regulation
networks and categorical and numerical data clustering.
The bioinformatics problem studied in this thesis is the extraction of regulatory
relationships from a data set, which is too small for the application of conventional
techniques such as statistical analysis. In this scenario, using the proposed approach, it is
possible to obtain results that serve as research guidelines, allowing the realization of
biological lab experiments that are more effectively directed to the finding of the real
regulators.
For classification problems, the proposed algorithm was applied to several problems
that have traditionally been considered as benchmarks in the area. It has consistently
achieved results that are comparable to the best methods, but in a format that is more
comprehensible for the final user.
vi
Índice
CAPÍTULO 1 INTRODUÇÃO ....................................................................................................................... 1
1.1 OBJETIVOS DESTE TRABALHO.................................................................................................................... 1
1.2 REVISÃO BIBLIOGRÁFICA .......................................................................................................................... 2
1.3 CONTRIBUIÇÃO DESTA TESE ..................................................................................................................... 7
1.4 ORGANIZAÇÃO DESTE TRABALHO ............................................................................................................. 8
CAPÍTULO 2 CONCEITOS PRELIMINARES ......................................................................................... 10
2.1 LÓGICA FUZZY ........................................................................................................................................ 10
2.2 ALGORITMOS EVOLUCIONÁRIOS .............................................................................................................. 23
2.3 REDES DE REGULAÇÃO GENÉTICA ........................................................................................................... 29
2.4 MICROARRAYS DE DNA ......................................................................................................................... 33
CAPÍTULO 3 – ALGORITMO BOOLEANO PROPOSTO...................................................................... 38
3.1 REDES BOOLEANAS ................................................................................................................................. 39
3.2 MODELANDO REDES DE REGULAÇÃO GENÉTICA COM REDES BOOLEANAS ............................................ 40
3.3 O MODELO PROPOSTO ............................................................................................................................. 44
3.3.1 Estrutura do Cromossomo............................................................................................................... 45
3.3.2 Operadores Genéticos ..................................................................................................................... 46
3.3.3 Função de Avaliação ....................................................................................................................... 49
3.3.4 Combinando soluções...................................................................................................................... 51
3.3.5 Critérios de terminação................................................................................................................... 53
3.4 RESULTADOS ........................................................................................................................................... 54
3.5 CONCLUSÃO ............................................................................................................................................ 68
CAPÍTULO 4 - ALGORITMO CONTÍNUO PROPOSTO ....................................................................... 69
4.1 INTRODUÇÃO........................................................................................................................................... 69
4.2 ESTRUTURA DO CROMOSSOMO ................................................................................................................ 73
4.2.1 Conceitos ......................................................................................................................................... 73
4.2.2 Implementação ................................................................................................................................ 83
4.3 FUNÇÃO DE AVALIAÇÃO .......................................................................................................................... 85
4.3.1 Função utilizada.............................................................................................................................. 85
4.3.2 Avaliações separadas ...................................................................................................................... 89
4.4 OPERADORES GENÉTICOS ....................................................................................................................... 91
4.4.1 Operador de crossover .................................................................................................................... 92
4.4.2 Operador de mutação...................................................................................................................... 95
4.4.3 Implementação dos operadores....................................................................................................... 96
4.5 CRITÉRIOS DE PARADA ............................................................................................................................ 98
4.6 DADOS CATEGÓRICOS ............................................................................................................................. 99
4.7 MODIFICAÇÕES NO CROMOSSOMO......................................................................................................... 100
4.8 INICIALIZANDO OS CONJUNTOS DE VALORES CATEGÓRICOS .................................................................. 100
4.9 ALGORITMOS GENÉTICOS PARALELOS .................................................................................................. 114
4.9.1 Conceitos ....................................................................................................................................... 114
4.9.2 Implementação .............................................................................................................................. 116
4.10 COMPARANDO A REPRESENTAÇÃO PROPOSTA COM OUTRAS PRÉ-EXISTENTES ..................................... 118
CAPÍTULO 5 - APLICAÇÕES EM BIOINFORMÁTICA...................................................................... 120
5.1 PRÉ-PROCESSAMENTO DOS DADOS ........................................................................................................ 121
5.2 SEPARANDO CANDIDATOS A REGULADOR ............................................................................................. 124
5.3 AGRUPAMENTO ..................................................................................................................................... 125
5.4 INCORPORANDO CONHECIMENTO EXISTENTE ........................................................................................ 131
5.5 RESULTADOS ......................................................................................................................................... 132
vii
5.5.1 Resposta ao frio da Arabidopsis thaliana...................................................................................... 135
5.5.2 Sistema nervoso central de ratos................................................................................................... 139
5.6 COMENTÁRIOS GERAIS SOBRE A APLICAÇÃO DE ENGENHARIA REVERSA ............................................... 143
CAPÍTULO 6 - CONCLUSÃO E TRABALHOS FUTUROS.................................................................. 147
6.1 ALGORITMO PROPOSTO ......................................................................................................................... 147
6.2 APLICAÇÕES EM BIOINFORMÁTICA ....................................................................................................... 149
6.3 TRABALHOS FUTUROS........................................................................................................................... 151
6.3.1 Seleção de candidatos a reguladores ........................................................................................... 152
6.3.2 Integração com um laboratório de bioinformática ....................................................................... 153
BIBLIOGRAFIA .......................................................................................................................................... 155
APÊNDICE A– APLICAÇÕES EM CLASSIFICAÇÃO ......................................................................... 166
A.1 INTRODUÇÃO ........................................................................................................................................ 166
A.2 MUDANÇAS NA FUNÇÃO DE AVALIAÇÃO .............................................................................................. 168
A.3 AVALIAÇÃO DO DESEMPENHO DE UM ALGORITMO DE CLASSIFICAÇÃO................................................. 173
A.4 APLICAÇÕES NUMÉRICAS DO ALGORITMO PROPOSTO ........................................................................... 176
A.4.1 Íris ................................................................................................................................................. 176
A.4.2 Diabetes ........................................................................................................................................ 180
A.5 APLICAÇÕES DO ALGORITMO PROPOSTO A DADOS CATEGÓRICOS ......................................................... 187
A.5.1 Análise de crédito.......................................................................................................................... 187
A.5.2 Câncer no seio .............................................................................................................................. 194
A.6 COMENTÁRIOS GERAIS SOBRE A APLICAÇÃO DE CLASSIFICAÇÃO ......................................................... 199
A.7 CONCLUSÃO ......................................................................................................................................... 201
viii
Tabela de Símbolos
bvik(t)
valor assumido pelo k-ésimo gene regulador do gene i no instante t.
EA
Algoritmo Evolucionário
GA
Algoritmo Genético
GP
Programa Genético
H(Y|X)
entropia da variável Y condicional à variável X
H(Y|X=υk)
entropia condicional específica da variável Y quando X assume o valor dado
por υk
k
número de genes reguladores de um nó
K
número de arestas saindo de um nó de uma rede Booleana com número fixo
de reguladores.
MAPE
Mean Absolute Percent Error – média dos módulos dos erros percentuais
cometidos
n
número de genes presentes nos dados
SVM
Support Vector Machine
uτi
valor da i-ésima coluna (variável) de uma tupla τ
vjn
n-ésimo gene regulador do gene j, onde n=1,...,k.
w uτi
peso associado ao valor uτi durante a execução do STIRR
ρij
correlação entre o padrão de expressão dos genes i e j.
τ
uma tupla de um conjunto de dados.
υk
um dos n valores distintos assumidos por uma variável em um conjunto de
dados
Ω
Limite assintótico mínimo da quantidade de tempo ou dados necessários
para um algoritmo.
ix
Capítulo 1 Introdução
Neste capítulo serão discutidas brevemente as motivações deste trabalho,
apresentando o que já foi feito anteriormente nesta área e as principais melhorias
alcançadas pelo trabalho desenvolvido. Todos os conceitos descritos neste capítulo serão
discutidos de forma mais detalhada nos capítulos a seguir.
1.1 Objetivos deste trabalho
O objetivo inicial deste trabalho foi desenvolver uma ferramenta capaz de analisar
dados escassos, provenientes de fontes de difícil acesso, tanto por questões de ordem
prática quanto financeira. Estas ferramentas se mostravam necessárias para analisar
conjuntos de dados cuja dimensionalidade não permitiria a aplicação de técnicas
tradicionais de análise estatística.
As técnicas tradicionais necessitam de conjuntos volumosos de dados, com
tamanhos “estatisticamente significativos”. Entretanto, existem várias considerações
experimentais que podem impedir a obtenção de tais conjuntos. Um exemplo claro ocorre
na área de análise de dados de microarrays, na qual cada experimento pode custar centenas,
ou mesmo milhares de dólares, o que limita sua reprodutibilidade em laboratórios que não
disponham de recursos financeiros deste porte. Isto não deveria impedir que estes dados
1
fossem analisados, mesmo que os resultados desta análise sejam vistos com cautela (por
falta de significância estatística).
Tudo isto nos impeliu para a criação de nosso algoritmo e da ferramenta que o
implementa na prática. Esta ferramenta serve como uma plataforma de análise de dados
bem como uma geradora de hipóteses que devem ser analisadas a posteriori em condições
reais (como a bancada de um laboratório de análises genéticas, por exemplo).
Estas hipóteses, apesar de não serem estatisticamente significativas, servem como
guias de pesquisa, fornecendo estradas promissoras para serem trilhadas por cientistas que
desejarem realizar suas pesquisas de forma mais eficiente.
No decorrer do trabalho, percebemos que o algoritmo proposto é eficiente na
extração de conhecimento subjacente aos dados, processo este conhecido como mineração
de dados. Assim, ampliamos nossos esforços para contemplar esta importante área da
computação, mais especificamente, para a tarefa de classificação de conjuntos de dados.
Estes dois objetivos não são mutuamente excludentes, mas sim demonstram a
possibilidade de se aplicar o trabalho aqui desenvolvido em áreas correlatas nas quais há
necessidade de novas ferramentas com as características descritas acima..
1.2 Revisão Bibliográfica
A idéia de utilizar algoritmos evolucionários para desenvolver bases de regras fuzzy
não é nova, e tem sido explorada intensamente na literatura.
HERRERA et al. (1997) foram um dos primeiros a descrever detalhadamente o uso
de algoritmos genéticos na evolução de sistemas fuzzy. Este trabalho consiste em um
tutorial que descreve as principais características do desenvolvimento de regras fuzzy
usando algoritmos genéticos. Este trabalho contém várias descrições de como evoluir bases
de regras, algumas das quais foram aproveitadas nos capítulo 3 e 4 desta tese.
(FREITAS, 2000) faz uma revisão da literatura em que descreve os principais usos
de algoritmos genéticos na área de mineração de dados, na qual o trabalho descrito nesta
2
tese se encaixa. Este artigo descreve vários modelos de busca de conhecimento, isto é,
formas diferentes de evoluir de bases de regras.
Alguns
artigos
recentes
utilizaram
algoritmos
evolucionários
para
o
desenvolvimento de bases de regra fuzzy. Entre eles podemos citar (BENTLEY, 1999,
DASGUPTA et al., 2002, MENDES et al., 2001, HETLAND et al., 2002. Todos eles têm
características particulares que são comparadas com a representação utilizada no capítulo 4
desta tese.
A busca de redes de regulação de DNA, uma das aplicações discutidas neste
trabalho, tem sido uma grande preocupação recente da ciência. DE JONG (2002) apresenta
uma extensa revisão do trabalho realizado nesta área. Entre os trabalhos citados nesta
revisão, pode-se destacar aquele apresentado por SMOLEN et al. (2000), que usa modelos
matemáticos baseados em equações diferenciais e o de WAGNER (2001), que se baseia na
análise de perturbação de redes. Ambos os modelos foram descartados por se basearem em
uma quantidade de dados que atualmente não é facilmente atingível, tornando-os inviáveis
para as aplicações alvo deste trabalho.
Existem trabalhos baseados em análise perturbacional que não necessitam de dados
pós-perturbação de todos os genes em consideração, tais como (SONTAG et al., 2004).
Entretanto, por questões estatísticas, desconsideradas em tal artigo, múltiplas perturbações
deveriam ser realizadas e por conseguinte, o número de experimentos necessários ainda se
mostra pouco prático devido a questões monetárias.
O problema da limitação de recursos financeiros é real e atinge praticamente todos
os laboratórios que realizam pesquisa baseada em microarrays. ZIEN et al. (2002) busca
quantificar o número de microarrays necessários, de forma a organizar e limitar uma
pesquisa, obtendo uma fórmula para se calcular o número desejável de experimentos e
replicações, de forma a obter um conjunto de dados o mais significativo possível.
Existem trabalhos que trazem enfoques computacionais relevantes. HAUTANIEMI
(2003), por exemplo, apresenta um capítulo sobre a escolha de variáveis de interesse em um
processo de desenvolvimento de câncer. A seleção de variáveis é feita através do conceito
de variável expressa de forma diferenciada, através de uma razão em relação à
normalidade. Posteriormente, é usado um algoritmo hierárquico de agrupamento para
separação dos dados.
3
Existem vários trabalhos na área biológica que buscam interpretar as redes de
regulação genética sob uma abordagem mais sistemática, fornecendo os mecanismos
básicos de compreensão das mesmas para a aplicação de técnicas computacionais como a
proposta nesta tese.
DAVIDSON et al. (2002), por exemplo, faz uma análise de desenvolvimento e
perturbação da rede de regulação genética, concentrando-se na área de desenvolvimento
embrionário.
O principal passo de pré-processamento adotado na aplicação descrita nesta tese
consiste em agrupar os elementos que possuam um perfil de expressão semelhante,
teorizando portanto que eles estejam sob o efeito de um processo de regulação semelhante.
Assim, foi necessário efetuar um estudo das técnicas de agrupamento que poderiam se
mostrar úteis na aplicação proposta.
JIANG et al. (2002) apresentam uma revisão abrangente do uso deste processo de
agrupamento (clustering) aplicado a dados biológicos, analisando desde as técnicas de
obtenção de dados até os métodos mais tradicionais de agrupamento, tais como K-Means,
Agrupamento Hierárquico, baseada em grafos e SOM, com suas respectivas aplicações na
área de análise de dados de microarrays.
HANISCH et al. (2002) apresenta uma estratégia mais avançada que inclui a
utilização de modelos teóricos associados aos dados na hora de se fazer o agrupamento.
Esta estratégia discute a aplicação da técnica que é denominada co-clustering na análise de
redes metabólicas.
Outro ponto importante a se considerar é a questão da utilização do conhecimento
disponível a priori. SCHRAGER et al (2002) discutem a importância da idéia de poder
incluir modelos teóricos na análise dos dados.
Este conceito está embutido na ferramenta aqui desenvolvida, que permite que o
usuário inclua dados obtidos em modelos teóricos na análise que o programa efetua. Este
tipo de abordagem é mais completo, tendo em vista que não despreza o conhecimento préexistente, usando-o como uma plataforma a partir da qual torna-se mais fácil obter
resultados práticos.
O uso de algoritmos genéticos na busca de redes de regulação de DNA também tem
sido motivo de forte pesquisa recente. Entre os vários trabalhos disponíveis, podemos
4
destacar o de (SZALLASI et al, 1998), (AKUTSU et al., 1999) e a tese de doutorado
descrita em (D’HAESELEER, 1993), que desenvolveram um extenso trabalho na
identificação de redes de regulação usando o modelo Booleano (descrito detalhadamente no
capítulo 3 desta tese) e ANDO et al. (2000), que utiliza representações reais e grafos,
representados usando-se matrizes.
SPIETH et al. (2004) adotam uma abordagem diferente para algoritmos
evolucionários neste problema, definindo um modelo fechado, baseado em sistemas S (tipo
especial de equações diferenciais), usando um algoritmo genético para otimizar os
parâmetros destas equações.
Assim como o trabalho descrito nesta tese, muitos outros pesquisadores buscaram
usar ferramentas de clustering de forma a pré-processar os dados decorrentes de
microarray, buscando diminuir a quantidade de dados que estes disponibilizam ou
simplesmente para obter mais informação a partir dos dados brutos. As diferenças entre
estes trabalhos serão apresentadas na seção 5.8 desta tese.
Outros trabalhos interessantes em áreas correlatas fornecem informações
interessantes sobre a evolução de redes de regulação. Por exemplo, KOZA et al. (2001)
descrevem a evolução de redes de regulação metabólica usando programação genética,
trabalho muito próximo, em essência, à aplicação que é discutida no capítulo 5 desta tese.
PIASECZNY et al. (2004) descreve um novo e interessante algoritmo evolucionário
que se baseia na relação entre DNA e aminoácidos para evoluir soluções para um problema.
Entretanto, tal algoritmo é bastante recente, e aplicações mais avançadas do mesmo ainda
não estão disponíveis.
Como dados de microarray normalmente tem uma dimensão (quantidade de genes
medidos) duas ou três ordens de grandeza maior do que a outra (quantidade de medidas),
ALTER et al. (2001) sugerem que uma idéia razoável seria aplicar a decomposição em
valores singulares, para torná-la mais tratável.
A área de classificação, aplicação descrita no apêndice A desta tese, é muito rica em
trabalhos. Vários trabalhos utilizam os exemplos tipo benchmark usados nesta tese como
forma de avaliar seu desempenho, entre os quais podemos destacar (EGGERMONT et al.,
2004a), que usa uma estratégia evolutiva para criar uma árvore de decisão,
5
DOUNIAS et al. (2002) e ZHOU et al. (2002) apresentam uma abordagem similar
àquela adotada nesta tese, de evolução de regras para classificação. Entretanto, os
operadores e regras desenvolvidas nestes trabalhos apresentam algumas diferenças
significativas que os tornam menos completos do que os descritos nesta tese, como será
visto no apêndice A.
Ao buscar um algoritmo que pudesse ajudar na análise de dados categóricos,
encontra-se uma seleção extensa de pesquisas que descrevem algoritmos interessantes e
poderosos. CHEN et al. (2003) apresenta uma excelente revisão do tópico, enquanto que
SCHEAFFER (1999) descreve algumas técnicas estatísticas tradicionais usadas nesta área.
PALMER et al. (2003) apresenta um dentre vários trabalhos que buscam criar uma
maneira de se medir uma distância numérica entre atributos categóricos de forma a se
utilizar os algoritmos tradicionais, tais como K-Means ou hierárquicos.
Outras abordagens buscam criar algoritmos que se baseiam nos relacionamentos dos
dados categóricos em todo o conjunto de dados. GUHA et al. (2000) e CRISTOFOR et al.
(2000) descrevem dois algoritmos interessantes cujo uso foi descartado em favor do
algoritmo STIRR (GIBSON et al., 2000, ZHANG et al, 2000), que cria um sistema
dinâmico baseado nos dados e cuja descrição detalhada encontra-se no capítulo 4 desta tese,
na seção que descreve a aplicação do algoritmo a dados categóricos.
Quando se usam algoritmos evolucionários para evoluir uma base de dados fuzzy, o
espaço de busca é extremamente grande. Estes algoritmos podem beneficiar-se de medidas
de redução do espaço de busca, tais como as descritas em (EGGERMONT et al., 2004a),
sem grande perda de precisão. KIM et al. (2002) buscam escolher de forma mais eficiente
quais variáveis merecem ser considerados na elaboração dos conjuntos fuzzy utilizando um
algoritmo evolucionário na busca. Isto faz com que seja acrescentado mais um passo lento,
prejudicando sobremaneira o desempenho final do algoritmo.
6
1.3 Contribuição desta Tese
Durante o desenvolvimento desta tese, fez-se um estudo abrangente das técnicas
existentes para a mineração de dados numéricos, especialmente aquelas concentradas em
fontes de dados escassas.
Fez-se também uma análise extensa das técnicas aplicáveis a dados categóricos,
bem como aquelas que permitem que se lide com dados numéricos e categóricos
simultaneamente.
Os trabalhos de ambas as categorias foram sujeitos a uma análise crítica, apontando
deficiências, que são descritas no corpo desta tese. Buscou-se pontuar as críticas com um
caráter essencialmente prático, de forma que futuros usuários, tanto dos algoritmos
descritos aqui, quanto dos descritos nos artigos e teses citados, possam aprimorar suas
técnicas e obter resultados ainda melhores do que aqueles citados na literatura.
Com base nestes estudos, desenvolveu-se uma ferramenta baseada em um algoritmo
criado para esta tese, ferramenta esta que serve para realizar uma análise de conjunto de
dados, extraindo conhecimento de fontes cujo tamanho faz com que seja impraticável
aplicar técnicas estatísticas tradicionais.
Esta ferramenta pode ser usada também como forma de extrair conhecimento de
conjuntos de dados que incluam tanto dados numéricos quanto categóricos, e, em princípio,
não possui as deficiências levantadas acima.
Esta ferramenta busca fornecer resultados inteligíveis que podem ser facilmente
compreendidos e utilizados pelos pesquisadores que dela fizerem uso. Isto é uma vantagem
grande sobre várias abordagens de caixa-preta, como redes neurais e alguns métodos de
clustering.
Ademais, a ferramenta proposta possui a capacidade de incorporar conhecimento
prévio, diferentemente da maioria das técnicas estudadas. Esta capacidade é interessante
7
pois em várias áreas, especialmente na biologia, existe uma ampla gama de conhecimentos
disponível que não deve ser desprezada por um pesquisador.
A ferramenta proposta aqui possui um espectro amplo de aplicações, incluindo a
área de análise de microarrays e a classificação, o que é demonstrado através de exemplos
tipo benchmark apresentados ao longo do trabalho.
Resultados preliminares deste trabalho foram apresentados nos seguintes
congressos:
XII Artificial Neural Network in Engineering (ANNIE), realizado em Saint Louis,
EUA em Novembro/2002
I Workshop Brasileiro de Bioinformática (WOB), em formato de poster, realizado em
Gramado em Novembro/2002
III BIOMAT, realizado no Rio de Janeiro, em novembro/2003
Além disto, este trabalho gerou um artigo que foi submetido a uma revista indexada,
denominada Bioscience, artigo este que recebeu uma primeira avaliação positiva e se
encontra na segunda e última fase de revisão para publicação.
Outra conseqüência dos estudos realizados nesta tese, apesar de não ser diretamente
ligado ao tema proposto aqui, foi o tutorial apresentado na IV Jornada Iberoamericana de
Ingeniería de Software y Ingeniería de Conocimiento, realizado em Madrid, em novembro
de 2004. O tema deste tutorial foi agrupamento de dados numéricos e categóricos, e as
informações para a preparação do mesmo foram obtidas dos estudos realizados para a fase
de agrupamento de dados para a aplicação de bioinformática.
1.4 Organização deste Trabalho
Nesta tese será apresentado um algoritmo que combina as características da lógica
fuzzy com as dos algoritmos evolucionários para analisar dados escassos, que não poderiam
ser minerados de forma eficiente por técnicas estatísticas.
8
No capítulo 2 é feita uma revisão de todos os conceitos utilizados nesta tese,
incluindo algoritmos evolucionários e lógica fuzzy (nebulosa)
No capítulo 3 será descrita uma versão preliminar do algoritmo proposto, baseada
em estruturas de dados simples que são varridas por um GA e que teve sucesso em modelar
valores Booleanos (digitais). O trabalho neste algoritmo serviu como forma de identificação
de algumas dificuldades do problema e facilitou o desenvolvimento do algoritmo analógico
descrito no capítulo 4, que pode lidar com quaisquer valores necessários e que usa lógica
fuzzy associada à programação genética.
No capítulo 5 é discutida a aplicação deste algoritmo a uma área muito promissora,
a de análise de dados obtidos a partir de microarrays de DNA. Como a obtenção destes
dados é muito cara, técnicas que podem obter resultados interessantes a partir de dados
escassos são bem vindas.
Finalmente, no capítulo 6 são colocadas algumas conclusões e apresentados alguns
desdobramentos possíveis para nosso trabalho, explicitando algumas características do
algoritmo proposto que podem ser melhoradas em um futuro próximo.
No apêndice A, é apresentada a aplicação do algoritmo proposto na área de
classificação, com especial ênfase na área médica. Será descrita a aplicação do trabalho
desta tese em alguns conjuntos tradicionalmente usados na área, mostrando os benefícios
auferidos em precisão e/ou compreensibilidade dos resultados.
9
Capítulo 2 Conceitos
Preliminares
Neste capítulo veremos alguns dos conceitos básicos envolvidos em nosso trabalho,
discutindo brevemente a lógica fuzzy e os algoritmos evolucionários, para que possamos
explicar de forma mais precisa o algoritmo proposto em capítulos posteriores.
2.1 Lógica Fuzzy
A lógica proposicional tradicional lida com variáveis assumindo apenas dois possíveis
estados: falso e verdadeiro. Os conjuntos tradicionais são definidos utilizando apenas com a
noção de pertinência absoluta (ou o elemento pertence ou não pertence ao conjunto
definido) sem nenhum tipo de gradação. Por exemplo, podemos considerar o caso de todos
os carros trafegando a menos de 70km/h. Os membros deste conjunto são todos os carros i
cuja velocidade, dada por vi , satisfaz a seguinte definição:
{vi ∈ ℜ | vi < 70}
Se algum carro i estiver trafegando a menos do que 70 km/h ele pertence ao conjunto
Elem, o que é denominado por i ∈ Elem. Caso o carro i esteja trafegando a 70 km/h ou
10
mais, ele não pertence a este conjunto, o que é dado por i ∉ Elem. Note-se que não há
nenhum tipo de gradação neste tratamento.: se o carro estiver trafegando a 69,99km/h, ele
pertence a Elem, mas se ele estiver trafegando a 70 km/h, ele não pertence a Elem.
Podemos então definir uma função de pertinência χElem(i) que é dada por:
χ Elem (i ) =
0, i ∉ Elem
1, i ∈ Elem
Em alguns casos, como no caso da representação interna de computadores esta
representação é suficiente, mas no mundo real (e em grande parte das aplicações de
interesse na área da engenharia) existem propriedades que são vagas, incertas ou imprecisas
e, portanto, impossíveis de serem caracterizadas por predicados da lógica clássica bivalente
(PEDRYCZ et al., 1998), como por exemplo a determinação da pertinência de uma pessoa
ao conjunto das pessoas altas.
No cotidiano é comum que uma pessoa se depare com situações em que há
propriedades imprecisas, como o fato de alguém ser alto, para as quais não se possui a
noção de verdadeiro/falso perfeitamente definida. Por exemplo, não é óbvio classificar um
carro como estando andando rapidamente ou não, mesmo que se tenha total conhecimento
de sua velocidade corrente. Se for perguntado para várias pessoas se um carro andando a 80
km/h está rápido ou não, haverá provavelmente uma resposta gradativa, incluindo uma
possibilidade distinta de recebermos uma resposta do tipo “mais ou menos” ou “mais para
sim do que para não”.
Esta ambuguidade é inerente à imprecisão da definição destes conjuntos e não a um
eventual desconhecimento da velocidade do carro ou da altura da pessoa. As respostas são
vagas porque o conceito de “carro rápido” é vago, ao contrário da medição da sua
velocidade instantânea, que é absoluta.
Uma solução possível para resolver este tipo de ambigüidade seria usar lógica
multivalorada, incluindo, por exemplo, uma pertinência de 0,5 para o conceito de “mais ou
menos”, mas ainda precisaríamos executar procedimentos de arredondamento, já que em
algum momento teríamos que fazer uma transição brusca entre duas pertinência admitidas
(por exemplo, entre 0 e 0,5). Este arredondamento continua evitando que seja embutido o
conceito de mudança gradual dentro do nosso sistema, pois tudo que temos, ao introduzir
este valor intermediário, são duas transições bruscas em vez de uma.
11
Para resolver o problema das transições bruscas, pode-se optar por utilizar a lógica
fuzzy. (fuzzy, em inglês, significa incerto, duvidoso ou nebuloso, que é a tradução mais
adotada), que usa graus de pertinência contínuos no intervalo [0,1] ao invés de um
relacionamento de verdadeiro/falso estrito como na lógica tradicional.
A lógica fuzzy é adequada para a representação tendo em vista que a maioria dos
especialistas humanos possui conhecimento que é representado em termos linguísticos, de
uma maneira especialmente fuzzy. Isto decorre do fato de que é simples comunicar
conhecimento desta forma e pelo fato de que alguns sistemas não possuem modelagem
numérica simples, mas podem ser entendidos de forma completa por meio de noções fuzzy,
como por exemplo, “se a pressão estiver alta demais, abra um pouco a válvula de pressão”
(WANG, 1994).
Um termo fuzzy usado de forma rotineira em nossas comunicações (como alto, baixo
ou leve) é um elemento ambíguo que pode caracterizar um fenômeno impreciso ou não
completamente compreendido. Estes termos fuzzy são a base da lógica fuzzy. Isto quer
dizer que a lógica fuzzy está baseada em palavras e não em números, ou seja, os valoresverdade que usamos nos controladores são pertinências a conjuntos que estão fortemente
associados a termos que são expressos lingüisticamente no dia a dia, como por exemplo:
quente, frio, verdade, longe, perto, rápido, vagaroso, etc. Estes termos podem ser alterados
através do uso de vários modificadores de predicado como por exemplo: muito, mais ou
menos, pouco, bastante, meio, etc.
Estas características fazem da lógica fuzzy uma alternativa simples para representar de
forma direta o conhecimento humano, restando apenas a definição formal de como operar
com os conjuntos fuzzy, definição esta que é feita através da teoria dos conjuntos fuzzy.
Baseando-se nestas características, pode-se afirmar que a lógica fuzzy pode ser
considerada como uma das primeiras escolhas de aplicação nas seguintes situações:
•
Em sistemas muito complexos, onde é difícil desenvolver o modelo matemático.
•
Para sistemas extremamente não lineares que podem ser bem explicados
heuristicamente e/ou através de termos linguísticos.
Um aspecto importante da lógica fuzzy é que ela permite que incorporemos
informações que são baseada em conhecimento qualitativo ou semi-qualitativo de um
processo, conhecimento este que é muito comum na biologia. Um exemplo deste
12
conhecimento é o efeito da ATP na fosfoenolpiruvato carboxiquinase (PCK) que é bifásico,
acelerando a reação em baixas concentrações e inibindo-a em altas concentrações (LEE et
al., 1999). Este tipo de conhecimento poderia ser modelado por duas regras similares às
seguintes:
•
Se Baixa_Concentração (ATP) Então Acelere_Reação(PCK)
•
Se Alta_Concentração (ATP) Então Iniba_Reação (PCK)
Estes tipos de regras são muito próximos da maneira como um especialista lida com seu
conhecimento, o que faz da lógica fuzzy uma ótima ferramenta para modelar o
conhecimento disponível em qualquer área.
A teoria de conjuntos fuzzy permite especificar quão bem um objeto satisfaz uma
descrição vaga. Isto é feito através do estabelecimento de um grau de associação que pode
variar continuamente entre 0 (falso, ou ausência total de pertinência) e 1 (verdadeiro, ou
totalmente pertinente). Assim, fazemos um mapeamento do valor da variável x para o
conjunto A (u(x) : xA
[0, 1]) que significa que x pertence ao conjunto A com um valor
de pertinência entre 0 (não pertence absolutamente) e 1 (pertence totalmente).
Os valores intermediários podem ser compreendidos fazendo-se uma analogia às
fotografias em preto e branco. Entre os dois valores extremos, existem vários tons de cinza.
Da mesma maneira, entre a pertinência total (1) e a não pertinência (0), existem vários
valores possíveis de pertinência em um conjunto. Voltando ao exemplo do carro, podemos
estabelecer graus de pertinência ao conjunto dos carros rápidos, dada cada uma das
velocidades que ele pode assumir. Assim, um carro que esteja trafegando a 80 km/h pode
receber uma pertinência de 0,7 neste conjunto, correspondendo ao conceito de “mais ou
menos” citado pelo pesquisado.
Conjuntos fuzzy são aplicáveis tanto a variáveis discretas quanto contínuas. No caso de
variáveis discretas, podemos definir o conjunto através da representação de todos os
elementos do universo de discurso (valores que a variável pode assumir) são associados a
suas pertinências, da seguinte maneira:
Altos ( x) = {1,5 ,1,55 ,1,6 ,1,65 ,1,70 ,1,75 ,1,80 ,1,85 ,1,90 ,1,95 , 2,0
0
0
0
0,1
0,3
0,5
0,7
1,0
1,0
1,0
1,0
13
No caso, cada elemento do universo foi representado na forma
xi
µ ( xi ) , onde o
primeiro termo representa o elemento em questão e o segundo termo representa sua
pertinência ao conjunto Altos.
Pertinência no conjunto dos carros rápidos
1
Pertinência
0,8
0,6
0,4
0,2
0
0
20
40
60
80
100
120
Velocidade
Figura 2-1: Representação de um conjunto fuzzy através do diagrama de Hassi-Euler.
Se o universo de discurso é contínuo ou possui uma quantidade grande de elementos
discretos, a forma mais fácil de representação é o gráfico de sua função de pertinência,
chamado de diagrama de Hassi-Euler (H-E) (EVSUKOFF et al., 2003). Um exemplo de tal
representação é dado na figura 2-1. Ambas as representações permitem que façamos uma
associação entre o valor original da variável, que é denominado seu valor crisp, e a sua
pertinência no conjunto fuzzy de interesse.
Um
valor crisp é um número preciso, obtido através de um aparato medidor
(velocímetro, fita métrica, etc), que representa o estado exato de um fenômeno associado e
ao qual não existe nenhum tipo de definição ou ambigüidades associados, visto que este
número consiste na representação de um evento físico.
A definição do conjunto fuzzy é feita por um especialista que compreende o processo a
ser modelado. O conjunto fuzzy é uma representação de um termo fuzzy que extingue toda
a ambigüidade associada a este termo.
14
A pertinência para o qual é mapeado este valor é denominado o seu valor fuzzy, valor
este que não contém nenhum tipo de ambigüidade. O processo de tansformação de um
valor crisp para um valor fuzzy é chamado de fuzzyficação.
Na lógica fuzzy não se afirma que um carro trafegando a 65km/h está andando rápido.
Existe uma definição do que consiste andar rápido, feita através de um dos métodos
descritos anteriormente, como é possível ver na figura 2-2. Olhando para aquela figura
podemos perceber que um carro a esta velocidade possui pertinência 0,4 no conjunto dos
rápidos.
O fato de um determinado valor crisp possuir uma pertinência não zero a um conjunto
fuzzy, não significa que ele necessariamente possuirá uma pertinência zero em uma
conjunto que represente um termo fuzzy conceitualmente oposto àquele primeiro. Por
exemplo, o fato de que um carro trafegando a 65 km/h possui uma pertinência não zero no
conjunto dos carros rápidos não implicará necessariamente que ele terá pertinência zero no
conjunto dos carros lentos.
A pertinência desta velocidade no conjunto dos carros lentos depende apenas da
definição deste conjunto. Uma representação possível dos dois conjuntos (lentos e rápidos)
pode ser vista na figura 2-2.
Este exemplo evidencia o fato de que um valor associado a uma variável (valor crisp)
pode pertencer a dois ou mais conjuntos fuzzy associados ao mesmo conceito linguístico.
Isto quer dizer que dois conjuntos fuzzy que representam conceitos opostos (como o
conjunto dos carros rápidos com o conjunto dos carros lentos) podem se sobrepor sem
nenhum problema.
15
Pertinência
Conjuntos Fuz z y
1
0,9
0,8
0,7
0,6
0,5
0,4
0,3
0,2
0,1
0
Rápidos
Lentos
0
20
40
60
80
100
120
Velocidade
Figura 2-2: Exemplo da definição de dois conjuntos expressando conceitos linguísticos antagônicos para
uma mesma variável.
A existência da insterseção é a principal diferença em relação à lógica tradicional.
Nesta, se dois termos são conceitualmente opostos, os conjuntos que os definem devem ser
disjuntos. Por exemplo, poderíamos definir o conjunto dos carros rápidos como sendo
aqueles que trafega acima de 80 km/h, o que faria com que a pertinência de todas as
velocidades seja dada por:
µ rápido (vel ) =
0, vel ≤ 80
1, vel > 80
Neste caso, o conceito dos carros lentos seria dado por todos aqueles que não são
rápidos, isto é a pertinência no conjunto dos lentos seria dada por:
µ lento (vel ) = 1 − µ rápido (vel )
Pode-se verificar que no caso do exemplo mostrado na figura 2-2 isto também é
verdade, mas não implica em que, quando a velocidade possui pertinência não zero no
conjunto dos carros rápidos, ela necessariamente possua pertinência zero no conjunto dos
carros lentos.
É importante ressaltar que o conceito de pertinência fuzzy usado até o momento é
totalmente distinto daquele de probabilidade. As incertezas de tipo um, tratadas através de
métodos estatísticos e aos quais se aplica o conceito de probabilidade, são aquelas
derivadas de comportamento aleatório de sistemas físicos, como flutuações aleatórias de
16
elétrons em campos magnéticos, flutuações incertas de padrões climáticos, entre outros,
enquanto que a incerteza do tipo dois, cuja modelagem pode ser feita através da lógica
fuzzy, é aquela que lida como fenômenos decorrentes do raciocínio e cognição humanos
(GUPTA
et al., 1991). Estes fenômenos são determinísticos, dado o completo
conhecimento do processo de raciocínio associado à sua definição.
Pertinência fuzzy é uma incerteza determinística - na lógica fuzzy estamos preocupados
com o grau em que algo ocorreu, não com a probabilidade de sua eventual ocorrência.
Exemplo: quão alto é uma pessoa, quão rápido está um carro, etc. Os valores da altura e da
velocidade são conhecidos a priori, não havendo qualquer tipo de aleatoriedade no
processo. No caso do exemplo usado até agora, temos absoluta certeza de que o carro em
questão está trafegando a 65 km/h e a sua pertinência de 0,4 no conjunto dos rápidos
procura modelar o fato de que ele está “mais ou menos” rápido e não qualquer tipo de
incerteza quanto a qualquer erro no processo de medição desta velocidade.
Esta incerteza não se dissipa com o conhecimento do fato, ao contrário do que acontece
com a probabilidade. A probabilidade consiste em um conhecimento prévio à ocorrência de
um fato que delimita as chances de que ele efetivamente venha a ocorrer. Após a
determinação do fato, a probabilidade se extingue, o que não ocorre com o conhecimento
fuzzy. Isto quer dizer que a incerteza probabilística se dissipa com as ocorrências, enquanto
que a pertinência fuzzy permanece inalterada não importando o número de medições
efetuadas.
A pertinência fuzzy descreve uma ambigüidade inerente ao evento, enquanto que a
probabilidade descreve as chances de sua eventual ocorrência. Isto é, se um evento ocorre
ou não é algo aleatório (probabilístico) enquanto que o grau em que isto ocorre é fuzzy.
Seja, por exemplo, o ato de jogar uma moeda normal, não viciada, para cima, para o
qual têm-se uma chance de 50% de obter uma cara. Quando a moeda cai no chão, ou ela o
faz com a face da cara para cima ou com a face da coroa para cima. Isto implica em que
qualquer incerteza tenha sido dissipada – agora existe 100% de certeza que uma cara
ocorreu ou não.
No caso do exemplo do carro usado até agora, a ocorrência da medição precisa da
velocidade do veículo não dissipou o fato de que esta (65km/h) faz com que o veículo tenha
17
pertinência 0,4 (ou 40%) no conjunto dos carros rápidos. Pode-se fazer centenas de
medições que este fato não será alterado.
Uma vez compreendido o conceito dos conjuntos fuzzy, precisamos compreender como
funcionam os controladores que neles são baseados. Estes controladores usam conjuntos
fuzzy associados a regras para realizar o controle e/ou previsão de alguma variável de
interesse.
Obviamente, necessitamos definir os conjuntos nos quais os valores reais serão
enquadrados. No caso do exemplo da figura 2-2, definimos dois conjuntos no espaço de
variáveis (lentos e rápidos), mas podemos definir cinco, doze, ou qualquer outro número
que nos seja conveniente. Isto faz com que definamos conjuntos em que um dado valor
pode ser enquadrado. Voltando ao exemplo do carro, se definíssemos cinco conjuntos,
poderíamos denominá-los de “rapidíssimos”, “rápidos”, “média velocidade”, “lentos”,
“extremamente lentos”. O número de conjuntos nos diz quão precisamente estamos lidando
com uma variável. Um exemplo de como estes conjuntos poderiam ser definidos pode ser
visto na figura 2-3.
Extremamente
Lento
Lento
Média
Velocidade
Rápidos
Extremamente
Rápidos
30
60
90
120
Figura 2-3: Definição de cinco conjuntos fuzzy para a variável velocidade.
18
Uma vez definidas estas funções, faz-se então um mapeamento das variáveis de entrada
em um sistema de controle fuzzy para conjuntos de funções consecutivas, processo este
denominado de "fuzzyficação". Para cada valor crisp podemos associar n valores fuzzy (um
para cada função fuzzy definida). Para todos os valores crisp, vários dos valores fuzzy que
lhe são associados podem ser zero.
É improtante ressaltar que nada impede que um sistema de controle possa ter tipos de
entradas chaveadas (on/off) junto com entradas analógicas. Tais entradas (on/off) terão
sempre um valor verdadeiro igual a ou 1 ou 0.
Estas entradas representam apenas um caso simplificado de uma variável fuzzy o que
faz com que o sistema pode negociar com elas sem dificuldade, bastando tratá-las como
variáveis fuzzy como todas as outras.
No caso do algoritmo proposto nesta tese, veremos mais à frente que lidaremos não só
com variáveis digitais (ou Booleanas), mas também com outro tipo de dado, denominado
categórico, que não pode ser expresso de forma numérica e que, por conseguinte, não pode
ser tratado usando-se lógica fuzzy. Necessitaremos misturar o tratamento de conjuntos
fuzzy com conjuntos tradicionais, além das variáveis Booleanas. Mais detalhes serão vistos
no capítulo 6 desta tese.
Assim como na lógica convencional, definimos regras através das quais criamos as
associações entre as entradas e saídas. Por exemplo, na lógica digital, quando definimos
uma regra do tipo a ^ b → c, isto significa que quando a E b assumirem valores verdadeiros
a variável c será verdadeira, caso contrário será falsa. Existem tabelas verdade semelhantes
para os operadores OU e NÃO, além de outros operadores que podem ser representados
através da combinação destes operadores básicos. As tabelas verdade dos operadores
tradicionais são dadas a seguir. Em cada uma delas, o número 1 representa o valor verdade
(TRUE) e 0 representa o valor falso (FALSE):
A AND B
B=0
B=1
A=0
0
0
A=1
0
1
Tabela 2-1: Tabela Verdade para o operador lógico AND (E)
19
A OR B
B=0
B=1
A=0
0
1
A=1
1
1
Tabela 2-2: Tabela Verdade para o operador lógico OR (OU)
NOT A
A=0
1
A=1
0
Tabela 2-3: Tabela Verdade para o operador lógico NOT (NÃO)
Quando estamos utilizando a lógica fuzzy, ao definirmos uma regra, o fazemos
associando a pertinência das variáveis de entrada em conjuntos determinados à pertinência
da variável de saída em um outro conjunto, usando conjuntos fuzzy como definimos
previamente e versões fuzzy dos operadores lógicos.
Por exemplo, poderíamos ter uma regra dizendo que quando o carro estiver rápido e a
distância para o sinal for pequena, então devemos frear fortemente (em uma representação
mais compacta, Rápido(v) AND Pequena(d) → Forte(f)).
Precisamos então definir operadores lógicos fuzzy que forneçam, nas condições de
contorno, valores lógicos similares aos operadores lógicos tradicionais. Para o NOT, o
operador mais simples consiste simplesmente em NOT A = 1 - µx(A), onde µx(A) designa o
grau de pertinência do evento A no conjunto fuzzy x. Já para o caso dos operadores AND e
OR, existem vários operadores que satisfazem as condições de contorno, entre os quais
podemos destacar os seguintes duplas:
A AND B = min (µx(A), µ x(B))
A OR B = max (µx (A), µ x (B))
e
A AND B = µ x (A)* µ x (B)
A OR B = µ x (A) + µ x (B) - µ x (A)* µ x (B)
20
Em todas as fórmulas dadas, µx(A) e µx(B) designam respectivamente as pertinências
dos eventos A e B no conjunto x. Quando o nome do conjunto é significativo, muitas vezes
se omite o símbolo µ, designando-se a pertinência pelo nome do conjunto. Por exemplo,
ambos os símbolos Rápido(v) e µ rápido(v) denotam a pertinência de uma velocidade v no
conjunto dos carros rápidos.
Usando qualquer um destes dois operadores podemos combinar pré-condições e
determinar a pertinência de um conseqüente. Por exemplo, imagine que temos uma regra
que diz que Rápido(v) E Pequena(d) → Forte(f)). Se usamos o primeiro conjunto de
operadores (denominado min-max) e a pertinência de Rápido(v) é 0,5 e a de Pequena(d) é
0,4, então podemos determinar que a pertinência do conseqüente Forte(f) é igual a min(0,5 ,
0,4)= 0,4.
Sabendo calcular este valor, só é necessário entender como isto será usado no processo
de decisão fuzzy. Este processo é baseado no esforço coletivo não só de uma regra como
esta que colocamos como exemplo, mas sim de um conjunto de regras (a base de regras).
Todas as regras que aplicamos são invocadas, usando as funções consecutivas e valores de
pertinência das entradas, de forma a determinar um resultado, que basicamente consiste em
uma pertinência da variável de saída a um conjunto específico.
Por exemplo, seja uma base de três regras para o controle da frenagem de um veículo
dadas por:
Rápido(v) E Pequena(d) → Forte(f))
Lento(v) E Pequena(d) → Média(f)
Lento(v) E Média(d) → Fraca(f)
O processo de decisão envolvendo lógica fuzzy consiste em primeiro obter os valores
de velocidade e distância instantâneos do veículo e depois fuzzyficar estes valores, de
acordo com conjuntos previamente definidos (como aqueles da figura 2-2).
Uma vez fuzzyficados estes valores, são aplicados os operadores lógicos e obtemos um
valor de pertinência para cada um dos conjuntos que se encontra no conseqüente das regras
desta base.
O processo de inferência mais usado é denominado min-max, para o qual é adotada a
definição de mínimo para o operador AND e máximo para o operador OR. Aplica-se o
operador AND sobre cada uma das pertinências do conseqüente. Como o operador AND
21
calcula a pertinência da regra com base no mínimo das pertinências envolvidas, ele
corresponde à parte min do nome.
Se houver mais de uma regra com o mesmo conseqüente, escolhe-se a pertinência
máxima para este conseqüente como aquela adota para o mesmo, o que corresponde à parte
max do nome do método. Esta escolha é justificada se considera-se que várias regras para
um mesmo conseqüente podem ser interpretadas como uma única regra em que cada um
dos conseqüentes está ligado aos outros pelo concetivo lógico OR. Isto é :
A→C
B→C
A∨ B → C
Uma vez aplicado o processo de inferência, o resultado de um controlador fuzzy
consiste em uma variável de saída para a qual foram definidos vários conjuntos fuzzy, a
cada um dos quais foi associada uma pertinência. Entretanto, normalmente o interesse de
um usuário de um controlador fuzzy não é nas pertinências aos conjuntos, mas sim em um
valor final crisp da variável de saída que possa ser utilizado em um controlador.
Por conseguinte, é necessário ainda uma função que calcule, a partir dos graus de
pertinência desta variável a cada um dos conjuntos fuzzy (calculado através das regras), o
valor real daquela variável, processo este que é o oposto do processo de fuzzyficação, e por
isto, é denominado defuzzyficação.
O método de defuzzyficação mais simples é denominado média dos máximos, no qual
se calcula a média dos máximos de cada um dos conjuntos fuzzy da variável de saída
ponderada pelas pertinências obtidas através do sistema de inferência. Matematicamente:
µ * max(i )
saída var =
i
i∈conjuntosvar
µ
i
i∈conjuntosvar
Assim, obtem-se um valor de saída para a variável de interesse que pode ser usado em
um controlador, um previsor ou qualquer outra aplicação em que se deseje aplicar a lógica
fuzzy.
22
2.2 Algoritmos evolucionários
Os algoritmos evolucionários são inspirados na teoria da evolução das espécies de
Charles Darwin. Na década de 1850 Charles Darwin fez uma longa viagem no navio HMS
Beagle, percorrendo uma grande distância náutica e visitando vários países do mundo,
inclusive da América do Sul.
Darwin era um observador da natureza e sua habilidade para observação permitiu
que ele percebesse vários fatos interessantes. Os principais deles consistiam em que
animais da mesma espécie eram ligeiramente diferentes que outros animais na mesma
espécie em ecossistemas distintos, sendo que cada grupo era mais adaptado às necessidades
e oportunidades oferecidas pelo seu ecossistema específico.
Estes fatos, grosseiramente simplificados neste resumo, levaram Darwin a concluir
que havia um processo evolutivo associado ao desenvolvimento das espécies no mundo.
Esta teoria levou o nome de “Teoria da Evolução das Espécies”.
A teoria da evolução diz que na natureza todos os indivíduos dentro de um
ecossistema competem entre si por recursos limitados, tais como comida e água. Aqueles
dentre os indivíduos (animais, vegetais, insetos, etc) de uma mesma espécie que não obtêm
êxito tendem a ter uma prole menor e esta descendência reduzida faz com que a
probabilidade de ter seus genes propagados ao longo de sucessivas gerações seja menor.
A combinação entre os genes dos indivíduos que sobrevivem pode produzir um
novo indivíduo muito melhor adaptado às características de seu meio ambiente ao combinar
características possivelmente positivas de cada um dos reprodutores.
Um pouco mais adiante, no início do século XX, Mendel compreendeu que este
processo de transmissão de características positivas estava associado a uma unidade básica
de transmissão de informação, o gene.
Hoje, após as descobertas da estrutura do DNA por Francis e Crick e do papel deste
como unidade básica de armazenamento e transmissão de informação genética, sabemos
como este processo funciona em nível molecular.
23
Basicamente, todo indivíduo, seja ele animal, vegetal ou mesmo organismos
inferiores como vírus e bactérias, possui um conjunto de um ou mais cromossomos e a este
conjunto completo denominamos genoma.
Um conjunto específico de genes no genoma é chamado de genótipo. O genótipo é a
base do fenótipo, que é a expressão das características físicas e mentais codificadas pelos
genes e modificadas pelo ambiente, tais como cor dos olhos, inteligência, etc.
Nos organismos que utilizam a reprodução sexuada, como os humanos e as moscas,
cada progenitor fornece um pedaço de material genético chamado gametas. Estas gametas
são resultado de um processo denominado crossing-over, ilustrado na figura 2-4 que
permite que os filhos herdem características de seus pais mas não sejam exatamente iguais
a estes. Além disto, mutações causadas por fatores aleatórios tais como presença de
radiação ambiente ou erro nos mecanismos de replicação do DNA podem causar pequenas
mudanças nos genes dos indivíduos.
Figura 2-4: Diagrama do processo de crossing-over ocorrido durante a formação de gametas para a
reprodução sexuada.
Os Algoritmos Evolucionários (EA) são modelos computacionais dos processos
naturais de evolução usados como uma ferramenta para resolver problemas. Apesar de
haver uma grande variedade de modelos computacionais propostos, todos eles têm em
24
comum o conceito de buscar uma solução para um problema através da simulação da
evolução das espécies usando mecanismos de seleção, mutação e reprodução similares
àqueles encontrados na natureza. Todos estes processos, assim como os seus análogos
naturais, dependem do desempenho dos indivíduos de uma espécie dentro do "ambiente"
que a rodeia.
Os EA funcionam mantendo uma população de estruturas (indivíduos), cada qual
propondo uma determinada solução para um problema. Estas estruturas evoluem de forma
semelhante aquela que é observada na natureza.
Para que isto aconteça estas estruturas são submetidas a forças de seleção que
pressionam pela sobrevivência das estruturas que melhor resolvem o problema (as “mais
aptas”) ao mesmo tempo em que são aplicados os chamados operadores genéticos, como
recombinação e mutação, entre outros.
Os algoritmos evolucionários são usualmente aplicados para resolver um problema
específico de caráter NP-completo (MITCHELL, 1996). Sua relação como este problema é
dada através da função de avaliação, a qual representa computacionalmente o problema, na
forma de uma função a ser otimizada.
Esta função é aplicada a cada indivíduo da população de estruturas mantida pelo EA
e estes recebem uma avaliação que é uma quantificação numérica da sua qualidade como
solução do problema.
Esta avaliação é usada como a base do processo de seleção artificial mantido pelos
EA. Quanto mais alta a avaliação do indivíduo, “mais apto” ele é considerado e por
conseguinte, maiores devem ser suas chances de sobrevivência e reprodução. Assim como
na natureza, é provável que a prole de um indivíduo compartilhe de suas boas
características e por conseguinte, é desejável que indivíduos mais aptos reproduzam mais,
de forma que seja gerada uma população de descendentes com uma avaliação média mais
alta.
Os operadores genéticos utilizados nos EA consistem em modelos computacionais
de fenômenos vistos na natureza, como a reprodução sexuada, a mutação genética e
quaisquer outros que a imaginação dos programadores consiga reproduzir. Existem vários
modelos distintos de operadores genéticos, alguns dos quais serão discutidos de forma mais
detalhada no decorrer desta tese.
25
O comportamento padrão dos algoritmos evolucionários pode ser resumidos, sem
maiores detalhes pelo seguinte pseudo-código, descrito em linguagem natural para maior
generalidade, permitindo então que a implementação seja feita em qualquer linguagem de
programação.
t:=0 // Inicialize o contador de tempo
Inicializa_População P(0) // Inicialize a população aletoriamente
Enquanto não terminar faça // término:por tempo, por avaliação, etc.
Avalie_População P(t) //Avalie a população neste instante
P':=Selecione_Pais P(t)
// sub-população que gerará nova geração
P'=Recombinação_e_mutação P' //Aplique os operadores genéticos
P(t+1)=Selecione_sobreviventesP(t),P' //sobreviventes da geração
t:=t+1 //Incremente o contador de tempo
Fim enquanto
Neste algoritmo pode-se perceber que o comportamento básico dos algoritmos
evolucionários consiste em buscar dentro da atual população aquelas soluções que possuem
as melhores características e tentar combiná-las de forma a gerar soluções ainda melhores,
repetindo este processo até que tenha se passado tempo suficiente ou que tenhamos obtido
uma solução satisfatória para nosso problema.
Este processo é similar ao processo evolutivo que ocorre na natureza e assim como
nesta, os EA não são um processo orientado à otimização. Isto pode parecer paradoxal mas
não existem mecanismos na evolução que asseguram o aprimoramento contínuo dos
indivíduos. Esta melhora ocorre naturalmente através da seleção natural.
Um ponto fundamental em relação aos algoritmos evolucionários é que, como se
pode perceber claramente dentro do algoritmo proposto acima, os algoritmos
evolucionários são dependentes de fatores estocásticos (probabilísticos), tanto na fase de
inicialização da população quanto na fase de evolução (durante a seleção dos pais,
principalmente).
Pode-se concluir então que, na prática, os EA são uma heurística e os seus
resultados provavelmetne não serão iguais em todas as rodadas, fazendo com que seus
resultados, de uma forma geral, não sejam reprodutíveis. O que se faz, em geral, é adotar a
média de um determinado número de melhores soluções como a solução proposta pelo EA
26
ou então escolher a solução com avaliação mais alta dentre todas aquelas oferecidas por um
EA para ser a resposta oferecida por esta heurística.
Aqueles que desejem aplicar EA a algum problema real devem estar conscientes da
limitação da reprodutibilidade de seus resultados. Ademais, posto que fatores estocásticos
têm uma influência direta sobre o desenvolvimento de uma solução, execuções distintas
podem obter resultados radicalmente diferentes, fazendo com que a variância e o desviopadrão associado a múltiplas soluções sejam altos.
Máximo
Global
Máximo
Local
Ponto de início
Figura 2-5: Exemplo de aplicação de um algoritmo de hill climbing a uma função multimodal F. Caso a
inicialização não se dê próxima ao máximo local, o algoritmo seguirá o gradiente da função até chegar ao
máximo local, o qual ∇F=0, implicando no fim do algoritmo, como podemos ver nos dois casos
exemlpificados na figura. Ao se iniciar em qualquer um destes pontos, o algoritmo de hill climbing parará no
máximo local apontado na figura, sendo incapaz de reconhecer a existência de outro máximo, já que dispõe
apenas de informações topográficas locais sobre a função F.
Algoritmos genéticos (GA) são um ramo dos algoritmos evolucionários e como tal
podem ser definidos como uma técnica de busca baseada numa metáfora do processo
biológico de evolução natural.
Os algoritmos genéticos são técnicas heurísticas de otimização global. A questão da
otimização global opõe os GAs aos métodos como hill climbing, que seguem a derivada de
uma função de forma a encontrar o máximo de uma função, ficando facilmente retidos em
máximos locais, como podemos ver na figura 2-5.
Nos algoritmos genéticos populações de indivíduos são criados e submetidos aos
operadores genéticos, que usualmente consistem em seleção, crossover e mutação. Estes
operadores utilizam uma caracterização da qualidade de cada indivíduo como solução do
27
problema em questão chamada de avaliação deste indivíduo e vão gerar um processo de
evolução natural destes indivíduos, que eventualmente gerará um indivíduo que
caracterizará uma boa solução (talvez até a melhor possível) para o nosso problema.
Definindo de outra maneira, podemos dizer que algoritmos genéticos são algoritmos
de busca baseados nos mecanismos de seleção natural e genética. Eles combinam a
sobrevivência entre os melhores indivíduos com uma forma estruturada de troca de
informação genética entre dois indivíduos para formar uma estrutura heurística de busca
(MITCHELL, 1996). Esta informação genética está armazenada nos esquemas contidos
dentro dos cromossomos.
Um esquema consiste em um template descrevendo um subconjunto dentre o
conjunto de todos os indivíduos possíveis. O esquema descreve similaridades entre os
indivíduos que pertencem a este subconjunto, ou seja, descreve quais posições dos seus
genomas são idênticas.
O alfabeto de esquemas consiste no alfabeto de símbolos utilizados na representação
adotada mais o símbolo *, que significa "não-importa" (don'
t care ou wildcard), isto é, que
os indivíduos que correspondem àquele esquema diferem exatamente nas posições onde
este símbolo é encontrado.
Formalmente, pode-se definir um esquema como sendo uma string s={s1 s2 ... sN},
de comprimento n, cujas posições pertence ao conjunto Γ (alfabeto usado) + {*} (símbolo
de wildcard). Cada posição da string dada por sk ≠ ’*’ é chamada de especificação,
enquanto que o símbolo * especifica um wildcard.
O teorema dos esquemas (HOLLAND, 1975) diz que um esquema ocorrendo nos
cromossomos com avaliação superior à média tende a ocorrer mais frequentemente (com a
freqüência crescendo de forma exponencial) nas próximas gerações e aqueles esquemas
ocorrendo em cromossomos com avaliações abaixo da média tendem a desaparecer.
28
2.3 Redes de regulação genética
A maioria das células de um mesmo organismo tem o mesmo DNA (algumas
diferindo por fatores como rearranjos e amplificação), entretanto as células são diferentes
entre si. É impossível confundir uma célula do fígado com um neurônio, ou mesmo uma
célula muscular com uma célula de tecido adiposo, não só pela diferença óbvia de função e
aparência mas também pelos diferentes genes expressos em cada um destes tipos de células.
Esta expressão diferenciada dos genes é fundamental para a formação de padrões e
durante o desenvolvimento de um organismo multicelular e ocorre por muitos fatores,
incluindo presença de elementos sinalizadores no ambiente celular (como hormônios),
sinalização de célula para célula e regulação transcripcional.
Esta regulação ocorre pela ação combinatorial de fatores de transcrição (produtos de
outros genes) nos elementos situados “próximos” ao ponto de início da transcrição dos
genes. Isto quer dizer que os produtos da expressão de um gene afetam outros genes que
são seus vizinhos promovendo ou inibindo sua expressão.
O conceito de proximidade aqui não necessariamente corresponde ao físico, mas sim
em termos de adjacências em um grafo que represente o esquema de regulação de cada
gene. Isto é, genes expressos em pontos que sejam mutuamente distantes dentro do genoma
podem pertencer a uma cadeia de regulação e se afetar mutuamente.
Este grafo é formado tendo como nós cada um dos genes e as arestas determinadas pelo
fato de um dos genes ser afetado/controlado pelo nível de expressão do outro. Com este
esquema cria-se um grafo fortemente interconectado que representa a rede de regulação
genética, rede esta que pode ser definida como sendo o somatório de todas as interconexões
existentes no processo regulatório. Este conceito pode ser compreendido mais facilmente
observando-se a figura 2-6. O conceito de redes de regulação será discutido de forma mais
detalhada mais à frente nesta seção.
29
Este controle transcripcional é essencial para o estabelecimento da expressão
diferenciada, formação de padrões e desenvolvimento do organismo como um todo. Cada
tipo de célula é diferente devido ao fato dos diferentes genes que nela estão expressos. Isto
significa que em muitos casos duas células são muito diferentes apesar do fato de
compartilharem a mesma informação genética.
Pode-se concluir então que a causa da diferença entre tipos celulares não reside no
genoma, mas no conjunto de genes que está sendo expresso em casa célula. Por exemplo,
genes que codificam para certas enzimas especiais que são necessárias apenas em células
hepáticas não estarão ativos em neurônios, da mesma maneira que os genes que codificam
para neurotransmissores não estarão expressos em células hepáticas (ALBERTS et al.,
2002).
Gene X
Regulador 1
Regulador 2
Gene 4
Gene 5
Regulador n
Gene 1
Gene 2
Gene 3
(b
(a)
Figura 2-6: Modelo do grafo formado pelas redes de regulação celular. Em (a) nós vemos um gene sendo
regulado por vários outros genes reguladores. Entretanto, esta diferença entre regulados e reguladores não
existe. A realidade é como mostrada na figura (b) em que vemos um modelo de rede formado por cinco genes
que assumem o papel de regulados e reguladores dependendo de qual processo se está considerando.
Já foi estabelecido, conforme mencionado anteriormente nesta tese, que as redes de
regulação são altamente conectadas. Em metazoa superiores, estima-se que cada gene ou
proteína interage com um número de genes que varia de quatro a oito (ARNONE et al.,
1997), além de estar envolvido em cerca de dez funções biológicas. Isto desqualifica a
maioria dos métodos computacionais que procuram limitar as interações a um número
constante que torne o problema computacionalmente tratável, como por exemplo em
(AKUTSU et al., 1999).
30
A idéia de limitar o número de entradas é interessante em termos computacionais. O
trabalho citado demonstra que número de funções Booleanas existentes em uma rede cujo
K
número de interações é limitado por um número K é da ordem de Ω((2 2 * n K ) n ) , onde n
consiste no número de genes no conjunto sendo avaliado. Isto é, se permitirmos que o
número K cresça de forma ilimitada, o número de funções será alto demais.
Entretanto, a idéia de limitar o número de interações entre genes está em total
desacordo com a biologia por trás do problema. Assim, qualquer abordagem que siga por
este caminho deve ser desconsiderada.
Como será ressaltado também nas aplicações de classificação demonstradas no
capítulo 6, é importante compreender a ciência geradora dos dados que estão sendo usados,
de forma que os resultados obtidos tenham uma máxima aplicabilidade.
transcrição
DNA
tradução
RNA
Proteínas
Figura 2-7: O dogma central da biologia
Sem um estudo cuidadoso da biologia de forma que o algoritmo adotado respeite as
restrições e características do problema em questão, as soluções obtidas terão pouca
relevância para os usuários finais da informação. Isto posto, faremos seguir uma breve
exposição dos princípios nos quais se baseiam a área da biologia à qual pertence a
aplicação descrita neste capítulo.
O dogma central da biologia, mostrado na figura 2-7, estabelece que somente uma
pequena fração do DNA será transcrita em mRNA e este será traduzido posteriomente em
proteína.
À primeira vista pode parecer contraintuitivo que outro composto, como o RNA,
seja utilizado como um intermediário entre o DNA e a codificação de proteínas. Afinal, a
adição de mais um passo acrescenta mais um ponto de erro e cria a necessidade de um
máquinário biológico complexo dentro da célula para realizar o processo de transcrição.
31
Entretanto, a evolução "optou" pelas células que usassem este passo intermediário por
alguns motivos principais:
•
Nas células eucarióticas, o DNA pode permanecer protegido do ambiente
cáustico do citoplasma celular.
•
A informação celular pode ser amplificada através da criação de múltiplas
cópias de RNA a partir de uma única cópia de DNA.
•
A regulação da expressão gênica pode ser afetada através da criação de controles
específicos do caminho entre o DNA e as proteínas. Quanto mais elementos
houver neste caminho, mais oportunidades de controle existem para aplicação
nas mais diversas circunstâncias.
O dogma central descrito acima não é totalmente verdadeiro. Em alguns
experimentos pôde-se verificar que a quantidade de proteína não é perfeitamente
correlacionada com a quantidade de seu mRNA codificador (na verdade, a correlação se
aproxima mais de 0,5) (ALBERTS et al., 2002). Isto se deve a outros fatores não embutidos
no dogma central, como o controle da degradação das moléculas de mRNA e entrada de
substâncias vindas do ambiente extra-celular, entre outros
Conseqüentemente, deve-se entender que a expressão gênica e a conseqüente síntese
de proteínas é um processo complexo regulado em diversos estágios. Além da regulação da
transcrição de DNA, que é a forma mais estudada de controle, a expressão de um gene pode
ser controlada durante o processamento de RNA e o transporte do núcleo para a matriz
celular (somente nas células eucarióticas, tendo em vista que as procarióticas não possuem
núcleo), na tradução do RNA e até mesmo através da modificação das proteínas após o
processo de tradução.
Ademais, deve-se entender que as proteínas não se degradam ao mesmo tempo, o
que implica que sua degradação, bem como a de produtos intermediários de RNA, também
pode ser regulada dentro da célula.
Tendo em vista que estas proteínas que realizam esta regulação são codificadas por
outros genes da mesma ou de outra célula, surge um verdadeiro sistema regulatório
genético estruturado através de uma rede de interações regulatórias entre DNA, RNA,
proteínas e pequenas moléculas (SMOLEN et al., 2000).
32
Todos estes fatores levam à conclusão de que o padrão de expressão gênica resulta
de uma interação de caminhos regulatórios individuais. Nestas redes de sinalização celular
altamente conectadas, as funções de um gene dependem de seu contexto celular e
possivelmente do comportamento de todos os outros genes à sua volta. Estas redes podem
ser modeladas por grafos, conforme discutido acima e visto na figura 5-1, para uma melhor
compreensão.
Logo, o objetivo de entender esta rede como um todo é essencial. Por muitos anos
este tipo de trabalho não foi realizado, apesar de a comunidade científica estar plenamente
ciente de sua importância devido à grande complexidade associada a compreenderem-se
sistemas dinâmicos com grande número de variáveis e a dificuldade de se conseguir dados
suficientes para o tratamento deste problema. Esta última barreira se quebrou, ao menos
parcialmente, com o surgimento de novas ferramentas para o estudo da genômica, como os
microarrays de DNA, discutidos a seguir.
2.4 Microarrays de DNA
A criação de novas ferramentas causou uma revolução na genômica e na maneira
como os cientistas entendem o processo de expressão gênica, dado o grande fluxo de
informação que tem sido gerado. Hoje é óbvio que o entendimento corrente dos fenômenos
biológicos, como a expressão diferenciada, não será dificultado pela falta de dados, mas
sim pela dificuldade de analisar e interpretar os dados disponíveis de forma adequada. Uma
destas tecnologias que teve um grande impacto nas ciências biológicas foi o
desenvolvimento da tecnologia de microarrays de DNA.
Os genes transcritos em mRNA são denominados de genes expressos e a sua análise
é denominada análise de expressão gênica (gene expression analysis). Cada gene é expresso
de forma diferenciada dentro da célula e a quantidade de cada tipo de mRNA determina o
estado atual da célula. Se estas quantidades forem medidas continuamente, pode-se ter uma
melhor idéia do funcionamento das redes de regulação como um todo.
33
A idéia dos microarrays é monitorar as interações de um conjunto de fragmentos de
DNA com um conjunto pré-determinado de probes, isto é, seqüências pré-determinadas,
que ficam presas em uma placa de vidro. Estas placas são chamadas de chips de DNA e
permitem que milhares de hibridizações sejam realizadas ao mesmo tempo. O princípio
básico por trás do funcionamento dos microarrays é mostrado na figura 2-8.
Figura 2-8: Diagrama de operação dos microarrays de tecnologia Synteni/Stanford. Este tipo de chip mede
o nível de expressão de uma amostra relativo a uma amostra de base. Cada uma das amostras é pigmentada
com uma cor diferente e lasers de duas freqüências analisam os níveis relativos de expressão, após uma
mistura de duas amostras ser hibridizada com os probes do slide. Figura originalmente publicada em
(DUGGAN et al., 1999)
O processo consiste basicamente em imprimir uma lâmina de vidro com arrays de
DNA usando impressão de pequenos volumes (da ordem de nanolitros ou picolitros) de
uma amostra pré-seqüenciada (probe) em uma superfície de vidro pré-preparada (Baldi,
2002). Cada ponto do microarray consiste em um gene completo ou em uma seqüência prédeterminada, previamente condificada (fig. 2-9).
O DNA das amostras a serem seqüenciadas é ligado a um pigmento específico e
colocado nas placas de vidro e as seqüências que são complementares se ligarão. A
presença de DNA ligado é depois detectada através da excitação por um laser cuja
freqüência de excitação é muito próxima à freqüência máxima do pigmento.
Existem várias diferentes tecnologias de microarrays de DNA. Elas diferem em
como as seqüências de DNA são impressas no chip (fotolitografia, spotting usando robôs,
etc.), no comprimento das seqüências de DNA (seqüências completas ou apenas
34
fragmentos), mas todas elas têm em comum a característica de permitir que sejam medidos
os padrões de expressão de alguns genomas quase completos.
Figura 2-9: Cada ponto de um microarray consiste em uma seqüência genética de interesse (possivelmente,
um gene completo)
Ao permitir que os padrões de expressão de milhares de genes sejam medidos
simultaneamente, os microarrays fornecem uma visão abrangente do estado corrente da
célula em questão. Isto decorre do fato já discutido acima de que grande parte das
diferenças de estado e tipo de células está fortemente correlacionada com mudanças do
nível de mRNA de certos genes.
Assim, a análise do padrão de expressão de vários genes (alguns podendo ser
previamente desconhecidos) pode, especialmente se associada com informações relativas
aos caminhos (pathways) de regulação genética, fornecer pistas sobre a função de vários
genes e a forma como eles se relacionam.
Apesar do custo deste tipo de experimento ter caído de forma exponencial nos
últimos anos, ainda não é prático, especialmente em laboratórios de orçamento restrito,
propor que os biólogos realizem centenas de experimentos de microarrays para desenvolver
um modelo biológico.
Esta impossibilidade financeira de realizar diversos experimentos pode se tornar o
grande calcanhar de Aquiles dos experimentos de microarrays, dado o problema do ruído
experimental e falta de verificação estatística dos resultados.
35
COOPER et al. (2003) afirma que o grande benefício dos microarrays (sua
habilidade de medir vários genes ao mesmo tempo) pode ser o seu grande problema, devido
ao fato de que é possível observar certas características nos dados (no artigo, ciclos são
citados especificamente) que derivam exclusivamente de variações estatísticas resultantes
de ruído branco e/ou variações experimentais e que não existiriam realmente no ambiente
celular.
O artigo afirma que seria necessário realizar um grande número de experimentos e
comparar os resultados dos mesmos com resultados obtidos de experimentos randomizados,
de forma a conseguir dados que sejam estatísticamente significativos. Entretanto, conforme
mencionamos anteriormente, devido a falta de recursos financeiros, isto pode ser
praticamente impossível.
É importante ressaltar que os mesmos autores já haviam publicado anteriormente
um artigo (SHEDDEN et al., 2002) em que discutiam a validade de resultados baseado na
análise de experimentos com microarrays, mais especificamente a questão da descoberta de
comportamento cíclico baseado nestes dados.
Os autores comentam que o grande problema do experimento específico que eles
criticam (e que pode ser generalizado para vários outros estudos) é a relativa escassez dos
dados, escassez esta devida ao grande intervalo de tempo entre medições e a falta de
repetitibilidade dos experimentos.
Os autores do estudo original (CHO et al., 2001), responderam estas afirmações de
forma veemente, defendendo a metodologia de seu estudo, mas isto é de pouca relevância
no contexto desta tese. Experimentos de microarrays já se mostraram úteis na descoberta de
informação biológica e esta discussão entre ambos os autores é de cunho acadêmico entre
pesquisadores cujos modelos são igualmente válidos, mas sob condições distintas.
Esta discussão suscita uma preocupação importante, que consiste em uma obrigação
de todo cientista sério de levar em consideração os resultados de experimentos isolados (ou
mesmo repetidos apenas uma ou duas vezes) de microarrays com cautela, devido a
potenciais erros de medição e da falta de significância estatística inerente a experimentos
sujeitos a fatores estocásticos, como é o caso das medições de microarrays, que foram
repetidas poucas vezes.
36
Não se deve desmerecer a importância desta relevante fonte de dados, que tem se
mostrado útil na descoberta de vários novos aspectos da regulação celular. O que é
necessário, neste momento, é maximizar o valor dos conjuntos de dados que existem, que,
por definição, são escassos em número, e direcionar as pesquisas de forma que o pequeno
número de experimentos disponíveis possa nos fornecer o resultado máximo em termos de
informação sobre a regulação celular.
É difícil quantificar a qualidade de resultados obtidos a partir destes dados. Cada
conjunto de dados pode “esconder” uma quantidade diferente de informação que não se
conhece a priori, mas que pode ser descoberta por alguma técnica computacional.
Assim sendo, seria muito interessante que se desenvolvesse uma técnica que criasse
hipóteses a partir de poucos experimentos, de forma a guiar a pesquisa futura, diminuindo
os custos associados a novas descobertas biológicas.
O algoritmo descrito nesta tese, dada a sua capacidade de lidar com dados esparsos,
se mostra um candidato adequado para aplicação em tal área. Assim, decidiu-se usá-lo para
buscar candidatos a reguladores que sejam promissores, diminuindo assim o número de
experimentos necessários para determinação de uma rede de regulação genética.
37
Capítulo 3 –
Algoritmo
Booleano Proposto
Como passo preliminar do desenvolvimento do trabalho desta tese, foram estudadas
redes Booleanas para modelar redes de regulação genética. Elas são muito simples, mas
exibem certos comportamentos análogos ao desenvolvimento dos organismos reais, o que
faz com que seja possível utilizá-las para modelar certos fenômenos biológicos, como
vemos na tabela 3-1 a seguir.
Fenômeno Biológico
Análogo em Redes Booleanas
Tipos celulares (diferentes tipos de Atratores no espaço de estados (pontos e/ou ciclos
células
presentes
em
um para os quais há convergência das trajetórias da rede
organismo)
Diferenciação
e que são estáveis)
celular
(transição Transições entre atratores (a modificação das
entre tipos celulares, devida a condições de uma rede faz com que passe a haver
influências externas ou regulação uma convergência para outro atrator no espaço de
genética)
soluções)
Estabilidade
de
padrões Bacias de Atração (espaço no qual todos os pontos
(estabilidade das células mesmo convergem para o mesmo atrator)
quando
da
variação
de
seu
ambiente, dentro de certos limites.
Tabela 3-1: Correspondência entre fenômenos biológicos e termos associados a redes Booleanas
38
Tendo em vista as similares citadas, podemos defender o uso de um modelo tão
simples quanto uma rede Booleana, pois ela pode nos fornecer uma visão qualitativa de
aspectos importantes do complexo processo de desenvolvimento dos organismos.
No caso específico de nosso trabalho, redes Booleanas serviram como um passo
intermediário, de preparação para o passo de modelagem através do uso de lógica fuzzy,
que nos permitiu modelar valores contínuos no intervalo [0,1] e não ficar restritos a apenas
dois estados.
Entretanto, como será discutido a seguir, o modelo Booleano não deve ser
descartado totalmente como sendo “primitivo” ou “incapaz de modelar” a complexidade
das redes de regulação genética. SZALLASI et al. (1998) e LIANG et al. (1998)
demonstram de forma inequívoca que esta desqualificação deste modelo seria no mínimo
injusta e precipitada, tendo em vista os bons resultados (em termos qualitativos) que se
pode obter utilizando-as.
3.1 Redes Booleanas
Redes Booleanas foram introduzidas por Kauffman nos anos 60 (KAUFFMAN,
1969) como uma abstração de redes de regulação genética nas quais cada gene é modelado
como estando em um dentre dois estados (ligado, ON ou desligado, OFF) e o estado de
cada gene no próximo instante de tempo é determinado por uma função Booleana de suas
entradas no instante de tempo corrente. (D'
HAESELEER, 1993).
Uma rede Booleana, denotada G(V,F) é um conjunto V={v1,v2,...,vn} de nós
representando genes e uma lista de funções Booleanas F={f1,f2,...,fn}, onde uma função
Booleana fi(vi1, vi2 , ..., vik ), onde k é o número de nós que regulam o nó i. Esta função,
designada para cada nó vi, recebe entradas dos nós vi1, vi2 , ..., vik. Para um determinado
subconjunto U ⊆ V, um padrão de expressão de U é uma função ψ de U para {0,1}
Um padrão de expressão também é chamado de estado da rede Booleana e
representa o estado de todos os nós (genes) onde cada nó pode assumir o valor 0 (não
39
expresso) ou 1 (expresso) como seu valor em cada instante. O padrão de expressão no
instante t+1 é determinado pelas aplicação síncrona das funções Booleanas pertencentes a F
ao padrão de expressão no instante t (por exemplo, vi (t+1) = fi(vi1(t), vi2 (t), ..., vik(t))
(AKUTSU et al., 1999).
Esta sincronicidade simplifica a análise de redes Booleanas, mas faz com que certos
tipos de padrões complexos exibidos na natureza não possam ser modelados com total
precisão, como será discutido mais na próxima seção.
3.2 Modelando Redes de Regulação
Genética com Redes Booleanas
Neste capítulo será descrito um algoritmo de modelagem de redes de regulação
genética usando-se redes Booleanas. Este é um modelo reconhecidamente simplificado
dado que, entre outras coisas, os efeitos de fatores estocásticos estão ausentes do modelo.
DELLAERT (1995) aponta as seguintes implicações para o uso de redes Booleanas:
•
Diferenças entre elementos regulatórios são ignorados, havendo apenas um único tipo
de elemento genético.
•
Todos os elementos genéticos influenciam os outros de forma similar, de modo que as
diferenças entre estratégias diferentes de regulação em células biológicas também são
ignoradas.
•
Elementos genéticos são modelados como estando ativos ou inativos, o que significa
que conceitos tais como concentrações e respostas graduais existentes nas redes
biológicas são perdidos. Existem vários processos biológicos que respondem seguindo
funções sigmoidais ou S-Shaped (fig. 3-1a), o que lhes confere um gradualismo maior
do que pode ser obtido utilizando-se um função Booleana, no formato de degrau (fig. 31b).
40
•
A transição de todos os elementos de uma rede Booleana ocorre sincronamente, isto é,
todos os elementos são atualizados simultaneamente. Apesar de haver alguns processos
naturais cíclicos (controlados por uma espécie de “relógio biológico”), grande parte dos
processos celulares são assíncronos, ocorrendo quando as pré-condições que lhes são
necessárias são satisfeitas (acúmulo de uma proteína, ausência de um inibidor, etc.).
Este assincronismo cria uma complexidade maior no comportamento celular que não
pode ser reproduzido facilmente por um processo síncrono.
(a)
(b)
Figura 3-1: (a) Uma função sigmóide típica. A resposta é gradual, não havendo pontos de derivada
indefinida. (b) Uma função degrau típica. Quando determinadas condições são satisfeitas, há uma transição
imediata dos valores de saída. Neste ponto a derivada da função é infinita.
Apesar destas limitações, existem várias características da regulação celular que se
assemelham a um comportamento Booleano. Há exemplos de expressão de DNA nos quais
a inibição se dá através da ligação de um elemento (que ou está ligado ou não,
configurando um comportamento Booleano) a um operon (ALBERTS et al, 2002) e
muitos outros elementos são regulados através de um processo signmoidal, que pode ser
aproximado de forma razoável como uma função degrau, que é essencialmente on-off, ou
booleana.
Existem ainda várias outras características celulares que são essencialmente
Booleanas, como o estado de uma proteína quanto a fosforilação ou se uma enzima está em
sua forma ativa ou inativa. Isto quer dizer que, apesar de não poderem modelar todo o
ambiente celular, as redes Booleanas têm a capacidade de modelar vários aspectos do
mesmo fidedignamente.
41
Existem exemplos conhecidos de regulação genética em que há a presença clara de
mecanismos essencialmente Booleanos. Pode-se citar um caso na repressão transcipcional
em processos de desenvolvimento celular.
É sabido que a repressão transcripcional está implicada em uma série de processos
de desenvolvimento celular, pois apenas o controle positivo não poderia gerar todos os
padrões vistos no desenvolvimento. Há duas formas básicas de repressão: a de longo
alcance e a de curto alcance, dependendo da distância entre os genes.
No desenvolvimento da Drosophila melanogaster (mosca da fruta) a repressão tem
um grande papel. Há um gradiente da proteína dorsal de origem materna com um perfil de
decaimento muito lento que é responsável pela diferenciação do embrião em três tipos de
tecidos embrionários distintos: mesoderma, neuroectoderma e ectoderma dorsal.
Nos embriões desta mosca existem três tipos de promotores com diferentes
características que se aproveitam do gradiente da proteína dorsal de diferentes maneiras
para causar a diferenciação do tecido embrionário (fig. 3-2).
O promotor de tipo I contém apenas sites de ligação de baixa afinidade à proteína
dorsal que só serão ocupados se a concentração desta proteína for alta, como é no caso do
mesoderma. Conforme a concentração cai, no neuroectoderma e no ectoderma dorsal, estes
sites não são ocupados.
O promotor de tipo II contém sites de ligação de alta afinidade à proteína dorsal.
Dado que estes ativadores podem se ligar à proteína dorsal mesmo em baixas
concentrações, eles são ligados a ela no mesoderma e no neuroectoderma Entretanto, estes
sites também são de alta eficiência para a proteína snail que é específica do mesoderma que
restringe a expressão destes genes nesta região.
42
Dorsal
concentration
Mesorderm
Neuroectoderm
Dorsal ectoderm
Dorsal concentration
is to low for binding
t ooccur
Type I enhancer
Type II enhancer
Type III enhancer
Dorsal protein
S
S
R
R
R
?
S
Snail repressor
R
Ubiquitous co-repressor
Figura 3-2: Formação de padrões nos embriões pré-celulares da Drosophila melanogaster (extraído de
(GRAY et al., 1996)
O último tipo de promotor, de tipo III, contém sites de ligação à proteína dorsal que
estão fortemente ligados a sites que se ligam ao co-repressor ubíquo R e nunca são
expressos no neuroectoderma e mesoderma. Assim, estes elementos só podem ser
expressos no ectoderma dorsal, onde quase não há proteína dorsal para interagir com este
co-repressor (GRAY et al., 1996).
Este exemplo é interessante, pois mostra dois padrões diferentes de controle: um
padrão contínuo e um Booleano. No lado contínuo, as diferentes concentrações de proteína
dorsal alteram o comportamento dos repressores (caso do neuroectoderma e do
mesoderma), enquanto que no padrão Booleano (caso do ectoderma dorsal), a mera
presença da proteína dorsal acima de um limite mínimo faz com que a repressão ocorra.
Todos os dois padrões são igualmente importantes. O ectoderma dorsal não se
formaria sem o padrão Booleano e os outros dois tecidos não se diferenciariam sem a
presença do processo contínuo. Sem qualquer um dos dois, o desenvolvimento da
Drosophila seria irremediavelmente alterado.
Este exemplo é um caso típico, que permite que se conclua que a modelagem de
certos aspectos da realidade celular através de um mecanismo essencialmente Booleano não
43
deve ser descartado a priori como sendo um modelo não representativo do comportamento
de redes de regulação reais.
SZALLASI et al. (1998) aplicam o modelo de redes Booleanas ao problema real de
modelagem de redes de regulação genética e obtém resultados significativos, mostrando
que apesar de redes Booleanas implicarem em perda de informação, eles não implicam em
uma perda da compreensão do processo que está sendo modelado naquele momento.
Rede
1
•
•
2
•
3
Função Booleana para o nó 1
f(1,2)=1 AND NOT 2
Representação da regulação do nó 1
1,2,0010
Significado:
1
2
Next State
0
0
0
0
1
0
1
0
1
1
1
0
Figura 3-3 : Exemplo de codificação adotada nesta tese para a estratégia de regulação para um dos nós de
uma rede Booleana. O nó 1 é regulado pelo nó 2 e por um mecanismo de feedback, mas sua codificação só é
completa se for conhecido o próximo estado do nó 1 para cada uma das entradas que ele pode receber
3.3 O Modelo proposto
Nesta seção serão descritos os elementos básicos de algoritmo genético aqui
proposto, que são a estrutura dos cromossomos, a função de avaliação, os operadores
genéticos e os critérios de terminação. O GA definido nesta seção usa o algoritmo básico
comum a todos os algoritmos evolucionários, como descrito com detalhes no capítulo 2
desta tese.
44
3.3.1 Estrutura do Cromossomo
Posto que existem n nós na rede Booleana sob estudo, os cromossomos do
algoritmo genético aqui proposto serão divididos em n partes, denominadas genes. Cada
gene armazena a estratégia de regulação completa para o nó i, estratégia esta que consiste
nos elementos que regulam este nó e a função Booleana que está associada a esta regulação,
conforme pode ser visto na figura 3-3.
Assim, cada gene de um cromossomo do GA proposto representa a regulação a que
cada nó está submetida
no modelo proposto. Assim, pode-se concluir que cada
cromossomo no GA representa um modelo de rede de regulação genética proposto como
solução para o problema que se está tentando resolver.
Cada bit da função Booleana representa o próximo estado do nó regulado (vi) dados
os estados correspondentes dos nós que o regulam (vi1, vi2 , ..., vik), onde k é o número de
nós que regulam o nó i, e pode ser diferente para cada um dos nós.
Os bits da função Booleana são representados de forma ordenada, com os nós
reguladores servindo como índice para a escolha do bit que informará o próximo estado. O
índice é dado pelo número Booleano formado pelos valores correntes dos reguladores,
determinando então um número dado por bvi1bvi2 ...bvik, onde cada uma das posições é
ocupada pelo valor assumido no instante t por um dos nós reguladores do nó vi.
Assim, o bit armazenado na posição 0 corresponde ao estado no próximo instante do
nó vi se todos os nós reguladores armazenam 0 no instante atual. Da mesma maneira, o
valor armazenado na posição 1 corresponde ao estado no próximo instante do nó vi se todos
os nós reguladores armazenam 0 no instante atual, com exceção do nó vik que armazena o
valor 1, e assim por diante.
Seja o seguinte exemplo, do nó vi regulado pelos nós v1,v2 e v3, e função Booleana
01000010. Os elementos sublinhados na função Booleana são os de índice 1 e índice 6
(considerando que o primeiro elemento é o de índice 0). Logo eles serão selecionados se os
nós reguladores tiverem respectivamente os valores bv1=0, bv2=0 e bv3=1 (número Booleano
formado é 0012=110) e bv1=1, bv2=1 e bv3=0 (número Booleano formado. 1102=610). A
explicação de como calcular o valor do nó i no instante t+1 neste exemplo, é dada pela
tabela 3-2.
45
bv1 (t)
bv2 (t)
bv3 (t)
Número formado por
vi(t+1)
bv1(t)bv2(t)bv3(t)
0
0
0
0002=010
0
0
0
1
0012=110
1
0
1
0
0102=210
0
0
1
1
0112=310
0
1
0
0
1002=410
0
1
0
1
1012=510
0
1
1
0
1102=610
1
1
1
1
1112=710
0
Tabela 3-2 : Valores determinados para o nó i no instante t+1 quando este está sujeito à função de regulação
dada por f(1,2,3)
01000010
3.3.2 Operadores Genéticos
O GA proposto neste capítulo utiliza dois operadores: crossover (recombinação) e
mutação, que serão descritos nesta seção em detalhe.
O operador de mutação é aplicado a cada elemento de cada nó, podendo alterar
tanto um elemento regulador vik quanto um bit da função de avaliação através de um
mecanismo de sorteio.
Por conseguinte, se for escolhido aplicar o operador de mutação (decisão esta que é
tomada de acordo com uma estratégia de seleção de operadores descrita a seguir), um
número aleatório x é selecionado. Se este número x for menor que um valor predefinido a
posição em que estivermos naquele momento, seja ela um nó regulador ou um bit da função
Booleana, será mudado para um novo valor. Esta operação é consistente com os operadores
mais tradicionais de mutação, como vistos em (MITCHELL, 1996) e (FOGEL et al., 2003)
e pode ser vista em maiores detalhes na figura 3-4.
Nos experimentos conduzidos durante este trabalho, o limite para decisão da
alteração da posição corrente de melhor desempenho, entre os vários valores testados, foi
46
0,5%, que é o valor adotado para todos os experimentos relatados neste capítulo. Isto quer
dizer que, uma vez decidida a aplicação do operador de mutação, em média 0,005 dos nós
reguladores e dos bits efetivamente sofrerão uma mutação.
Cromossomo antes da mutação 1,4: 0101
Valor limite da mutação: 0,005
Valores sorteados
0,193
0,003
0,301
0,000
0,680
0,998
0,222
Implicam em mutação
(menores que o valor limite)
Cromossomo depois da mutação 1,2: 0001
Figura 3-4: Exemplo de atuação do operador de mutação. Sendo o valor limite dado de 0,005, um número é
sorteado para cada posição do cromossomo (2 nós e 4 bits da função Booleana). Se algum deles for menor
do que o valor do parâmetro, um novo valor é escolhido aleatoriamente para aquela posição (no caso do
exemplo, as posições sublinhadas correspondem àquelas que foram mudadas pelo operador).
A estratégia de seleção de operadores consiste na aplicação de uma roleta viciada
para os operadores. Isto significa que o algoritmo alterna entre os operadores de mutação e
de crossover com uma probabilidade que pode ser fixa ou variável com o tempo (tanto de
forma linear como de forma quadrática), dependendo de um parâmetro fornecido pelo
usuário.
Nos experimentos mostrados mais adiante verificamos que a estratégia de melhor
desempenho é aquela em que o operador de crossover se inicia com uma probabilidade
muito alta (95%), probabilidade esta que diminui de forma linear com o passar das
gerações, até chegar ao valor de 20% na última geração. A fórmula de cálculo para a
probabilidade do operador de crossover é dada por:
p cross = 0,95 −
0,75 * g
,
n ger
onde g é a geração atual e nger é o número de gerações que o GA vai executar. O
operador de mutação tem uma probabilidade complementar àquela do operador de
crossover, isto é, em todas as gerações temos que:
47
p mut = 1 − p cross
A mudança da probababilidade dos operadores deriva do fato de que populações
fechadas, com evolução ocorrendo por reprodução entre indivíduos de uma mesma
genealogia, tendem a possuir alto grau de convergência genética. Isto quer dizer que no
final de uma execução uma população é geneticamente parecida, o que faz com que não
seja produtivo cruzar dois elementos, sendo melhor tentar usar mais o operador de mutação
para criar maior variabilidade naquela geração.
1,2,0010
1,2,3,01000001
2,01
3,11
2,3,0110
1,3,11
1,2,0010
2,3,0110
2,01
Figura 3-5: Exemplo de operação do crossover aplicado a funções de regulação. Os genes com fundo cinza
foram aqueles sorteados para compor o filho gerado pelo operador. O segundo filho seria gerado com os
genes marcados com fundo branco. Não há intercâmbio de partes da regulação de cada elemento, mas sim
troca da regulação completa.
O operador de crossover é muito simples. Intercambiam-se pedaços de cada um dos
indivíduos de acordo com um sorteio. Isto equivale ao operador de crossover uniforme, mas
aplicado à regulação completa de cada nó, não aos componentes desta regulação. Isto quer
dizer que ao se decidir por trocar as estratégias de um nó, é possível apenas trocar a função
completa e não é possível trocar apenas alguns bits da função Booleana, como pode se ver
na figura 3-5. Isto significa que o nó vix no cromossomo x e o nó viy no cromossomo y não
podem intercambiar parte de sua estratégia de regulação (que consiste nos nós reguladores
somados à função Booleana). Se o sorteio assim indicar toda a regulação do nó vix é
intercambiada com àquela em viy, conforme visto na figura 3-5.
48
3.3.3 Função de Avaliação
Par avaliar a desempenho de um cromossomo, são armazenadas t trajetórias com nt
passos cada. Cada trajetória representa o comportamento desejado (denominada real, de
aqui em diante) da rede que se está tentando modelar.
Cada rede recebe o primeiro estado de cada trajetória e são calculados os passos
intermediários e final da rede usando a função de avaliação dos nós em questão. O número
de bits que diferem em cada um dos passos são somados e o valor final da soma é dividido
pelo número de passos.
Esta divisão é necessária se houver mais de uma trajetória para avaliar. Tendo em
vista que é possível ter trajetórias mais longas do que outras, se não fosse calculada a média
de erros por passo da trajetória, os elementos que acertassem mais bits da trajetória mais
longa teriam preferência sobre aqueles que acertam mais bits das trajetórias menos longas.
Isto faria com que naturalmente fosse dada preferência àquelas estratégias que acertam em
uma das trajetórias (a mais longa), quando na verdade o que se deseja é que todas as
trajetórias oferecidas tenham o mesmo peso na função de avaliação.
Esta preferência decorreria do fato de que mesmo poucos bits diferentes por passo
em trajetórias longas farão com que se obtenha uma grande soma, enquanto que muitos bits
errados por poucos passos levarão a uma soma baixa.
É fácil entender este problema quando vemos um exemplo simples. Imagine que
temos duas trajetórias armazenadas para uma rede de 50 bits, a primeira com 11 passos e a
segunda com 5 passos. Se tivermos um bit de erro por passo da primeira trajetória, esta
somará 11 erros, enquanto que se tivermos dois bits de erro por passo da segunda trajetória,
somaremos 10 erros. Logo, se não houver uma divisão pelo número de passos, a
contribuição da primeira trajetória para a avaliação deste cromossomo será mais influente
do que a contribuição da segunda trajetória, apesar da rede estar bem mais adequada à
primeira trajetória. Ao se efetuar a divisão pelo número de passos a situação se inverte e a
trajetória com mais erros é a que mais aumenta o valor da função de avaliação.
Posteriormente, cada cromossomo é penalizado de acordo com o número de
relacionamentos que ele representa, de forma que os cromossomos mais curtos recebem
49
créditos extras. Este comportamento se relaciona com o fato de que a natureza normalmente
recompensa estratégias minimalistas, pois elas tendem a ser mais curtas, demandar menos
energia e serem mais robustas quanto a defeitos na replicação e na transcrição do DNA
(ALBERTS et al, 2002).
É importante também ressaltar que o número de pontos necessários para identificar
corretamente os pesos de uma rede esparsamente conectada é da ordem da conectividade
máxima entre os elementos (VAN SOMEREN et al., 2000). Assim, buscando redes menos
conectadas é possível extrair mais informação dos dados disponíveis.
Esta penalização é calculada através de um coeficiente de preenchimento. São
calculados quantos nós fornecem entradas para o nó i e divide-se este valor pelo número de
nós existentes no sistema. Depois calcula-se a média deste coeficiente de preenchimento
para todos os nós e será obtido um número que varia de 0 a 1. O objetivo é que a avaliação
do cromossomo seja mais penalizada quando este valor está mais próximo de 1, logo
diminui-se o valor obtido de 1. A fórmula deste coeficiente é dada, então, por:
n
c = 1−
ni
i =1
n
n
,
onde n é o número de nós do sistema e ni, o número de nós que participam da regulação do
nó i.
Por exemplo, seja uma rede de três nós cujas regulações são dadas por:
•
Nó 1: f(2,3)=0100
•
Nó 2: f(3)=00
•
Nó 3: f(1,2,3)=11001010
O valor calculado para o coeficiente então é dado por:
2 +1 +3
3
3 =1
c = 1− 3
3
3
Este valor é decorrente do fato de que a média de elementos reguladores por nó é
igual a 2.
50
Este coeficiente retorna um valor entre zero e um que será multiplicado pela
avaliação do cromossomo obtida da forma descrita anteriormente nesta seção. Assim, se
houver dois cromossomos que cometem o mesmo número de erros, aquele que representa
uma rede menos conectada passará a ter uma avaliação melhor e será preferido pelo
módulo de seleção.
3.3.4 Combinando soluções
Um fator interessante percebido nos resultados preliminares do algoritmo proposto
foi o fato de que cada rodada não descobria a regulação correta para todos os nós da rede
(aquela que foi usada para gerar os dados fornecidos para o algoritmo), mas sim para alguns
destes.
No primeiro dos exemplos citados na próxima seção, apesar de não ser descoberta a
regulação correta para a rede completa, as melhores soluções obtidas armazenavam a
regulação correta para três dos cinco nós em 72 de 118 rodadas efetuadas (61%), enquanto
que duas regulações corretas eram descobertas em 106 das 118 rodadas (90%).
No exemplo número 2 da seção de resultados, as melhores soluções apontadas pelo
algoritmo descobriam a regulação correta para cada um dos nós na proporção das rodadas
apontadas na tabela 3-3.
Nó
% de acerto
1
62%
2
58%
3
45%
4
35%
5
52%
Tabela 3-3: Percentagem do total de rodadas nas quais foram obtidas as regulações corretas para cada um dos
genes do exemplo número 2.
51
Com base nestes dados decidiu-se acrescentar um passo adicional de combinação
dos melhores resultados de nosso GA, de forma a buscar uma solução que contivesse o
melhor que cada uma das soluções pudessem oferecer. Foram escolhidas as 8 melhores
soluções dadas pelo GA baseando-se apenas no valor da função de avaliação e
combinaram-se todas as regulações obtidas.
O limite de 8 soluções foi determinado de forma ad hoc. Posto que o espaço de
busca cresce de forma exponencial com o número de cromossomos, não se deve determinar
um valor muito grande. Ao mesmo tempo, um valor pequeno demais faz com que o
propósito do passo de combinação não seja atingido, por não permitir a existência de
grande variedade nos cromossomos combinados.
O espaço de busca não é excessivamente grande, apesar da explosão combinatória.
Para uma rede pequena, que possua apenas 7 nós, seu tamanho é de 87=2,097,152 soluções.
Este número de soluções pode ser comparado rapidamente em um computador pessoal (o
tempo total de comparação é inferior a 2 minutos em um Pentium IV 1.6Mhz).
Para combinar as soluções simplesmente foram separadas a regulação de cada nó
de cada cromossomo que foram posteriormente colocadas em um pool de candidatas a
regulação. Obtém-se então um pool para cada nó e as soluções são combinadas. Cada uma
das candidatas é avaliada usando-se os mesmos critérios de avaliação descritos na seção
anterior e a melhor de todas soluções obtidas é oferecida como a solução encontrada
naquela execução do GA.
Este passo de combinação não pode oferecer uma solução pior do que as
encontradas pelo algoritmo, dado que as soluções originais do algoritmo são parte do
espaço de busca deste passo. Isto implica em que, se as soluções originais forem melhores
que todas as outras alternativas, uma das soluções originais terá a avaliação máxima e será
retornada pelo passo de combinação. Caso isto não ocorra, a melhor das soluções
combinadas será aquela retornada por este passo adicional. Esta possível melhora justifica o
esforço computacional dispendido.
52
3.3.5 Critérios de terminação
O GA usado nesta tese usa três critérios básicos de terminação:
Qualidade : quando for obtida uma solução que modela perfeitamente os dados, isto é,
que prevê todos os bits de todos os passos da trajetória corretamente, então não há
necessidade de continuar a evoluir as soluções, pois não há como melhorar os
resultados obtidos até aquele ponto.
Tempo: É estabelecido um limite máximo de gerações para a execução do algoritmo. Se
este número for alcançado, mesmo que não tenha sido obtida uma solução ótima,
interrompe-se a execução e eventualmente reinicia-se o ciclo de tentativas.
Estagnação de melhora: Quando se usa elitismo, a avaliação não pode piorar conforme
as gerações passam, visto que os melhores indivíduos são levados de uma geração para
a outra. Neste caso interrompe-se a execução se não for obtida melhora na avaliação do
melhor indivíduo por n gerações, onde n é um parâmetro fornecido pelo usuário. Este
tipo de situação é indicativo de uma forte convergência genética (ausência de
diversidade da população) e o que indica que a não ser por uma atuação muito bem
sucedida do operador de mutação, não haverá mais melhoras e pode-se encerrar a
evolução já que esta tende a não fornecer bons resultados. Uma alternativa interessante
consiste em usar o melhor indivíduo como parte da inicialização da população de uma
nova execução.
A
E
B
D
C
Figura 3-6: Rede usada no exemplo 1, que contém uma configuração cíclica (A → B → C → D → E → A) .
A seta quer dizer que o elemento à esquerda da mesma ativa o elemento à direita. Isto é, o elemento à direta
assumirá valor 1 no instante t+1 se o elemento à esquerda tiver valor 1 no instante t.
53
3.4 Resultados
Para testar o algoritmo desenvolvido, foram criados alguns exemplos que
apresentam características interessantes ou alguma dificuldade específica. É importante
ressaltar que a implementação para este algoritmo foi bastante eficiente e que cada rodada
demorou uma média de 5-10 segundos em um computador pessoal padrão (Pentium IV
1.6Mhz), o que significa que é possível executar centenas de rodadas em uma hora.
O tempo requerido para a execução do algoritmo aumenta com o número de nós da
rede sendo avaliada e com o número de passos oferecidos para o algoritmo, mas o aumento
é linear e afeta apenas a função de avaliação.
O primeiro exemplo utilizado é uma rede de cinco nós que tem uma configuração
cíclica, conforme pode ser visto na figura 3-6. A rede contém um ponto fixo (quando todos
os nós estão em um estado com valor zero), enquanto que todos os outros pontos iniciais
levam a ciclos de tamanho cinco.
É fornecida para a rede apenas uma trajetória contendo 6 pontos. O tamanho da
trajetória dada é o tamanho de um ciclo, incluindo o retorno ao ponto inicial. Não é
necessário continuar a trajetória, pois tendo em vista que o algoritmo trata apenas redes
determinísticas, o valor da configuração do instante seguinte obtido para uma configuração
x qualquer será sempre igual, não importando quando esta trajetória ocorra (não há
dependência temporal).
A trajetória usada foi 10100 → 01010 → 00101 → 10010 → 01001 → 10100. É
possível verificar que a última configuração (marcada em itálico) é igual à primeira. Esta
informação ajuda o algoritmo na obtenção de trajetórias cíclicas.
O GA foi executado com este exemplo 120 vezes e a avaliação perfeita (isto é,
acertamos a previsão de todos os pontos da trajetória) foi obtido duas vezes, o que fez com
que não fosse executado o passo de combinação para esta rede, pois não havia como
melhorar sua avaliação. As duas respostas perfeitas são mostradas na tabela 3-4.
54
Casamento perfeito #1
Nó 1 : f(5) → 01
Nó 2 : f(1) → 01
Nó 3: f(2) → 01
Nó 4: f(3) → 01
Nó 5: f(4) → 01
Casamento perfeito #2
Nó 1: f(5) → 01
Nó 2: f(1) → 01
Nó 3: f(2) → 01
Nó 4: f(1,3) → 0111
Nó 5: f(4) → 01
Tabela 3-4
melhores resultados obtidos para o exemplo #1
Conforme explicado em uma seção anterior, o formato dos resultados significa que,
no primeiro caso, a saída do nó 1 no próximo instante é função apenas do nó 5 (f(5)) e seu
valor no instante t+1 é dada por 0, caso o nó 5 cinco seja zero (primeiro bit) no instante t e
um caso o nó 5 seja 1 (segundo bit) no instante t.
Já no caso do segundo resultado, tem-se que a saída do nó 4 é função dos nós 1 e 3
(f(1,3)) e seu valor no próximo instante é dado pela tabela 3-5.
Tabela 3-5
Nó 1 (t)
Nó 3 (t)
Nó 4 (t+1)
0
0
0
0
1
1
1
0
1
1
1
1
Interpretação das regras oferecidas como resultado pelo GA
Como se pode ver, na segunda das respostas perfeitas obtidas, o GA forneceu a
regulação correta com alguma medida de redundância. Esta redundância consiste em nós
55
adicionais que não afetam o resultado pois pode-se fazer uma redução simples na função
Booleana obtida e chegar à regulação correta.
Outra medida de erro, não visualizada em nenhum dos exemplos citados consiste
em obter funções que apesar de obterem resultados perfeitos nos exemplos fornecidos
poderiam generalizar mal para outros casos. Isto decorre do fato de que existem infinitas
funções Booleanas que obtém os mesmos resultados para o pequeno número de exemplos
fornecidos. Infelizmente este é um problema insolúvel, que pode ser minimizado
aumentando-se o número de exemplos e aumentando a quantidade de informação fornecida
para a rede, conforme discutido a seguir.
Os vários tipos de estimativa de erro dependeriam de quantidades estatisticamente
relevante de dados, que não é o caso dos problemas reais que estes exemplos tentam
modelar. Quando se trabalha com conjuntos de dados artificiais, pode-se ampliar sem custo
a quantidade de exemplos oferecidos para qualquer algoritmo, mas isto não é o caso de
problemas biológicos, nos quais a obtenção de cada conjunto de dados custa caro, tanto em
termos de tempo quanto financeiro.
Foi feito outro experimento com esta mesma rede, que consistiu em tentar encontrála oferecendo três trajetórias de dois pontos cada, descritas na tabela 3-6 a seguir.
11111
11111
00001
10000
01000
01010
00101
10010
Tabela 3-6 : Segundo conjunto de dados oferecido para tentar realizar a inferência da rede de regulação do
exemplo #1
56
Neste exemplo, tem-se então o mesmo número de medidas, mas com um número
diferente de estados iniciais. Em 40 execuções do algoritmo, foi obtido o escore perfeito 12
vezes, 8 das quais incluíam redundâncias similares àquelas descritas acima.
Estes resultados sugerem que um número maior de medidas com uma única
condição inicial contêm menos informação do que muitas trajetórias com várias condições
iniciais distintas. Este fato já foi sugerido por D'
HAESELEER (1993), e implica em que a
abordagem de se investir um grande esforço na obtenção de uma única trajetória longa não
é muito produtiva, devendo-se privilegiar a possibilidade de se estudar mais trajetórias,
mesmo que mais curtas, mas com estados iniciais diferentes.
A questão consiste em que para inferir a regulação de um único gene, tende a ser
mais produtivo observar a expressão do mesmo em várias diferentes combinações de níveis
de expressão de suas entradas. Neste caso, têm-se amostras de várias condições e
perturbações das condições ambientais.
As séries temporais de expressão gênica oferecem uma grande quantidade de dados,
mas todos os pontos tendem a ser sobre um único processo dinâmico na célula e estarão
fortemente correlacionados aos pontos nos instantes anterior e posterior. Logo, espera-se
que uma série temporal de n pontos tenha menos informação do que n pontos medidos de
forma independente, em condições ambientais bem distintas. As séries podem, entretanto,
prover uma boa visão da dinâmica do processo como um todo, além de serem uma
conseqüência natural de se obter dados através da tecnologia de microarrays que será
discutida mais adiante nesta tese.
Obviamente, os dois tipos de dados não são mutuamente excludentes, e quanto mais
se obtiver de cada um deles, mais preciso será o modelo obtido e mais próximo da realidade
o resultado do algoritmo aqui proposto.
Foi oferecido ao algoritmo um segundo exemplo que consistia em uma rede dada
pela configuração descrita na tabela 3-7. Este exemplo é mais complexo, tanto por possuir
mais nós quanto por possuir um grau maior de interconexão entre os elementos.
57
O1 : f(2,3) → 0111
O2 : f(1,3,4) → 01101000
O3 : f(3) → 01
O4 : f(4) → 10
O5 : f(3,4) → 0111
O6 : 0
O7 : f(1,2,3,4,5) : 00001111000000001111001010101010
Tabela 3-7: Rede de regulação real a ser descoberta no exemplo #2.
Esta rede contém sete nós, dos quais um deles é constante (o nó 6), mantendo-se
permanentemente não expresso (com valor zero). Há dois nós que recebem uma entrada (on
nós 3 e 4), dois que recebem duas entradas (1 e 5), um que recebe três entradas (nó 2) e um
que recebe 5 entradas (o nó 7). A compreensão desta rede é facilitada pela representação
em formato de grafo, como pode ser visto na figura 3-7.
7
1
2
4
3
5
6
Figura 3-7: Representação do exemplo com regulação dada pela tabela 3-7 em formato de grafo. As setas
indicam que o nó de origem regula o nó de destino.
Este último nó demonstra o principal problema da nossa representação que consiste
no tamanho da string necessária para representar uma função. O número de bits necessários
obviamente é dado por 2n, onde n é o número de nós reguladores. Este número cresce
58
exponencialmente e pode ser problemático em casos de redes grandes e fortemente
interconectadas.
Este problema foi corrigido no programa genético usado no caso de redes contínuas
através do uso de uma representação distinta. O modelo proposto no capítulo a seguir é que
é muito mais compacto, além de poder lidar também com exemplos Booleanos.
Foi executado o GA oferecendo-lhe a seguinte trajetória:
1101000 → 1000101 → 0101001 → 1100100 → 1101000 → 1000101 → 0101001 →
1100100 → 1101000 → 1000101
Esta trajetória consiste em 10 pontos, sendo que o último ponto (em itálico) consiste
em uma repetição dos pontos número 2 e 6 (também em itálico), indicando a existência de
um ciclo atrator.
Foram executadas 20 rodadas do GA proposto e em nenhuma delas foi encontrada a
rede correta. Em todas as rodadas foi descoberta uma rede que terminava exatamente no
mesmo atrator da trajetória exemplo
Em 12 das 20 rodadas (60%) a rede descoberta pelo GA calculava um resultado que
diferia da trajetória exemplo em 3 bits ou menos (de um total de 63, dado que o primeiro
passo não é calculado, mas sim dado para a rede como valor de inicialização),
correspondendo a um erro de 5% ou menos. Isto é esperado, dada a ambigüidade inerente
de um conjunto de dados tão pequeno. A melhor rede encontrada, após o passo de
combinação, pode ser vista na tabela 3-8
Nó 1 : f(2,3,5) → 10011101
Nó 2: f(1,3,4,6) → 1011001110011011
Nó 3: 0
Nó 4: f(4) → 10
Nó 5: f(3,4) → 0110
Nó 6: 0
Nó 7: f(1,2,3,4,5) : 11110001100100010100001000111000
Tabela 3-8 : Melhor rede de regulaçao encontrada para o exemplo #2.
59
Esta rede não contém a regulação correta, mas ela oferece alguns resultados
interessantes que devem ser analisados.
Primeiramente, a melhor regulação para o nó 3 consiste em concebê-lo como um nó
constante em zero. Isto decorre do fato do exemplo fornecido para o algoritmo só conter
pontos nos quais este nó assume valor zero. Logo, o fato de haver apenas uma trajetória
prejudica o algoritmo proposto (e qualquer outro que porventura buscasse extrair
informações de tal conjunto de dados).
Segundo, o algoritmo proposto obteve, para os nós 1 e 2, os corretos elementos
reguladores com a adição de mais um nó espúrio e os elementos regulatórios corretos para
os nós 4,5,6 e 7, apesar de não acertar todos os bits da função Booleana.
Entretanto, estes bits não forem importantes na avaliação da trajetória usada como
exemplo, pois a rede descrita acima termina no ciclo atrator especificado no exemplo no
caso do exemplo dado. Se houvesse outras trajetórias, a pressão evolucionária poderia
fazer com que outros bits também convergissem para os valores corretos.
Além disto, dado que a função Booleana é previamente conhecida, decidiu-se
verificar como a solução descoberta se comportaria para os 27 = 128 possíveis trajetórias de
tal rede. Pode-se verificar então que ela calculou 26 (20,3%) das trajetórias corretamente e
das outras 102, 85 (83,3%) diferiam das trajetórias “reais” em menos de um bit por passo.
Outros exemplos foram fornecidos para o algoritmo proposto. Um deles foi uma
simulação do operon Lac nas bactérias E. Coli que é um mecanismo de controle para as
enzimas necessárias para a digestão das lactoses, sendo um exemplo interessante tanto para
mecanismos de repressão e ativação genéticos.
Como discutido na seção 2.3, o dogma central da biologia estabelece que o DNA
primeiro precisa ser transcrito em uma substância intermediária, o RNA mensageiro
(mRNA) antes de ser traduzido para uma proteína. Isto implica em que os níveis de
proteínas podem ser regulados nos passos de transcrição de DNA em mRNA ou no passo
de tradução deste em proteína. Esta regulação está relacionada com a necessidade da célula
de reconhecer e responder a novas condições ambientais.
O controle da transcrição é dado através da ligação de repressores ou indutores a um
sítio do DNA denominado operador. Este sítio se localiza próximo ao gene codificador da
60
proteína. Este conjunto operador mais proteína codificadora é denominado operon, e
constitui a unidade básica de coordenação da expressão gênica (GRIFFITHS, 2000).
O operon lac é composto de três genes estruturais: um que codifica para a βgalactosidae (chamado z), um que codifica para a permease (chamado y) e outro que
codifica para a transacetilase (denominado a). Este último não está envolvido na digestão
da lactose, mas é sempre co-expresso com os outros dois.
O operon inclui um operador que se liga a uma proteína codificada pelo gene
denominado l que está codificado logo acima na cadeia de regulação (Fig 3-8). Quando
está proteína está ligada, o operon é reprimido e a DNA polimerase, mesmo quando ligada
à região promotora (P), não consegue prosseguir com o processo de transcrição. Assim,
podemos dizer que o operon lac está submetido a um controle negativo por esta proteína,
que pode então ser chamada de repressora.
Entretanto, quando a lactose está presente, ela se liga a esta proteína repressora,
desativando-a, o que permite que o processo de transcrição das enzimas necessárias para a
sua digestão prossiga.
I
~
~
Proteína
Repressora
O
P
z
Lactose
Repressor
Inativo
y
Permease
a
~
Transacetilase
β- Galactosidase
Figura 3-8: Estrutura do gene codificador do operon Lac.
O operon lac também está sob controle positivo. A proteína CAP (Catabolite
Activator Protein, ou Proteína Ativadora de Catabólitos), que é codificada pelo gene crp
situado bem mais longe do que a região codificadora da proteína repressora, se liga ao
cAMP para formar um complexo que se liga ao promotor lac e facilita sua transcrição,
fazendo com que mais cópias das proteínas codificadas pelos genes lac estejam disponíveis.
Entretanto, as bactérias E. Coli preferem a glicose como fonte de energia, em
detrimento da lactose. Isto fica claro quando analisamos o fato de que quando a glicose está
61
presente, a quantidade de cAMP é diminuída através de várias reações químicas, fazendo
com que haja menos complexos CAP-cAMP e ocorra uma diminuição do número de genes
expressos.
I
L acto se
CAP
CAmp
O p ero n
Z
Y
G lico se
Figura 3-9: Rede usada para a simulação do open Lac. As setas simbolizam uma atuação positiva (ativação)
enquanto que os cícrculos indicam repressão.
Foi então criada uma rede Booleana (mostrada na fig. 3-9) buscando representar
estes relacionamentos de forma fiel. Foram gerados então dados sintéticos para que o
algoritmo proposto pudesse fazer a inferência desta rede.
Foram criadas três trajetórias que terminam em atratores simples. Todos os dados
possíveis foram gerados (26 trajetórias) e verificou-se que a rede não apresenta nenhum tipo
de ciclo ou qualquer outro atrator relevante. A seguir pode-se ver as trajetórias oferecidas
para a rede foram as seguintes, informando que os bits estão ordenados da seguinte forma:
Proteína Repressora (I, na figura), que consideramos presente quando está em sua forma
ativa, Lactose, Glicose, CAP, CAMP e Operon.
Para esta rede, foi obtido o resultado mostrado na tabela 3-10, após a aplicação do
algoritmo proposto, após apenas 10 rodadas.
A ordenação dos bits é dada da maneira descrita anteriormente, com o nome que
aparece na j-ésima posição substituindo o nó vij. Por exemplo, para a regulação da Lactose
tem-se a ordenação dos nós reguladores, para efeito de cálculo do valor da Lactose no
instante t+1, dada pela tabela 3-11.
62
100110
100110
110110
110111
110111
111110
111101
111100
111100
Tabela 3-9: Trajetórias oferecidas para o algoritmo para a inferência do mecanismo do operon lac.
I : f(Lactose) → 10
Lactose : f(Lactose,CAP) →0010
Glicose : f(RP,Lactose,Glicose) → 00110001
CAP : f(Glicose,Operon) → 1000
cAMP : f(RP,Glicose,Operon) → 11001100
operon : f(RP,Lactose,Glucose,cAMP,Operon) → 01011000010001001000111100110100
Tabela 3-10: Melhor resultado obtido pelo algoritmo na inferência da rede de regulação do operon lac
Lactose(t) CAP(t) Lactose(t+1)
0
0
0
0
1
0
1
0
1
1
1
0
Tabela 3-11: Forma de calcular o valor da Lactose no instante t+1, dados os valores de seus nós reguladores.
Os reguladores são ordenados conforme aparecem na definição da função de regulação explicitada na tabela
3-10.
Estes resultados apresentam aspectos interessantes:
63
•
A proteína repressora (resultado da expressão do gene I), é controlada da Lactose está
presente apenas se esta está ausente, o que é exatamente igual ao comportamento real
desta substância.
•
A lactose é função dela mesma e do CAP. Este tipo de resultado trivial (a presença de
um elemento estar relacionado com a presença dele mesmo no instante anterior) é uma
possibilidade dentro de qualquer algoritmo, visto que um elemento costuma ter alta
correlação com ele mesmo. Entretanto, neste caso pode-se verificar que quando CAP
está presente (bits 1 e 3) a lactose some no instante t+1. Isto é aproximadamente o que
acontece no operon, tendo em vista que o CAP realiza um controle positivo sobre as
duas enzimas necessárias para a digestão da lactose. Logo, sua presença poderia indicar
que a lactose seria digerida em um instante de tempo próximo.
•
O CAP, de acordo com o algoritmo proposto, está ausente quando a glicose está
presente (bits 2 e 3 da função de controle), o que também corresponde, a grosso modo,
ao controle real do operon Lac. O mesmo vale para o caso do cAMP, cujos bits 2,3 6 e
7 correspondem ao caso em que a glicose está presente (respectivamente 010, 011, 110
e 111, onde a presença de glicose é dada pelo segundo bit) e indicam que no instante
t+1 não haverá a presença de cAMP.
Pode-se concluir então que vários aspectos reais do controle realizado no operon
Lac foram modelados de forma bem sucedida por este algoritmo, mesmo com um número
reduzido de rodadas.
Estes resultados são encorajadores, mesmo considerando que as rodadas do GA não
retornaram as redes de regulação corretas. É importante compreender que a quantidade de
informação fornecida para o GA é muito pequena e que toda trajetória que não pertence ao
nosso conjunto de treinamento deve ser extrapolada, o que significa que a restrição
colocada sobre os dados é pequena. Várias funções Booleanas têm o mesmo resultado em
um único ponto, o que significa que qualquer uma delas seria considerada como um acerto
pela função de avaliação utilizada.
Por exemplo, seja o caso de se prever o valor da Lactose no instante t+1, posto que
no instante t temos os seguintes valores para cada um dos elementos envolvidos no
processo:
Proteína Repressora:1
64
Lactose:0
Glicose:0
CAP:1
CAMP:1
Se o valor da lactose no instante t+1 for 0, dentre as várias funções que acertam o
valor, pode-se apontar as seguintes:
NOT(Proteína Repressora(t-1))
Proteína Repressora(t-1) AND Glicose(t-1)
Glicose(t-1)
Lactose(t-1) AND CAP(t-1)
0
Existem muitas outras funções capazes de acertar perfeitamente o padrão, e, na
ausência de qualquer outra informação adicional, qualquer uma delas é aceitável como
resposta do algoritmo.
Quando existe mais de um ponto ou mais de uma trajetória, este problema diminui,
mas não desaparece por inteiro. Sempre haverá mais de uma função lógica capaz de
combinar os elementos presentes no estado no instante t-1 de forma a prever os elementos
do estado no instante t.
Quando se está modelando redes possivelmente complexas em uma situação em que
há poucas trajetórias, enfrenta-se uma situação em que apenas um pequeno subconjunto de
todas as possibilidades de relacionamento entrada/saída de cada função Booleana está
presente. Assim, qualquer função que acerte estes poucos bits sem erro obterá um escore
altíssimo no algoritmo, mesmo que não extrapole os outros bits de forma correta.
Esta falta de restrição claramente visível no exemplo número dois visto acima. O bit
3, por acaso, permaneceu constante em zero em todos os pontos da trajetória. Isto fez com
que o GA calculasse como casamento perfeito uma função constante (k=0) como regulação
para este nó.
É sabido, posto que o exemplo foi criado artificialmente, que tal regulação não é a
verdadeira, mas, tendo em vista que nenhum tipo de informação adicional foi fornecida, o
65
GA não tem como saber isto, da mesma maneira que qualquer outro método computacional
que porventura viesse a ser aplicado.
Este tipo de ambigüidade é inerente às condições em que os dados genéticos reais
são obtidos, como será visto no capítulo 4 desta tese. Dado o alto custo de se medir o
padrão de expressão de vários genes, o número de medidas é significativamente menor que
o número de genes (às vezes, até 3 ordens de grandeza menor). Logo, haverá um grande
número de soluções que se encaixam nos dados disponíveis (VAN SOMEREN et al.,
2000).
A solução para este problema é, obviamente, incluir mais trajetórias exemplo.
AKUTSU et al. (1999) sugere um número e uma estrutura de exemplos que representam
uma boa maneira de aumentar o volume de informação dada para algoritmo evolucionário
proposto nesta tese. Neste artigo é demonstrado que o número de entradas necessárias para
uma rede ser determinada é de O(log n), quando o número de relacionamentos (K) entre
elementos é fixo.
O problema de tal abordagem é que, como o próprio artigo aponta, em situações
reais é impossível controlar os valores oferecidos pelo algoritmo, pois os dados são obtidos
como passos consecutivos de uma trajetória, o que pode fazer com que sejam enfrentados
problemas como aquele vistos no caso do exemplo dois mostrado acima. Neste, um dos
elementos permaneceu constante, não oferecendo qualquer informação para que o
algoritmo realizasse uma inferência.
O problema é de fácil solução quando se lida com dados sintéticos – basta gerar
mais dados para o algoritmo. Entretanto, quando se discutem experimentos em que a
geração de dados implica em um custo real, nem sempre tal ação será possível. Logo, os
algoritmos devem procurar realizar o melhor trabalho possível com um volume escasso de
dados.
Outro problema sério da abordagem apresentada em (AKUTSU et al., 1999) é que
as constantes associadas ao método crescem de forma exponencial com o valor máximo de
interconexão entre os elementos, representado pelo símbolo K. Ademais, no trabalho
descrito naquele artigo usam-se apenas valores de K=2 e K=3, quando já foi demonstrado
que na natureza os valores reais de K oscilam entre 4 e 8 (ARNONE et al., 1997).
66
Não se procurou aprofundar este ponto pois este algoritmo mostrou-se frágil, tendo
em vista o fato de seus cromossomos crescerem de forma exponencial com o tamanho e a
interconexão dos nós da rede. Logo, seria interessante busca uma representação alternativa,
que será mostrada no próximo capítulo.
Para exemplificar este problema, foi criado um exemplo com 30 nós, para os quais
foram fornecidas duas trajetórias distintas de 15 passos cada.
O número médio de
interconexões entre os elementos desta rede consistia em cerca de 3. Com isto, o
cromossomo que representava a configuração correta tinha 3570 caracteres. Em situações
reais nós podemos ter até 8000 genes em um exemplo (como visto no caso do capítulo 4
desta mesma tese), o que levaria o cromossomo a ter um tamanho que não seria
representável com uso adequado de memória.
Entretanto, os resultados, até mesmo para uma rede relativamente grande como esta
de 30 nós são bastante animadores. Após rodar o GA 50 vezes, com população de 100
indivíduos e estratégia elitista, os dois melhores indivíduos de cada rodada foram usados
para inicializar a população da 51a rodada que retornou um resultado que acertava 585 de
840 bits em teste (aproximadamente 70%). É importante ressaltar que o primeiro passo de
cada trajetória é dado como ponto inicial para a função de avaliação, o que faz com que não
seja incluído no cálculo dos acertos.
O mais interessante é que das 30 regulações, 3 foram descobertas corretamente e 2
contendo redundâncias como as descritas anteriormente (16% de acerto real). Das 25
restantes, 8 continham (32%) exatamente os elementos que eram os reguladores corretos,
mas os bits descobertos estavam incorretos.
Estes resultados são alentadores, mas insuficientes para justificar esta representação.
Ainda é necessário algo mais compacto, para que seja possível tratar problemas mais
próximos da realidade. Entretanto, se for possível compartimentalizar as redes de regulação
através de um algoritmo de particionamento de grafos, como descrito por KAWAJI et al.
(2001), então pode-se encontrar utilidade para este algoritmo.
67
3.5 Conclusão
Neste capítulo foi mostrada a aplicação de um algoritmo evolucionário para a
inferência de uma rede Booleana que pudesse, entre outras aplicações, modelar certos
aspectos do desenvolvimento e da vida de uma célula e da regulação da expressão gênica.
O algoritmo genético utilizado demonstrou possuir uma boa capacidade para
encontrar redes Booleanas ajustadas aos dados oferecidos para o treinamento, encontrando
inclusive as regulações corretas em vários dos casos que lhe foram apresentados bem como
modelando certos aspectos críticos do comportamento das redes apresentadas, como pontos
e ciclos atratores.
Entretanto, a representação cromossomial utilizada apresenta problemas de
ocupação eficiente de memória e de uso quando a rede apresenta um número maior de nós.
Este problema não é derivado de uma implementação específica, mas sim inerente ao fato
de que para representar a função de regulação de um nó que interage com n outros nós, são
necessários 2n bits. Isto inviabilizaria a aplicação deste algoritmo em problemas biológicos
reais, nos quais o número de nós pode chegar às dezenas de milhares.
Ademais, apesar das redes Booleanas demonstrarem ser capazes de modelar certos
aspectos interessantes do desenvolvimento celular, elas apresentam limitações que devem
ser tratadas quando se deseja obter modelos mais precisos. Estas limitações são mais
evidentes quando é levantada a questão das respostas graduais, existentes no ambiente
celular tipicamente sob o formato de funções sigmoidais. Estas respostas são aproximadas
por funções degrau em redes Booleanas, funções estas que não apresentam a mesma
gradualidade de resposta.
Assim, torna-se necessário buscar um modelo que possua uma representação mais
compacta, de forma que se possa lidar com problemas maiores, e que seja capaz de lidar
com variáveis contínuas, de forma a preservar a gradualidade de resposta, o que será feito
em detalhes no próximo capítulo.
68
Capítulo 4 - Algoritmo
Contínuo Proposto
4.1 Introdução
Neste capítulo será descrito em detalhe o algoritmo que foi desenvolvido para
modelar processos contínuos. Serão mostrados cada um dos passos que são necessários
para que sejam obtidos os resultados demonstrados nos capítulos posteriores.
Como visto no capítulo anterior, a modelagem através de redes Booleanas é
interessante como modelo simplificado da realidade, possuindo a capacidade de refletir
diversos aspectos da realidade de forma relativamente precisa. Entretanto, existem
limitações nesta abordagem que nunca serão transpostos, como a incapacidade de modelar
o controle gradual.
Dadas estas limitações, e os problemas encontrados no algoritmo proposto (como o
tamanho excessivo dos cromossomos), decidiu-se partir para um algoritmo mais
sofisticado, que pudesse modelar tanto dados contínuos quanto Booleanos, algoritmo este
que será desenvolvido neste capítulo.
69
Este algoritmo consiste na utilização de um algoritmo evolucionário (EA) para a
descoberta de regras fuzzy que modelem o sistema de controle que gerou os dados sob
análise.
A idéia de representar redes de regulação como um conjunto de regras não é nova.
Ela já foi explorada em vários trabalhos anteriores. MCADAMS et al. (1995) comparou a
dinâmica celular com a dinâmica de circuitos e simulada através do uso de regras
representáveis como circuitos lógicos. VENET et al. (2001) define chaves binárias usandoas como o mecanismo fundamental no qual se baseiam regras binárias que são usadas para
descobrir relacionamentos úteis na regulação genética.
Para desenvolver as regras procura-se concentrar em uma ou mais variáveis de
interesse presentes no conjunto de dados oferecido para o algoritmo. Estas variáveis
também são chamadas de elementos de interesse, ou elementos, ao longo desta tese.
Estes elementos de interesse são determinados de acordo com a necessidade do
usuário. Por exemplo, em uma aplicação de classificação a variável de interesse poderia ser
a categoria a que a tupla pertence, enquanto que em uma aplicação de engenharia reversa de
redes de regulação genética a variável de interesse pode ser o nível de expressão de um
gene específico.
Para cada uma delas tentará se descobrir, através do uso do EA, um conjunto de
regras fuzzy de forma que os valores calculados através da aplicação destas regras seja uma
aproximação o mais próximo possível ao valor presente nos dados (chamado de valor real).
Quando se está falando de um exemplo de bioinformática, diz-se que as regras
fuzzy representam um modelo da regulação genética e que o conjunto de regras fuzzy é um
modelo da rede de regulação genética. Assim, o conjunto de regras fuzzy é denominado de
rede de regulação (ou simplesmente de rede) durante este capítulo.
Como discutido no capítulo dois desta tese, um algoritmo evolucionário funciona
iterando uma população de estruturas, denominadas indivíduos, que são evoluídos em
busca da solução final do problema. No caso do EA usado neste capítulo, cada indivíduo
consiste em uma rede de regulação completa, contendo uma ou mais regras para cada uma
das variáveis de interesse.
Regras fuzzy se baseiam em conjuntos fuzzy definidos de acordo com a
compreensão do fenômeno sendo modelado. Conforme visto no capítulo dois, os conjuntos
70
fuzzy representam a divisão dos valores que as variáveis podem assumir (seu universo de
discurso) através do uso de funções que modelam a pertinência da variável a um conceito
lingüístico determinado. A definição dos conjuntos fuzzy usados para criar as regras
evoluídas pelo EA será discutida na seção 4.2 a seguir.
Cada uma das regras que compõem uma rede de regulação consiste em uma
expressão composta de um ou mais conjuntos fuzzy aplicados às variáveis do conjunto
unidos por conectivos lógicos, de forma a gerar expressões de qualquer grau de
complexidade, conforme se discutirá na seção 4.2 deste mesmo capítulo.
Cada indivíduo, que consiste em uma rede (ou base de regras) completa, será
avaliado de acordo com uma função de avaliação discutida em detalhes na seção 4.3 deste
capítulo. Esta função mede a qualidade desta rede como solução do problema, podendo ser
definida de diversas maneiras de acordo com a aplicação que se tem em mente. No caso de
uma aplicação de análise de microarrays a função de avaliação calcula quão bem a
trajetória real do gene de interesse foi modelada.
Figura 4-1 → Esquema do EA desenvolvido nesta tese.
71
Esta função de avaliação será usada como base para a seleção dos indivíduos para
aplicação dos operadores genéticos. Estes operadores determinam como um EA combina e
altera soluções de forma a evoluí-las, gerando outras redes, denominadas descendentes. Os
operadores usados neste algoritmo são descritos na seção 4.4 deste capítulo.
Finalmente, os descendentes e os indivíduos que os geraram (população no instante
t) são submetidos a um módulo de população, que determina todos aqueles que devem
sobreviver, isto é, que devem compor a população no instante t+1.
Este algoritmo é baseado no esquema geral de algoritmos evolucionários discutido
no capítulo 2 desta tese, esquema este que foi concebido conforme diagrama mostrado na
figura 4-1. Como é possível ver na figura, é necessário definir como são selecionados os
indivíduos a participar da população, os operadores genéticos, o módulo de população
usado e o critério de parada.
Pode-se ver no diagrama que também é necessário que se defina uma função de
avaliação. Esta função é específica a cada problema para o qual se aplicará este EA e para
determiná-la é necessário conhecimento específico da área na qual se aplica o algoritmo
evolucionário.
No caso da aplicação descrita neste capítulo descreve-se a função de avaliação
usada para estudos de previsão e engenharia reversa de redes de regulação gênicas. Outra
aplicação possível (classificação) é descrita no apêndice A desta tese e as mudanças
necessárias na função de avaliação são descritas de forma detalhada naquele capítulo.
Para acelerar a obtenção de resultados foi aplicada uma técnica de paralelização de
algoritmos evolucionários denominada island. Esta técnica permite que se executem
múltiplas instâncias de um EA de forma assíncrona, com uma comunicação entre elas. Isto
permite que se desenvolva uma população maior e ao mesmo tempo mais diversificada, o
que acarreta na obtenção de resultados melhores mais rapidamente, diminuindo o número
de rodadas do algoritmo necessárias. Esta técnica de paralelização é descrita de forma
detalhada na seção 4.5 deste capítulo.
As próximas seções discutirão de forma detalhada cada um dos elementos básicos
mencionados acima, de forma que o funcionamento do algoritmo evolucionário desta tese
fique claro.
72
4.2 Estrutura do cromossomo
4.2.1 Conceitos
Conforme discutido na introdução, cada cromossomo (ou indivíduo) da população
mantida pelo algoritmo proposto nesta tese representa uma base de regras fuzzy. Estas
regras podem ser aplicadas ao problema sendo estudado de forma a verificar se foi obtido o
resultado desejado. Esta aplicação é feita pela função de avaliação, descrita detalhadamente
mais à frente, na seção e) deste capítulo. Nesta seção será descrita a representação das
regras pertencentes à base fuzzy representada pelo cromossomo.
Uma base de regras consiste em um conjunto de regras no seguinte formato:
SE <antecedente> ENTÃO <conseqüente>
O <conseqüente> de cada uma destas regras consiste em um conjunto fuzzy,
enquanto que os antecedentes de cada regra podem ser descritos como uma expressão em
notação polonesa reversa (RPN).
Nesta notação, todos os operadores antecedem seus operandos, que por sua vez
podem ser uma expressão que possui seu próprio operador. A definição sintática de uma
expressão em RPN é dada pelas seguintes regras, descritas usando-se notação BNF:
<expressão> ::= AND <expressão> <expressão>| OR <expressão> <expressão>|NOT
<expressão> | <operando>
onde <operando> é o elemento fundamental da expressão. No caso do algoritmo
desta tese, este elemento fundamental é um conjunto fuzzy, como se verá mais adiante
nesta seção.
73
Como pode ser visto ver nesta definição, são usados apenas três operadores: NOT,
OR, AND. Apesar de ser possível representar toda e qualquer operação lógica usando
apenas dois deles (NOT e AND ou NOT e OR), o uso de três operadores simplifica as
expressões presentes no antecedente de cada regra permitindo que as regras sejam mais
curtas.
O fato de serem usados apenas três operadores não gera nenhum tipo de limitação
do poder de representação de regras dos cromossomos utilizados. A combinação de
operações geradas com os operadores usados aqui permite a representação de qualquer
expressão lógica desejada.
A RPN é adequada para uma representação em formato de árvore em que os
descendentes são as sub-expressões que formam uma árvore enraizada no operador. Cada
operador tem dois descendentes, com exceção do operador NOT, que possui apenas um (o
que deriva do fato deste ser o único operador unário dentre aqueles usados). Esta
representação em árvore é adequada para uma apresentação gráfica, como pode ser visto na
figura 4-2.
YANG et al. (2003) e DASGUPTA et al. (2002) já usaram a notação polonesa,
porém com diferenças significativas em relação à utilização neste trabalho. As devidas
comparações são feitas na seção 4.7 desta tese.
AND A OR B AND NOT C D
AND
A
OR
B
AND
NOT
D
C
Figura 4-2 → Representação em formato de árvore de um conseqüente de uma regra em formato de RPN
74
A compreensibilidade das regras para um usuário humano é uma característica
desejável do conhecimento descoberto pelo algoritmo aqui descrito. Isto é necessário
sempre que se utiliza o conhecimento obtido para apoiar uma decisão tomada por um ser
humano (FREITAS, 2000).
Dado que o propósito principal das aplicações descritas nesta tese consiste em criar
hipóteses que serão fornecidas para investigadores checarem em bancada (capítulo 5) ou
para utilização em aplicações de classificação (capítulo 6), a simplicidade das regras é um
dos objetivos que o algoritmo procura maximizar, o que implicou em mudanças tanto no
algoritmo de inicialização de regras quanto na função de avaliação (que será descrita na
seção 4.3 neste mesmo capítulo).
A questão da simplicidade é relativa, dependendo da capacidade e do ponto de vista
do usuário da regra, o que faz com que seja especialmente difícil classificar uma regra
quanto a sua simplicidade. Assim, é necessário adotar um critério objetivo que seja
fortemente ligado a este conceito abstrato. Decidiu-se nesta tese por buscar uma menor
altura das árvores de expressão, isto é, por regras mais curtas.
No caso do gerador de funções, isto foi atingido através da criação de um parâmetro
no mecanismo de inicialização das regras denominado coeficiente de altura de expressão,
cujo objetivo é fazer com que se gerem árvores mais baixas. A idéia é que este coeficiente
seja inversamente proporcional à altura média das árvores criadas, de modo que regras mais
complexas, que por conseguinte têm representação em formato de árvore mais altas, sejam
punidas, dando-se preferência a árvores de altura menor. Este coeficiente de altura será
explicado com mais detalhes na seção sobre implementação (4.2.2) deste mesmo capítulo.
Quanto se usam regras para modelagem computacional, é importante entender que
não necessariamente uma única regra será suficiente para descrever o comportamento do
sistema como um todo. Isto é especialmente verdadeiro quando são descritas situações
complexas, tais como eventos biológicos (desenvolvimento celular, redes de regulação
genética), previsão de séries e outros.
THOMAS (1998) relata um experimento que descreve uma instância deste
problema. Neste experimento foram usadas duas culturas não ativadas de E. coli e é
adicionada uma grande quantidade de ativador. Imediatamente divide-se a cultura em duas
partes (A e B) e dilui-se cada uma das partes de forma que o ativador fica somente em
75
estado de manutenção (sem ativar nem deixar inibir). A única diferença entre as duas
culturas é que na primeira (A) a diluição se deu imediatamente enquanto que na cultura B
esperou-se dez minutos antes de se realizar a diluição.
Desta forma, a cultura A que não teve o ativador por tempo suficiente em altas
concentrações permanece não induzida enquanto que a subcultura B permanece induzida
após ter ficado dez minutos sob atuação do ativador (tempo suficiente para que este
realizasse sua “tarefa” de ativação). Logo, a concentração de manutenção do elemento
ativador mantém este estado de indução permanentemente.
Algo que é ainda mais interessante é que pode-se misturar as células ativadas e não
ativadas no meio com concentração de manutenção de ativador e as células descendentes
(as “filhas”) estarão no mesmo estado da célula que as geraram (suas células “mães”), não
importando o estado original destas. Isto claramente implica que é necessário mais de uma
regra para descrever este sistema. A grosso modo, pode-se usar as seguintes:
(a) Se Concentração_Manutenção(Ativador) ^Ativada(Célula)
(b) Se Concentração_Manutenção(Ativador) ^ ~Ativada(Célula)
Ativada(Célula)
~Ativada(Célula)
Este tipo de regras que aparentemente competem entre si podem ser parte do
modelo proposto nesta tese. Se fosse usado um modelo Booleano, o resultado seria que
apenas uma das afirmações seria verdadeira, posto que neste modelo, se algo é verdadeiro,
sua negação é necessariamente falsa.
Se for utilizado um modelo fuzzy, pode-se ter diferentes graus de pertinência em
conjuntos que representam conceitos opostos e, por conseguinte, obter diferentes graus de
ativação para cada antecedente, resultando em um modelo relativamente próximo do
conceito sendo modelado.
No caso de uma expressão ter pertinência 100% (equivalente ao caso verdadeiro na
lógica Booleana) em um conjunto fuzzy, sua negação terá pertinência zero (equivalente ao
caso falso). Isto quer dizer que nos extremos a lógica fuzzy se reduz à lógica Booleana
tradicional e, por conseguinte, pode-se concluir que a lógica fuzzy não a contradiz, mas
sim a complementa, incluindo valores de pertinência intermediários.
Por exemplo, na cultura A, não induzida, a pertinência no conjunto ativada de cada
célula será 0 e a sua negação, será 1 (usando-se o operador fuzzy tradicional de negação
que consiste na aplicação da fórmula 1 - µ(x) ). Por conseguinte, se as células forem
76
colocadas em um meio com uma concentração de manutenção, a pertinência do outro
antecedente nas duas regras será um, resultando em uma ativação de zero para a regra (a) e
uma ativação de 1 para a regra (b), gerando um próximo estado igual a não ativada para a
célula em questão. O mesmo tipo de raciocínio é válido também para a cultura B,
invertendo as pertinências para ativada e não ativada.
É importante entender que, posto que é usada a lógica fuzzy, a pertinência em cada
um dos conjuntos pode ser diferente de 0 e 1 em qualquer um dos conjuntos em qualquer
instante. As regras usadas para modelar o exemplo anterior são essencialmente Booleanas
(ou as células estão ativadas ou não o estão), mas, como discutido no capítulo 2 desta tese,
a lógica fuzzy permite que se lide com pertinências em vários conjuntos que representam
conceitos lingüísticos opostos.
Número de Conjuntos Fuzzy
1
2
3
5
Expresso
Expresso
Pouco Expresso Muito
Pouco
Expresso
Nomes
Não
Medianamente
dos
Expresso
Expresso
Conjuntos
Pouco Expresso
Muito Expresso Medianamente
Fuzzy
Expresso
Muito Expresso
Extremamente
Expresso
Tabela 4-1 : Interpretação dos conjuntos fuzzy associados ao conceito de expressão gênica
Assim, além de se usar várias regras diferentes, pode-se assumir que cada elemento
sob avaliação está associado com vários conjuntos fuzzy, cuja interpretação é dada na
tabela 1 a seguir. Isto difere do modelo discreto (Booleano) no qual cada elemento está
ativado (valor 1) ou não ativado (valor 0). Uma interpretação possível para os nomes dos
conjuntos fuzzy utilizados, baseando-se no problema de determinação de redes de
regulação descrito no capítulo 5 a seguir, é dada na tabela 4-1.
77
Esta interpretação é baseada no problema – mudando-se o contexto em que se está
aplicando o algoritmo, mudam-se os nomes dos conjuntos fuzzy criados. Por exemplo, no
caso do problema de classificação para o qual se aplica o algoritmo, conforme descrito no
capítulo 6, pode-se interpretar os nomes no caso de dois conjuntos por elemento como
representando os conceitos pertence e não pertence.
A opção de se usar um único conjunto foi feita nas aplicações de classificação
descritas no capítulo 6 desta tese. Neste caso, precisamos definir se uma tupla pertence ou
não a uma determinada categoria, e a interpretação deste conjunto passa a ser “Pertence”,
cuja pertinência varia de 0 (não pertence) a 1 (pertence).
Os conjuntos fuzzy são criados dividindo-se uniformemente o espaço de expressão
do elemento em consideração. O universo de discurso das variáveis fuzzy é delimitado
pelos valores mínimo e máximo encontrados nos dados. Por exemplo, sejam os dados
exemplo dados pela tabela 4-2.
Variáveis
Tupla A
B
C
1
1,2
2,5
3,4
2
1,4
2,6
3,6
3
1,8
2,1
3,2
4
0,5
3,0
2,9
Tabela 4-2: Dados de um exemplo numérico
Neste caso o valor máximo de cada variável encontra-se sublinhado e o valor
mínimo, em itálico. No exemplo, os valores que a variável A pode assumir estão no
intervalo [0,5 ; 1,8], que é considerado então o universo de discurso (valores que podem
ser assumidos) desta variável. Usando-se a mesma técnica, pode-se concluir que o universo
de discurso da variável B é [2,1 ; 2,6] e de C, [2,9 ; 3,6].
78
Em vários casos pode ser necessário prever valores que estejam fora deste universo
de discurso restrito. Isto é especialmente comum em aplicações de previsão nas quais a
variável de interesse é uma série que possui uma tendência, seja de crescimento ou de
queda. Os valores a serem previstos na hora de aplicação das regra podem então estar fora
das faixas de valores encontradas no conjunto de treinamento.
Assim, relaxa-se o universo de discurso, introduzindo-se duas constantes, γmin ≤ 1 e
γmax ≥ 1 que multiplicam respectivamente os limites mínimo (lmin) e máximo (lmax)
encontrados nos dados. O universo de discurso considerado então passa a ser então [γmin *
lmin ; γmax * lmax]. Uma divisão prototípica do universo de discurso definido através da
aplicação das constantes de relaxamento pode ser vista na figura 4-3.
Uma vez definidos o universo de discurso de uma variável e os conjuntos fuzzy que
lhe são associados, resta definir o formato das regras fuzzy utilizadas. Este é similar ao
formato normal de regras em RPN descrito anteriormente, de modo que a seguinte
gramática descreve uma regra sintaticamente:
<regra> ::= SE <antecedente> ENTÃO <conseqüente>
<conseqüente> ::= <Conjunto_Fuzzy> ( <elemento> )
<antecedente> ::= <Conjunto_Fuzzy> ( <elemento> ) | NOT <antecedente> | AND
<antecedente> <antecedente> | OR <antecedente> <antecedente>
Os conjuntos fuzzy têm os nomes descritos na tabela 4-1, notando apenas que foi
utilizada uma representação computacional mais eficiente (contendo um número que
substitui o nome do conjunto).
Esta descrição é similar à definição BNF descrita anteriormente. Usou-se a mesma
estrutura recursiva para o antecedente, que antes se chamava <expressão> e substituiu-se
<operandos> por conjuntos fuzzy, que são a base das regras usadas no algoritmo proposto.
79
Fuzzy Membership Minimum found in data: 1; γmin = 0.8
Maximum found in data: 4; γmax = 1.2
1
4.8
0.8
Figura 4-3 → Exemplo genérico de divisão do espaço de expressão em 5 conjuntos fuzzy. Multiplica-se os
valores máximos e mínimos pelas constantes pré-definidas resultando em um universo de discurso que é
dividido em 4 partes iguais. A metade da primeira parte é atribuída para a primeira função descendente
enquanto que a metade da última parte é atribuída para a última função ascendente. As 3 partes restantes
são atribuídas para as três funções triangulares restantes. Neste caso imaginário, o mínimo encontrado nos
dados foi igual a 1 e a constante γmin é igual a 0,8, o que faz com que o limite inferior do universo de discurso
seja igual a vmin*γmin= 0,8. O mesmo raciocínio se aplica para o limite superior do universo de discurso, que
é dado por vmax*γmax=4,8.
Como se pode ver pela descrição gramatical acima, foi criada uma expressão usando
operadores e os nomes dos conjuntos na representação das regras. Logo, o tamanho da
regra não cresce exponencialmente com o número de elementos nela envolvidos, como era
o caso da representação binária descrita no capítulo 3. Isto implica em que os cromossomos
resultantes não são grandes, sendo computacionalmente para os efeitos de um algoritmo
evolucionário.
Cada antecedente de cada regra é uma árvore parecida com aquela vista na figura 43. A principal diferença entre a figura e os elementos que formam a regra discutidos agora é
que os elementos formadores de uma regra são conjuntos fuzzy ao invés de variáveis, como
usado anteriormente. O conseqüente de cada regra é um dos conjuntos fuzzy do elemento
em consideração.
Como mencionado anteriormente, é possível haver mais de uma regra por conjunto
fuzzy, o que implica em que elas estarão ligadas por um operador OR. Esta possibilidade
faz parte do algoritmo evolucionário proposto nesta tese, o que implica em algumas
mudanças nos operadores genéticos adotados aqui, como será vista na seção 4.3 deste
mesmo capítulo.
O número médio de regras por conjunto fuzzy é um parâmetro do algoritmo. É
importante entender que o número de regras para cada um dos conjuntos não
necessariamente será igual a este número médio, tendo em vista que a mutação pode
80
aleatoriamente inserir ou remover regras, alterando o número de regras para cada conjunto.
A definição deste operador de mutação é dada detalhadamente na seção c deste mesmo
capítulo, mas é importante entender que, graças à sua atuação, os cromossomos têm
tamanhos (em número de regras) variados.
Um exemplo da situação descrita no parágrafo anterior pode ser visto na seção 6 do
capítulo 5 desta mesma tese, quando é descrito o estudo feito do sistema nervosos central
de ratos. Neste exemplo, são definidos 3 conjuntos fuzzy com uma média declarada de 3
regras por conjunto, o que levaria a se esperar que o conjunto de regras obtido tivesse 9
regras no total. Entretanto, o melhor resultado obtido pelo algoritmo proposto possui
apenas 7 regras, o que leva a uma média de 2,3 regras por elemento.
Este tipo de variação é esperada em qualquer aplicação prática do algoritmo aqui
proposto. Entretanto, para assegurar-se que cada conjunto fuzzy tenha uma participação na
obtenção de resultados, qualquer implementação deste algoritmo deve garantir que há pelo
menos uma regra associada a cada conjunto fuzzy. Isto permite a obteção de resultados não
triviais, pois permite a modelagem de todos os subconjuntos do universo de discurso.
Caso algum conjunto fuzzy não esteja associada a uma regra, ocorrerá uma situação
de conjuntos fuzzy sem interseção. Se houver apenas três conjuntos dividindo o universo de
discurso e não houver nenhuma regra associada ao conjunto do meio, os dois conjuntos
fuzzy vizinhos a este conjunto, que não têm interseção mútua, serão os únicos a afetar o
resultado da defuzzyficação. Por conseguinte a única modelagem feita do intervalo
representado pelo conjunto sem regras será dada por estes dois conjuntos, isoladamente
(cada qual para metade do intervalo).
Esta ausência de interseção faz com que as soluções para este intervalo sejam
triviais – dado que o formato da função de pertinência dos conjuntos é triangular, o valor da
pertinência obtida multiplicará apenas o máximo do conjunto em que a pertinência não seja
zero, gerando uma modelagem equivocada.
Em termos do tamanho do cromossomo, pode-se calcular que se um elemento está
asssociado com k conjuntos fuzzy, e o número médio de regras por conjunto fuzzy é m,
então haverá um número médio de k*m regras associada a este cromossomo.
Tendo em vista que os operadores de mutação podem alterar este tamanho,
eliminando ou acrescentando regras, pode-se chegar a um valor de k regras por
81
cromossomo, desde que cada conjunto fique associado a apenas uma regra (número mínimo
permitido) ou a um valor máximo qualquer, não limitado neste algoritmo. A operação deste
operador de mutação quanto à inserção e exclusão de regras é descrita detalhadamente na
seção 4.3 deste mesmo capítulo
Qualquer implementação do algoritmo de inicialização da população deve criar
aleatoriamente regras respeitando a gramática acima. Entretanto, este tipo de inicialização
não é suficiente, pois implicaria em uma busca aleatória, desconsiderando completamente o
conhecimento prévio existente. Assim, este algoritmo trabalha com a possibilidade de que o
usuário inclua regras que ele considera que devem ser pesquisadas ou obrigatoriamente
incluídas/excluídas pelo algoritmo.
Este tipo de conhecimento prévio é muito importante, especialmente na biologia,
onde já existem vários relacionamentos previamente comprovados por experimentos e
universalmente reconhecidos. Desprezar este conhecimento prévio seria uma estratégia
pouco inteligente, a não ser que seja desejado testar o programa para que ele descubra estes
relacionamentos bem conhecidos.
O esquema final de definição de um cromossomo é submetido a alguns fatores de
influência, dentre os quais podemos ressaltar os seguintes:
Conjuntos fuzzy, definidos em cima de um universo de discurso que é criado a
partir dos valores presentes nos conjuntos dados e de dois parâmetros de
relaxamento (γmin e γmax).
Definição gramatical de uma regra, conforme gramática dada acima.
Número médio de regras por cromossomo.
Informação parcial exógena, isto é, informações fornecidas pelo usuário quanto a
conhecimento pré-existente na área.
Atuação de operadores de mutação, que podem alterar o tamanho de um
cromossomo, aumentando-o ou diminuindo-o.
A seguir são discutidas certas questões relevantes relacionadas a detalhes práticos
da implementação feita no decorrer da elaboração desta tese dos conceitos descritos nesta
seção.
82
4.2.2 Implementação
4.2.2.1 Formato das regras
Na implementação do formato de regras definidas nesta seção buscou-se uma
representação
que
não
impingisse
nenhum
tipo
de
constrangimento/limitação
computacional inapropriado.
Usou-se uma representação interna de árvore, de forma que as estruturas de dados
representassem a compreensão mais direta das regras utilizadas.
Ademais, não houve qualquer tipo de restrição aplicável ao gerador de expressões
usado para inicializar a população de cromossomos. Este gerador consiste em uma
implementação direta da descrição gramatical recursiva citada anteriormente, o que permite
que o programa analise toda e qualquer regra que seja gramaticalmente compatível com a
descrição em BNF dada acima.
O gerador de funções utiliza um parâmetro denominado coeficiente de altura,
determinado pelo usuário. Este coeficiente é usado para determinar se a expressão em
questão retornará um operando (conjunto fuzzy) ou uma expressão, continuando a geração
de forma recursiva. A decisão é feita através do sorteio de um número no intervalo [0,1] e
conseqüente verificação se o número sorteado é menor do que o valor dado por
1
.
2 * (coeficiente − 1)
Caso o valor seja menor, escolher-se-á através de outro sorteio qual operador será
utilizado. Se for escolhido o operador NOT, é necessário gerar mais uma expressão,
enquanto que os operadores OR e AND pedem por duas expressões.
A geração destas novas expressões é feita chamando-se a função de inicialização de
forma recursiva passando-se como parâmetro o coeficiente de altura usado no sorteio
somado de um. Esta soma de uma unidade faz com que seja mais provável a escolha de um
83
operando na geração da próxima sub-árvore. Isto faz com que seja cada vez mais provável
que se gere uma folha conforme a altura da árvore cresce, limitando o tamanho da mesma.
Neste trabalho foram experimentados com vários valores distintos para este
coeficiente e descobriu-se que os melhores resultados são obtidos quando o seu valor inicial
é definido como 3.
Neste caso, inicialmente haverá 1
4
de chance de se gerar um operador, e 3
4
de
seleção de um operando, o que faria que a árvore tivesse altura 1. Ao se selecionar um
operador, uma nova chamada é feita com o coeficiente com valor igual a 4, o que aufere
uma probabilidade de seleção igual a 1 para os operadores de cada sub-árvore necessária,
6
gerando árvores de altura maior ou igual a 3.
O número de árvores que terá altura maior que 3 é menor do que
1 * 1 * 1 ≈ 0,5% , que é a probabilidade de seleção de um operador em cada um dos
4 6 8
três níveis mais altos da árvore. Como esta probabilidade é baixa, serão geradas então, em
média, árvores baixas que representam regras compreensíveis para o usuário.
Esta restrição quanto à altura média não limita o poder de descoberta do algoritmo,
pois este permite que se utilize mais de uma regra para cada conjunto fuzzy conseqüente. O
uso de múltiplas regras implica em que as regras para o mesmo conseqüente estarão ligadas
por um OR, o que eqüivale a uma árvore de maior altura por conjunto.
4.2.2.2 Embutindo conhecimento prévio
Conforme discutido na seção anterior, o algoritmo aqui proposto utiliza o
conhecimento pré-existente para guiar a busca do algoritmo evolucionário, o que permite
que sejam buscadas soluções dentro de um espaço restrito, aproveitando-se conhecimento
pré-existente.
84
Criou-se então um mecanismo para permitir que o usuário forneça regras para o
programa. As regras entradas são associadas aos conjuntos fuzzy do elemento de interesse
e podem ser de três tipos distintos:
•
Obrigatórias: o algoritmo garante que elas aparecerão ao menos uma vez nas regras
associadas àquele conjunto fuzzy.
•
Desejáveis: as regras deste tipo devem preferencialmente aparecer, mas diferentemente
das obrigatórias, elas podem ser eliminadas se prejudicarem a avaliação da base de
regras. Para que elas apareçam, uma alta percentagem de cromossomos da população
inicial (20%) é inicializada com estas regras e depois, quando da aplicação do operador
de mutação, é dada a estas regras uma chance de 10% de serem escolhidas. Com estas
escolhas, as regras desejáveis têm uma grande chance de serem escolhidas.
•
Proibidas: São regras que, como o próprio nome diz, não devem aparecer de nenhuma
maneira na base de regras final. Esta flexibilidade é interessante para banir elementos
que seriam bons candidatos apenas por uma questão espúria de coincidência dos dados,
mas os quais não estão envolvidos no processo regulatório, de acordo com
conhecimento obtido a priori.
4.3 Função de avaliação
4.3.1 Função utilizada
Para avaliar o desempenho de um cromossomo, são armazenadas t trajetórias com
nst passos cada. Cada trajetória representa o comportamento real da rede de regulação que
se deseja modelar, isto é, os valores que cada uma das variáveis do conjuntos de dados
assume em cada instante t. A partir deste ponto em diante será usado o adjetivo “real” para
descrever cada trajetória da rede sendo modelada.
85
O objetivo da função de avaliação é determinar quão bem o cromossomo modela o
comportamento real dos dados. Isto é feito determinando se as regras codificadas em um
cromossomo fazem com que a trajetória real seja replicada de forma precisa. A trajetória
real consiste, no caso da aplicação de microarrays, das medidas consecutivas feitas sobre o
mesmo conjunto de genes.
Para tanto, é necessário determinar o valor de cada uma das variáveis em cada
instante de tempo, valores estes que são calculados aplicando-se as regras fuzzy codificadas
no cromossomo.
Assim, para verificar quão bem cada cromossomo modela uma trajetória, é
necessário verificar se cada um dos estados (instantes t=1,..,k) da trajetória é corretamente
previsto, tendo como base somente o seu estado anterior (instante t-1).
Assim, para avaliar cada cromossomo usa-se o primeiro estado de cada trajetória
(valor de todas as variáveis no instante t=0) para calcular o valor destas variáveis no
instante t=1. Este cálculo é realizado usando-se a base de regras fuzzy para iterar os
valores.
Este processo é repetido para os instantes t=2,...,k, até chegar no instante final da
trajetória. Para cada um destes instantes calcula-se o seu estado usando-se o passo do
instante t-1 como base para calcular o valor de todas as variáveis. Estes valores calculados
através da aplicação das regras fuzzy serão denominados doravante de trajetória calculada.
No capítulo anterior, ao lidar com dados Booleanos, determinou-se a função de
avaliação somando-se o número de bits da trajetória calculada que diferem dos bits da
trajetória real e dividindo-se o valor obtido por uma média pelo número de passos. Isto
pode ser feito pois no caso de redes Booleanas não há outro tipo de erro que não o de valor
absoluto, pois ou o ponto previsto está correto (possui valor igual ao desejado, que é aquele
originalmente na trajetória) ou não está (possui valor diferente do desejado), logo uma
contagem simples dos valores errados basta para aferir a qualidade da previsão (LINDEN et
al. 2002a, LINDEN et al., 2002b).
No caso contínuo é diferente, pois os erros não são absolutos. Para cada um dos
valores calculados existe uma diferença finita entre os valores previsto e o real, valor este
que tem um significado diferente de elemento para elemento.
86
Esta diferença de significado depende do valor absoluto do elemento, o que implica
no fato de uma diferença percentual ser mais significativa que a diferença absoluta. Por
exemplo, se o valor absoluto é 0,1, uma diferença entre o valor previsto e o real de 0,02 é
bastante significativa (20% de erro), enquanto que se o valor original da variável é 25, o
mesmo erro absoluto corresponde a um erro percentual de aproximadamente 0,1%, sendo
praticamente desprezível na maioria das aplicações
Assim, ao invés de usar uma diferença absoluta, é usado o erro percentual médio
absoluto (mean absolute percentage error ou MAPE) como medida de qualidade de
previsões. Este erro é dado pela seguinte fórmula:
MAPE =
1
N
N
t =1
yt − yt
yt
(1)
Este valor é então dividido pelo número de passos por trajetória para minimizar o
efeito das diferenças de tamanho entre trajetórias, como descrito no caso Booleano. É
importante compreender que se todas as trajetórias tiverem o mesmo tamanho ou se houver
apenas uma única trajetória, esta divisão não afeta o resultado final. Uma vez calculado o
valor do erro médio por trajetória, somam-se os erros de todas as trajetórias, obtendo uma
métrica que é dada pela seguinte fórmula:
(
#Traj
t =1
# genes
g =1
MAPE g )
# Stepst
# Traj
(2)
Este valor é então invertido e resulta em um número adimensional que não tem
nenhum relacionamento óbvio com qualquer medida de erro. Para que o significado deste
número seja melhor compreendido, é calculado um valor denominado de “infinito”, que
corresponde ao valor ideal previsto pelo algoritmo.
Tendo em vista que o erro médio é invertido na fórmula (2), não se pode usar este
valor como nível de perfeição. Ademais, na maioria das aplicações práticas o erro zero é
87
um valor inatingível, podendo-se estabelecer um patamar de erro máximo aceitável, para o
qual se considera que o algoritmo foi bem sucedido em sua previsão.
Assim, calcula-se o valor do “infinito” através da aplicação na fórmula (2) de um
percentual de erro determinado pelo usuário em cada elemento em cada passo da trajetória.
Por exemplo, um nível de erro de 0,5% em uma única trajetória gera uma medida de
qualidade de valor 200. Usando este nível como padrão-ouro, podemos avaliar a qualidade
das soluções obtidas de forma utilizável em uma estratégia de roleta viciada em um
algoritmo evolucionário.
Dado que não é usado um cromossomo representado por uma string de bits, é
necessário criar uma nova maneira de se recompensar minimalidade. Isto decorre do fato
anteriormente mencionado de que se dois cromossomos mapeam uma trajetória com a
mesma qualidade, o menor e mais simples deve ser preferido.
Esta preferência pela minimalidade é conseqüência natural do fato de que os
resultados deste programa serão interpretados por pesquisadores e soluções mais simples e
elegantes tendem a ser mais apreciadas. Ademais, quando se discute aplicações biológicas
da natureza, é interessante modelar o fato de que esta costuma recompensar minimalidade,
já que redes com menos caminhos regulatórios tendem a ser mais dificilmente rompidas por
eventos aleatórios tais como mutações, isto é, são mais robustas.
No caso da modelagem contínua, foi criado então um coeficiente de penalização de
soluções longas. Este coeficiente c ≤ 1 é multiplicado pela função de avaliação do
cromossomo e é dependente da altura média de todas as árvore de regras no cromossomo
em avaliação (h) e do número médio de regras por variável naquele cromossomo (n), sendo
dado então pela seguinte fórmula:
1
,h ≤ 2
n
1
c=
,h ≥ 2
(h − 1) * n
c=
(3)
Quanto maior a altura da árvore ou o número médio de regras por elemento, maior a
penalização aplicada sobre o cromossomo quando do cálculo da função de avaliação. Esta
penalização faz com que um cromossomo mais curto e mais simples passe a ser preferido
88
sobre outro maior que comete o mesmo erro no cálculo das trajetórias, pois a avaliação do
cromossomo mais curto passa a ser mais alta do que a do mais longo. O cromossomo mais
curto de avaliação inferior pode passar a ser preferido em detrimento do cromossomo maior
de melhor avaliação, desde que a diferença entre os coeficientes de preenchimento seja
maior do que a diferença entre as avaliações.
É importante entender que quando usamos o coeficiente de preenchimento, em
muitos casos o valor calculado de “infinito” nunca será atingido pelos cromossomos da
população sendo evoluída, mesmo que o nível de erro usado para calcular o valor do
infinito tenha sido atingido por um cromossomo candidato. Por exemplo, se um
cromossomo com um número médio de regras igual a 2 e árvores de altura média igual a 2
atingir o nível de erro desejável, a sua função de avaliação será igual, pela aplicação da
fórmula (3),
a infinito/2. Isto não é problemático, sendo apenas uma questão de
interpretação dos resultados dados. Ao avaliar os resultados dados pelo programa, é
importante que se entenda que o valor de “infinito” só será atingido se uma rede obtiver o
erro desejado com uma regra por elemento sendo que cada regra possui altura igual a 2 ou
menos.
O uso deste coeficiente é algo interessante até quando se pensa na qualidade dos
resultados obtidos. VAN SOMEREN et al. (2000) provam que o número de pontos no
tempo necessários para identificar corretamente os pesos de uma rede esparsamente
conectada, como aquelas geradas por este algoritmo, é da ordem da conectividade máxima
da rede.
Logo, cromossomos que possuem regras mais curtas e que representam redes de
regulação menos conectadas fornecem resultados mais significativos com a mesma
quantidade de dados.
4.3.2 Avaliações separadas
SUER et al. (2002), introduzem a idéia de que quando forem buscadas a regulação
de múltiplos elementos simultaneamente, pode-se avaliar cada parte do cromossomo
89
separadamente (isto é, realizar todo o processo do algoritmo evolucionário por nó, ao invés
de por cromossomo completo). Isto pode ser interessante posto que um cromossomo pode
ser bom para regular um nó enquanto que ele é ruim para regular outros, como pode ser
visto no exemplo sintético mostrado na tabela 4-3.
Trajetória Real
Trajetória Calculada
Gen1
Gen2
Gen3
Gen1
Gen2
Gen3
1,5
2,5
4,2
1,5
2,5
4,2
2,3
3,7
3,4
2,4
3,9
3,4
3,2
2,4
2,9
3,15
4,2
1,5
4,3
1,2
2,1
4,39
4,3
1,2
Erro por elemento:
0,026
1,129
0,303
Erro Total:
0,486
Tabela 4-3: Exemplo de uma regulação adequada para um único elemento, mas que não consegue capturar
todas as regulações possíveis. No caso do Gen1, o erro calculado é baixo, indicando boa adequação do
cromossomo. No caso dos outros dois genes, o erro é muito alto, levando o cromossomo a ter uma avaliação
total ruim, posto que esta é baseada na média dos erros.
Como pode-se ver na tabela 4.3, o erro cometido para o nó Gen1 (em negrito) é
baixo. Ademais, as tendências para este nó são captadas de forma precisa pela sua
estratégia de controle. Entretanto, a avaliação para os outros dois nós (Gen2 e Gen3) é tão
ruim que faz com que o cromossomo com um todo tenha uma péssima avaliação geral,
dando a ele uma baixa chance de ser escolhido.
Considerou-se então modificar o algoritmo evolucionário proposto aqui de forma a
selecionar diferentes pais para cada um dos nós, de forma que o operador de crossover
pudesse envolver múltiplos cromossomos (dois para cada nó), ao invés da abordagem
clássica de escolher apenas um par de cromossomos que intercambiam todo o seu material
genético.
O uso desta estratégia teoricamente permite que sejam usados cromossomos que são
eficientes em cada um dos nós gerando soluções com qualidade ainda melhor do que as
atualmente geradas.
90
Entretanto, esta estratégia é similar a se realizar múltiplas execuções do algoritmo,
pelos seguintes motivos:
•
É necessário manter-se populações independentes para cada um dos nós cuja
regulação está sendo buscada.
•
As avaliações para cada nó são feitas de forma independente
•
O número de aplicações dos operadores genéticos é equivalente ao número que
seria feito em execuções independentes. Como cada nó é avaliado de forma
independente, cada um deles precisa ter uma roleta separada com a conseqüente
seleção de pais distintos e aplicação dos operadores também de forma separada.
Todos estes fatores levam à conclusão de que não há ganhos reais quanto a esta
estratégia, tendo em vista que na definição de (SUER et al., 2002) não existe uma
interdependência entre as regulações de forma que haja vantagens definitivas em realizar
uma única execução ao invés de múltiplas.
Cabe ressaltar que quando um elemento não está sendo avaliado durante a execução
do algoritmo proposto nesta tese, ele tem os seus valores reais usados em cada um dos
instantes de tempo. Assim, pode-se realizar múltiplas execuções para buscar estas
regulações, sem necessidade de aplicar o conceito de avaliações em separado que não
proporcionaria ganhos reais para os resultados obtidos.
Com isto, esta estratégia foi abandonada, não tendo sido incluída na versão final da
ferramenta desenvolvida para esta tese.
4.4 Operadores Genéticos
Para completar a definição de algoritmo evolucionário (EA) proposto, é necessário
definir os operadores de mutação e de recombinação (crossover) usados. Como de praxe
em grande parte da literatura, usam-se dois operadores que competem entre si.
91
O EA definido nesta tese alterna entre os operadores de mutação e crossover usando
uma roleta viciada baseada em probabilidades fixas ou que variam com o tempo, conforme
o valor de um parâmetro do algoritmo.
Como será visto nos experimentos relatados nos capítulos 5 e 6, a variação linear
da fitness dos operadores foi a forma usada. Isto decorre do fato de que no começo é
desejável recombinar as soluções de forma a utilizar o máximo possível de material
genético (esquemas). Entretanto, quando a execução se aproxima do fim ocorre o efeito da
convergência genética que faz com que a população seja muito similar e o uso mais
freqüente da mutação faz mais sentido. Uma aplicação desta variação das probabilidades
associadas aos operadores se encontra na seção 6 do capítulo 5 desta mesma tese.
4.4.1 Operador de crossover
O operador de crossover tem como objetivo realizar uma troca de informação entre
dois indivíduos da população de uma maneira análoga à reprodução sexuada. Seu uso
implica no intercâmbio entre dois indivíduos de pedaços de antecedentes de regras
(“material genético”), gerando dois “filhos” que possuem fragmentos de regras de cada um
dos pais, compartilhando suas qualidades na modelagem dos dados.
Este processo é análogo ao processo de recombinação gênica (crossing-over) que
acontece na natureza, onde dois alelos são recombinados através da troca mútua de
segmentos entre pares de cromossomos (HOLLAND, 1975).
O operador de crossover do algoritmo proposto nesta tese funciona em dois níveis: o
primeiro é o intercâmbio de material entre duas regras com o mesmo conseqüente,
enquanto que o segundo é o controle em nível de cromossomo.
O primeiro nível consiste no intercâmbio de sub-árvores entre duas regras que têm o
mesmo conseqüente. Por exemplo, a regra SE A AND (B OR NOT C AND D) ENTÃO F(X)
e a regra SE NOT B OR (C AND NOT D) ENTÃO F(X). Escolhe-se então um nó
aleatoriamente em cada uma das árvores e realiza-se o intercâmbio entre as sub-árvores
92
enraizadas em cada um destes nós. Um exemplo da operação do crossover pode ser visto na
figura 4-4.
O segundo nível do operador consiste em um controle da seleção das árvores a
serem usadas pelo primeiro nível e é necessário pois pode-se ter múltiplas regras por
conjunto fuzzy, o que implica em duas coisas:
•
É necessário escolher com qual das regras do outro conjunto a regra atual irá realizar o
intercâmbio genético.
•
É necessário garantir que a regra escolhida contenha o mesmo conseqüente que a regra
corrente.
OR
AND
A
NOT
OR
B
NOT
AND
B
AND
C
NOT
D
D
C
Nós Sorteados
OR
AND
B
B
C
AND
NOT
AND
A
OR
NOT
D
NOT
D
C
Árvores Intercambiadas
Figura 4-4 → Exemplo de aplicação do operador de crossover. Sorteia-se um nó de cada sub-árvore (o nó A
na árvore da esquerda e o nó NOT na sub-árvore à direita, marcados com fundo cinza) e intercambiam-se as
sub-árvores enraizadas em cada um deles. O resultado é visível na parte de baixo da figura.
Assim, qualquer implementação deste algoritmo precisa garantir que as regras para
o conjunto X do cromossomo 1 (c1) somente realizam o crossover (“cruzam”) com as
regras para o mesmo conjunto fuzzy no cromossomo 2 (c2), mesmo que um dos
cromossomos tenha mais regras para este conjunto do que o outro. Isto quer dizer que se o
cromossomo c1 possui duas regras para o conjunto X e o cromossomo c2 só possui uma, as
duas regras de c1 realizarão o intercâmbio genético descrito acima com a mesma regra de
c2 .
93
Se a situação for inversa, e o cromossomo c1 tem apenas uma regra enquanto que
c2 tem duas, pode-se escolher de forma aleatória qual das regras de c2 irá cruzar com a
regra de c1 e o filho resultante terá apenas uma regra para este conjunto fuzzy. Como de
praxe nos algoritmos evolucionários, o processo de crossover ocorre duas vezes gerando
dois filhos, logo uma implementação possível do algoritmo é realizar o mesmo processo
duas vezes, uma varrendo cada pai, logo na segunda execução, o papel de c1 e c2 estarão
invertidos. Exemplos de ambas as situações são mostrados na figura 4-5 (a).
Se ambos os cromossomos tiverem mais de uma regra para o conjunto fuzzy cujas
regras estão sendo consideradas para o crossover, é interessante que qualquer
implementação do algoritmo garanta que cada regra realizará ao menos um cruzamento.
Tendo em vista que a lógica fuzzy usa todas as regras da base de regras para chegar
a uma conclusão, é interessante garantir que as características de todas as regras estejam
presentes na descendência dos cromossomos. Isto é, cada regra tem uma contribuição
específica, logo, é interessante que seus antecedentes sejam considerados para a geração
dos novos indivíduos, de forma que esta contribuição seja preservada.
Crom1
IF ant1 THEN
HIGHLY EXPRESSED(A)
Crom1
Crosses
with
Crosses
with
Crom2
IF ant2 THEN
IF ant3 THEN
HIGHLY EXPRESSED(A) HIGHLY EXPRESSED(A)
IF ant1 THEN
IF ant4 THEN
IF ant5 THEN
HIGHLY EXPRESSED(A) HIGHLY EXPRESSED(A) HIGHLY EXPRESSED(A)
Crom2
IF ant2 THEN
IF ant3 THEN
HIGHLY EXPRESSED(A) HIGHLY EXPRESSED(A)
(b)
(a)
Figura 4-5 → Exemplo de execução do controle em nível de regras do operador de crossover. Em (a) pode-se
ver a situação em que o cromossomo 1 tem apenas uma regra para o conjunto sob análise. Neste caso, esta
única regra realiza o crossover com as duas regras do crmossomo 2. Em (b) pode-se ver a situação em que
ambos os cromossomos têm mais de uma regra para o conjunto fuzzy. Qualque rimplementação pode
escolher quais regras cruzarão de forma aleatória, mas deve garantir que cada regra realize o crossover ao
menos uma vez.
94
4.4.2 Operador de mutação
O operador de mutação tem como função inserir variabilidade genética na
população sendo evoluída. Sem a aplicação deste operador, a população tende a convergir
em algumas gerações para um grupo muito pequeno de cromossomos. O tempo de
convergência é função apenas do tamanho do espaço de busca e do tamanho da população,
mas esta não deixa de ocorrer.
No caso do algoritmo evolucionário aqui proposto, são aplicados três tipos distintos de
operadores de mutação:
•
Operador de mutação de regras
•
Operador de inserção de regras
•
Operador de exclusão de regras
O operador de mutação de regras escolhe um nó aleatoriamente em uma árvore de
regra e elimina toda a sub-árvore enraizada naquele nó. Posteriormente, uma nova subárvore é gerada da mesma maneira que os cromossomos da população inicial. O modus
operandi deste operador de mutação é descrito na figura 4-6
Expressão gerada aleatoriamente
Árvore original
OR
AND
A
A
OR
B
D
AND
NOT
D
C
Sub-árvore a eliminar
AND
A
OR
B
OR
A
D
Figura 4-6 → Exemplo de operação do operador de mutação de regras. Um nó é escolhido de forma
aleatória (no caso do exemplo, o nó AND) e a sub-árvore enraizada nele (circulada) é substituída por uma
expressão gerada de forma aleatória.
95
O operador de inserção de regras escolhe um conjunto fuzzy aleatoriamente e cria
uma nova regra para ele, usando o inicializador da população, enquanto que o operador de
exclusão de regras elimina uma regra para um conjunto escolhido aleatoriamente, desde
que este conjunto tenha mais de uma regra.
Esta restrição decorre do fato de que é necessário garantir que todos os conjuntos
fuzzy tenham pelo menos uma regra associada, para que possam contribuir para a função de
avaliação.
Estes últimos dois operadores (inclusão e exclusão de regras) alteram o número de
regras por conjunto fuzzy, fazendo com que seja possível que um gene específico tenha um
número de regras diferente do número médio definido como parâmetro do algoritmo.
Se a implementação garantir que ambos possuam a mesma probabilidade, então a
média global do número de regras não será afetada, pois alguns genes terão seu número
aumentado enquanto que para outros este número diminuirá, e o número global de regras
tenderá a permanecer estável.
4.4.3 Implementação dos operadores
Há vários detalhes dos operadores que devem ser levados em consideração de forma
cuidadosa quando for feita uma implementação do algoritmo. Nesta seção listamos os
principais fatores.
Quando se está aplicando o crossover entre duas regras, varre-se uma regra de cada
vez. Em cada sub-árvore da árvore sendo visitada é decidido de forma aleatória se será feito
uma troca ou não. Se o sorteio retorna positivo, é feita uma troca entre a sub-árvore
corrente completa (isto é, a sub-árvore enraizada no nó corrente que estamos visitando) e a
sub-árvore equivalente do outro pai. Um exemplo desta varredura é mostrado na figura 4-7,
que consiste em uma representação algorítmica do processo mostrado em linhas gerais na
figura 4-4 acima.
96
O crossover tradicionalmente gera dois filhos por operação. Para fazê-lo, a
implementação aplica o algoritmo descrito na seção anterior duas vezes: primeiro
considerando os pais na ordem c1/c2 e depois considerando os mesmos pais na ordem
c2 / c1 .
A escolha das regras que irão cruzar é feita de forma aleatória, dada a existência de
várias regras alternativas para um mesmo conjunto. A implementação garante que cada
regra realize ao menos um cruzamento de forma a preservar sua contribuição para a
qualidade geral do cromossomo, seguindo o esquema mostrado na figura 4-5 (b).
A implementação do operador de mutação necessita que sejam criadas novas subárvores, mas se estas forem criadas da mesma forma que a população original, a tendência é
que a altura média das árvores sofrendo mutação cresça.
Para evitar este fenômeno, que comprometeria a simplicidade das regras, o módulo
inicializador é instruído para gerar árvores baixas, com altura (maior número de arestas
entre a raiz e as folhas) menor ou igual a 3, o que é feito acertando o coeficiente de altura,
como discutido no item b.2) desta mesma seção.
Passo 1:
Elemento Corrente
AND
A
OR
OR
AND
NOT
B
AND
NOT
C
B
Resultado do Sorteio: Negativo
NOT
D
D
C
Passo 2:
OR
AND
A
NOT
OR
B
NOT
AND
B
AND
C
Resultado do Sorteio: Positivo
NOT
D
D
C
Elemento Corrente
OR
AND
B
B
C
AND
NOT
AND
A
OR
NOT
D
NOT
D
C
Árvores Intercambiadas
Figura 4-7 → Exemplo da operação de crossover em nossas árrvores
97
4.5 Critérios de parada
No EA proposto nesta tese foram usados três diferentes critérios de parada:
•
Baseado no número de gerações (não mais do que 80 gerações por rodada)
•
Baseado no conceito de estagnação devido à convergência genética e/ou fatores
estocásticos, isto é, interromper a execução se a melhor solução não melhorou
durante as últimas 20 gerações
•
Baseado na qualidade da solução, o qual faz com que a execução seja interrompida
caso o erro máximo cometido nas previsões seja inferior a um padrão determinado
pelo usuário
Fitness of the best chromosome
120
Fitness
100
80
60
40
20
0
0
20
40
60
Generation
80
100
Run #1
Run #2
Run #3
Run #4
Run #5
Run #6
Run #7
Run #8
Run #9
Run #10
Run #11
Fig. 4-8: A evolução da avaliação do melhor cromossomo durante a descoberta da regulação para o gene
preGAD67. A avaliação foi calculada como descrita na seção 4b) e o número 100 corresponde a
aproximadamente 1% de erro na previsão do valor de expressão em cada instante de tempo. Varias curvas
páram antes da octogésima geração devido à aplicação de outros critérios de parada. As curvas relativas às
execuções de número 1 e 10 param na geração 70 devido à estagnação da avaliação do melhor indivíduo da
população. A curva correspondente à 11a. execução, por exemplo, pára na geração 40 devido à precisão da
solução obtida.
O limitador do número de gerações foi determinado empiricamente, tendo sido visto
em várias execuções que ele é superior ao número de gerações em que se percebe uma
convergência genética da população. Este efeito pode ser visto na figura 4-8, a qual
98
descreve 11 execuções feitas para uma das aplicações explicadas no próximo capítulo (a
determinação de um conjunto de regras para o gene preGAD67, um dos genes relevantes
para o desenvolvimento do sistema nervoso central de ratos).
4.6 Dados categóricos
Ao procurar dados para testar o algoritmo proposto nesta tese, verifica-se que nem
sempre os conjuntos disponíveis possuíam apenas atributos numéricos. Na verdade, na
maioria das vezes, os conjuntos de dados disponíveis incluíam dados categóricos.
Dados categóricos são tipos de variáveis que consistem em uma série de estados
discretos tal que cada objeto pertence a apenas um dos estados. Exemplos são a patente de
um oficial do exército, a cor de seus olhos, o aminoácido em uma determinada posição de
uma proteína. Estes dados são chamados de nominais quando não existe uma ordem
específica entre os estados diferentes (por exemplo, entre olhos azuis e castanhos) e de
ordinais quando existe uma ordem subjacente que pode ser imposta aos dados (por exemplo
capitão>tentente>sargento) (GORDON, 1981).
No caso dos dados nominais, não se pode estabelecer uma função de distância
natural entre dois elementos. GIBSON et al. (2000) apresenta um exemplo que consiste em
analisar um banco de dado de informação de carros, contendo fabricante, modelo, preço,
cor e cliente. O fabricante é um típico exemplo de dado categórico nominal: é difícil dizer
qual dado é mais ou menos próximo a outro. Por exemplo, “Honda” e “Toyota” podem ser
considerados próximos se pensarmos na origem da fábrica, mas talvez nem tanto se
pensarmos na faixa de preço média de seus modelos. Desta forma, não se pode usar
métricas tradicionais, tais como distância euclidiana ou outras, sendo necessária outra
forma de lidar com estes dados, como será visto em uma seção mais adiante.
Para poder tratar este tipo de dados foram introduzidas algumas modificações na
estrutura dos cromossomos usados no algoritmo aqui proposto, modificações estas que
serão descritas na próxima seção.
99
4.7 Modificações no cromossomo
A estrutura do cromossomo usado pelo algoritmo aqui proposto precisou ser
modificado para poder lidar com dados categóricos. Este tipo de dado não se presta a uma
abordagem fuzzy, tendo em vista que não são ordenáveis, não sendo possível então criar
conjuntos fuzzy para definir uma função de pertinência.
Assim, foi necessário capacitar nossos cromossomos para lidar com conjuntos crisp
(não-fuzzy) ao mesmo tempo em que lidavam com conjuntos fuzzy. A sintaxe de nossas
pré-condições passou então a ser dada pela mesma gramática que usamos anteriormente na
modelagem contínua:
<expressão> ::= AND
<expressão> <expressão>| OR
<expressão>
<expressão>|NOT <expressão> | <operando>
Entretanto, neste tipo de operação <operando> é definido de forma diferente:
<operando> ::= <conjunto_fuzzy>( <atributo> ) | <atributo> IN { <valores>* }
,onde <valores> corresponde a um conjunto contendo zero ou mais dos valores que existem
na coluna do <atributo> dentro do banco de dados. Para entender como inicializamos os
conjuntos de atributos, veja a seção e) deste mesmo capítulo.
4.8
Inicializando
os
conjuntos
de
valores categóricos
Como já discutido em uma seção anterior deste mesmo capítulo, muitos conjuntos
de dados incluem variáveis categóricas, isto é, variáveis não numéricas que podem conter
100
informações relevantes para auxiliar na classificação dos dados em questão. Nós
modificamos então a estrutura do nosso cromossomo de forma a permitir que este tipo de
variável participe de nossas regras, conforme descrito na seção (c) deste mesmo capítulo.
Esta modificação implica em um tratamento de conjuntos não fuzzy, que consistem
em uma partição crisp de nossos dados. Entretanto, é necessário descobrir a partição dos
dados em conjuntos.
É possível modificar o GA de forma que este tente descobrir sozinho os conjuntos
de elementos categóricos a serem colocados nas nossas regras, mas existem técnicas mais
eficiente de fazê-lo. Estas incluem a utilização de um algoritmo de agrupamento de dados
categóricos de forma a gerar conjuntos que tivessem um significado extraído da estrutura
subjacente aos dados.
GIBSON et al. (2000) descreve o algoritmo usado para fazer esta análise (STIRR),
algoritmo este que usa uma técnica baseada em sistemas dinâmicos que itera uma série de
pesos entre valores armazenados de forma a criar grupos de elementos com alto grau de coocorrência e/ou associação.
Basicamente, o algoritmo funciona inicializando um grafo cujas arestas consistem
nos valores que co-ocorrem em uma mesma tupla. É óbvio que elementos do mesmo
atributo (mesma coluna) nunca estarão ligados, pois não temos múltiplos valores por
atributo em um banco de dados, mas é possível que haja um caminho entre eles,
dependendo dos elementos de outras colunas que co-ocorrem com os dois.
101
Figura 4-9 → Exemplo de inicialização do grafo usado no algoritmo utilizado. Na primeira linha da base de
dados exemplo, pode-se ver que a1 co-ocorre com b1 e c2. Logo, criamos arestas entre os nós que
representam estes valores. Como a2 e a1 co-ocorrem com c1, existe um caminho entre os dois, o que pode
indicar uma associação, mesmo que seja impossível para os dois valores co-ocorrerem na mesma tupla.
A nossa maneira de inicializar o grafo é ligeiramente diferente daquela sugerida nas
figuras e exemplos do artigo em questão. Nós procuramos inserir uma ligação entre todos
os valores que co-ocorrem em uma tupla, de todas as colunas para todas as colunas,
enquanto que os exemplos do artigo supracitado fazem uma ligação de uma coluna para a
outra. Esta alteração reforça as ligações entre os elementos que devem estar no mesmo
cluster, pois cria mais caminhos de um nó contendo um elemento para outro de uma mesma
coluna que tenha uma forte associação com o primeiro. Um exemplo desta inicialização
pode ser visto na figura 4-9.
Uma vez montado o grafo, atribuímos um peso a cada um dos nós, a guisa de
inicialização do sistema. Estas arestas podem ser inicializadas das seguintes formas:
•
Aleatória → todos os nós recebendo valores entre zero e um escolhidos de forma
aleatória.
•
Uniforme → todos os nós recebem um valor igual a um.
102
•
Sobre um nó → escolhemos um valor de interesse e todos os valores que co-ocorrerem
em tuplas com este elemento serão inicializados com valor 1. Todos os outros nós serão
inicializados com valor zero.
Após a inicialização, todos os valores são normalizados para evitar saturação das
funções de iteração. No nosso caso, nós inicializamos o sistema sobre cada um dos nós e
extraímos os elementos pertencentes ao grupo deste elemento, conforme descreveremos
mais à frente neste mesmo capítulo.
Uma vez inicializado o sistema, nós o iteramos usando uma função de combinação
f. Para cada tupla τ contendo um elemento de interesse v e os nós u1, u2, ... un-1, nós
calculamos o valor xτ dado por f(u1, u2, ... un-1). O peso atribuído ao nó v será então dado
por
τ
xτ .
Após os cálculos, os pesos são novamente normalizados. O processo de iteração é
repetido então até que o sistema atinja um estado estável, configuração esta denominada de
bacia de atração do sistema.
Entre as possíveis funções de combinação de elementos, nós temos as seguintes:
•
Produtório: Π( u1, u2, ... un-1) = u1u2 ... un-1
•
Somatório: Σ( u1, u2, ... un-1) = u1+ u2 ... + un-1
•
Operador somatório generalizado: Sp( u1, u2, ... un-1) = (u1p + u2p ... + un-1p)1/p
Nas execuções de nosso sistema nós percebemos que o operador produtório é
sensível a valores próximos de zero, fazendo o sistema convergir de forma extremamente
rápida para uma configuração em que a grande maioria dos pesos é igual a zero.
Já o operador somatório generalizado tende a fazer com que o maior valor dentre os
pesos predomine sobre todos os demais, negligenciando a contribuição de todos os outros
elementos. Isto é um fato normalmente verificado em situação de agrupamento em que se
utiliza métricas de Minkowski.
Desta forma nós selecionamos o operador somatório, que é aquele que produz
menos efeitos espúrios e leva em consideração todos os pesos de todos os nós com arestas
ligando-os ao nó em consideração.
103
GIBSON et al. (2000) oferece provas da convergência do algoritmo, com a
característica especial de que quase todas as configurações iniciais do sistema convergirão
para o mesmo ponto, que consiste no autovetor principal do sistema, visto como uma
configuração.
Considerando que usamos o somatório como operador de atualização de nossos
pesos, e que usamos uma função N de normalização global a cada iteração, o algoritmo de
iteração dos pesos wx pode ser colocado da seguinte forma:
Inicialize a configuração W.
Enquanto não convergir, faça
∀nó ui ∈ grafo faça
∀tupla τ
{ uτ1, uτ2 , ... , uτi , ..., uτn } contendo ui faça
x τ ← w u τ 1 + w u τ 2 + ... + w u τ i + ... + w u τ n
w u'i ←
τ
xτ
W ← N ( W’ ), onde N é a função de normalização global
Fim Enquanto
ZHANG et al. (2000) tentam demonstra que as provas oferecidas pelo artigo em
questão são insuficientes e que existem alguns estados iniciais especiais que podem levar a
uma não convergência do algoritmo. Eles propõem duas alterações fundamentais no
algoritmo aplicado: alterar a matriz de iteração do sistema, de forma a multiplicar o peso
associado ao elemento corrente por uma constante positiva maior que um e utilizar uma
função de normalização global, isto é, fazer com que a soma de todos os pesos seja um, e
não a soma de cada coluna.
O problema apontado pelos autores consiste em uma má formação da matriz de
iteração do método STIRR. Este realiza uma projeção dos dados no espaço do autovetor
dominante. Entretanto, se o autovetor dominante for múltiplo, o algoritmo gera iterações
que alternam entre os dois subespaços sem chegar nunca a satisfazer um critério de parada.
Entretanto, GIBSON et al. (2000) assumiu que a matriz é não degenerada, o que
implica em que nenhum dos autovalores é repetido. A situação real de repetição de um
autovalor não é genérica. Entretanto, se eventualmente nosso algoritmo não convergir para
104
uma configuração estável, pode-se perturbar a matriz inicial, sem alterar a essência da
informação lá contida, mas eliminando a degeneração da configuração inicial.
Assim, pode-se usar o STIRR no sistema aqui proposto sem maiores preocupações
quanto a estas questões. O que este algoritmo efetivamente realiza quando se chega a uma
configuração final é a separação dos valores em dois grupos de pesos facilmente separáveis
por um algoritmo de classificação, posto que os elementos de um dos grupos geralmente
têm um módulo significativamente maior que os elementos do outro. Assim, os dois grupos
podem ser interpretados como os associados e os não associados ao elemento sobre o qual o
sistema foi inicializado. Isto pode ser visto facilmente através de um pequeno exemplo
artificialmente criado para demonstrar as capacidades do nosso algoritmo. Os dados
consistem na tabela 4-4 a seguir.
Carro
Nome
Cabelo
Categoria
HONDA
Ricardo
Castanho
2
TOYOTA
Gilberto
Castanho
2
HONDA
Claudia
Preto
2
PEUGEOT
Sara
Louro
1
VOLKS
Paulo
Preto
1
PEUGEOT
Ines
Ruivo
1
TOYOTA
Victor
Preto
2
HONDA
Rafael
Branco
2
TOYOTA
Pedro
Preto
2
TOYOTA
Maria
Louro
2
FORD
Joana
Louro
1
Tabela 4-4: Dados gerados artificialmente para exemplo de aplicação do algoritmo STIRR
Os dados foram definidos de tal maneira que apenas aqueles elementos que têm um
carro japonês (da marca HONDA ou da marca TOYOTA) pertencem à categoria 2. Todos
os outros pertencem à categoria 1.
105
Ao executar o algoritmo usando uma inicialização aleatória e operador somatório
para atualização, foram obtidos os seguintes pesos para cada um dos dados nas colunas do
conjunto de dados, conforme mostrado na tabela 4-5.
Carro
Nome
Cabelo
Valor
Peso
Valor
Peso
Valor
Peso
TOYOTA
0,515
Ricardo
0,091
Castanho
0,129
HONDA
0,291
Gilberto
0,091
Preto
0,516
PEUGEOT
0,099
Claudia
0,091
Louro
0,291
VOLKS
0,047
Sara
0,091
Ruivo
0,032
FORD
0,047
Paulo
0,091
Branco
0,032
Ines
0,091
Victor
0,091
Rafael
0,091
Pedro
0,091
Maria
0,091
Joana
0,091
Tabela 4-5: Resultados obtidos pela iteração do algoritmo STIRR sobre o exemplo descrito anteriormente.
Além dos valores obtidos para os dados, pode-se aplicar o mesmo algoritmo nas
categorias a que eles pertencem, obtendo-se o valor de 0,092 para a categoria 1 (pessoas
que possuem carros de qualquer nacionalidade que não a japonesa) e 0,907 para a categoria
2 (pessoas que possuem carros japoneses).
A separação entre estes dois grupos seria realizada facilmente por inspeção visual.
Entretanto, para evitar intervenção humana neste passo do algoritmo, foi usado um simples
algoritmo de K-Means para separar os dois conjuntos.
O K-Means é uma heurística de agrupamento não hierárquico que busca minimizar
a distância dos elementos ao centro de clusters de forma iterativa. O algoritmo depende de
um parâmetro (k=número de clusters) definido de forma ad hoc pelo usuário. Isto costuma
ser um problema, tendo em vista que normalmente não se sabe quantos clusters existem a
priori. Felizmente, neste caso específico sabe-se que existem exatamente dois clusters
106
definidos para cada variável, pois a separação em dois conjuntos é inerente ao algoritmo
usado. Consequentemente, pode-se fixar o parâmetro k (número de conjuntos) em 2 sem
nenhuma dúvida.
O algoritmo do K-Means pode ser descrito da seguinte maneira:
1. Escolher k distintos valores para centros dos grupos (possivelmente,
de forma aleatória)
2. Associar cada ponto ao centro mais próximo
3. Recalcular o centro de cada grupo
4. Repetir os passos 2-3 até nenhum elemento mudar de grupo.
Tendo em vista que os clusters usados aqui são bem definidos, com boa
separabilidade, pode-se usar a norma euclidiana como métrica de distância de cada um dos
pesos ao centro de seu cluster. A norma euclidiana é um caso especial de uma métrica de
Minkowski (GORDON, 1981) e a sua fórmula para cálculo da distância entre dois objetos i,
j é dada por:
d ij = (
p
k =1
2 1
2
( xij − x jk ) )
Aplicando o K-Means nos valores dos pesos obtidos pelo algoritomo STIRR, os
dados foram separados nos seguintes conjuntos:
•
Carro: {TOYOTA, HONDA} e {VOLKS,PEUGEOT,FORD}
•
Cabelo: {Preto, Louro} e {Branco, Ruivo, Castanho}
•
Nome: Todos no mesmo conjunto, pois possuem valores iguais.
Estes conjuntos obtidos podem ser usados então como fonte de dados para usar em
nossas regras, como será descrito mais adiante neste mesmo capítulo. Ao mesmo tempo,
poderia se explorar o fato de que as categorias se separam em conjuntos de valores
similares àqueles que as definem (a categoria 2 tem peso alto, como o conjunto {TOYOTA,
HONDA}), mas isto é um caso especial derivado do fato de que existem apenas duas
categorias e não generaliza bem para o caso de múltiplas categorias.
Quando se incluem dados numéricos nas tuplas, o problema complica-se um pouco,
pois diferentes números podem ter exatamente o mesmo significado prático e não aceitar
107
uma conexão entre estes dados (figura 6-3) cria um sistema esparso demais incapaz de
perceber as conexões que efetivamente existem entre os elementos
2
Atrib1
Atrib2
2
y
1,99
z
y
?
1,99
z
Figura 4-10 → Criação de grafo a partir de tuplas com dados categóricos e numéricos. Será que as linhas
tracejadas não deveriam existir? Se a diferença de 0,01 entre os valores não for significativa, r ligações
relevantes entre nós podem ser perdidas.
A solução para este problema é óbvia e consiste em discretizar as variáveis
numéricas, de forma que valores próximos sejam transformados em um valor igual e o
algoritmo possa proceder sem problemas.
Para discretizar uma variável é necessário definir o tamanho do intervalo entre os
slots, que é dependente do valor absoluto das variáveis. Por exemplo, a variável salário, que
vai de R$200 a R$10.000 não deveria ter um slot de intervalo 0,1, mas sim algo em torno
de 50, enquanto que a variável altura, que vai de 1,5m a 2,1m deveria ter um slot de
intervalo 0,05.
Uma solução alternativa consiste em fazer um arredondamento usando
características dos conjuntos fuzzy, de tal forma que um valor seria fuzzyficado, as suas
pertinências fuzzy seriam arredondadas e o valor seria defuzzyficado. Como o universo de
discurso já varia de variável para variável, o tamanho do slot se ajusta automaticamente,
sem necessidade de análises extensivas de variáveis.
Para começar o processo, divide-se o universo de discurso em n funções fuzzy,
como vemos na figura 4-11. O uso de uma interseção por função é arbitrário – o algoritmo
funciona igualmente bem com mais interseções.
108
Pertinência
Fuzzy
Valor variável
Figura 4-11 → Demonstração da divisão do universo de discurso de uma variável em conjuntos fuzzy para
uso no método de arredondamento. O número de funções e interseções é determinado de forma ad hoc,
enquanto que os limites mínimo e máximo do universo de discurso da variável são lidos a partir dos dados.
O número de conjuntos fuzzy utilizado não é relevante para o método, dado o seu
objetivo final de integrar-se ao algoritmo de análise de dados categóricos. Os mesmos
resultados são obtidos não importando o valor de n escolhido, visto que os valores serão
discretizados sempre para o mesmo valor.
Para obter o valor desta discretização para um valor qualquer, este é fuzzyficado e
são obtidas duas pertinências diferentes de zero (no caso de haver apenas uma interseção,
como feito em todas as execuções do algoritmo). Estes valores são reais e devem então ser
aproximados de forma arbitrária, como por exemplo para o centésimo.
Um exemplo possível: imagine que um determinado valor obtém pertinência
0,43381 em um conjunto em 0,56619 em outro. Aproximando para o centésimo, obteremos
então uma pertinência de 0,43 no primeiro conjunto e 0,57 no segundo.
São defuzzyficadas estas pertinências aproximadas e obtêm-se o valores
discretizado da variável em questão. Por exemplo, todos os números cuja pertinência no
primeiro conjunto ficarem entre ]0,425 e 0,435] terão sua pertinência aproximada para o
mesmo valor e defuzzyficada da mesma forma, obtendo o mesmo valor discretizado.
109
TOYOTA
TOYOTA
1,57
2500
1,57
2500
1,75
2490
1,75
2490
FORD
FORD
(a)
(b)
Figura 4-12 → Exemplo de geração do grafo definidos pelos dados quando utilizamos a técnica de
arredondamento fuzzy.
Estendeu-se então o exemplo inicial, incluindo duas variáveis numéricas no
conjunto de dados (salário e altura). Este conjunto de dados exemplo ficou então como
mostrado na tabela 4-6 a seguir.
Altura
Salario
Carro
Nome
Cabelo
Categoria
1.75
2300
HONDA
Ricardo Castanho 2
1.7
2000
TOYOTA
Gilberto Castanho 1
1.7
3400
HONDA
Claudia
1.5
1800
1.8
Preto
1
PEUGEOT Sara
Louro
2
2800
VOLKS
Preto
1
1.65
1300
PEUGEOT Ines
Ruivo
2
1.7
2100
TOYOTA
Victor
Preto
2
1.85
5000
HONDA
Rafael
Branco
2
1.62
5000
TOYOTA
Pedro
Preto
2
1.57
2500
TOYOTA
Maria
Louro
2
1.75
2490
FORD
Joana
Louro
1
Paulo
Tabela 4-6: Novo conjunto exemplo, com a inclusão de atributos numéricos.
As categorias foram geradas usando-se como base a regra de que alguém pertence à
categoria 2 se possui um carro japonês ou tem menos de 1,7m de altura.
110
Com estes dados, pode-se ver um exemplo prático da aplicação deste método na
figura 6-5, na qual é mostrado o que acontece com um trecho do grafo quando aplica-se o
método de discretização fuzzy ao conjunto exemplo anteriormente citado. Dois salários
muito próximos (2500 e 2490, correspondentes às duas últimas linhas de nossa tabela)
geram dois conjuntos disjuntos de nós (figura a), apesar de ambos transmitirem o mesmo
poder de compra e por conseguinte, a mesma informação. Ao usar o método de
discretização (precisão de centésimos na pertinência), ambos são arredondados para o
mesmo valor, o que gera o gráfico mostrado na figura 6-5b.
Ao executar o algoritmo STIRR usando uma inicialização aleatória, foram obtidos
os pesos para cada uma das colunas do conjunto exemplo, conforme descritos na tabela 4-7.
Altura
Cabelo
Carro
Salário
Valor
Peso
Valor
Peso
Valor
Peso
Valor Peso
1,49
0,052
Branco
0,032
FORD
0,047 1263 0,067
1,57
0,052
Castanho 0,128
HONDA
0,290 1820 0,067
1,62
0,052
Louro
0,290
PEUGEOT 0,099 2043 0,067
1,66
0,052
Preto
0,516
TOYOTA
0,516 2155 0,067
1,70
0,473
Ruivo
0,032
VOLKS
0,047 2266 0,067
1,74
0,211
2489 0,267
1,80
0,052
2824 0,067
1,85
0,052
3381 0,067
5054 0,027
Tabela 4-7: Resultados obtidos pela iteração do algoritmo STIRR sobre o exemplo expandido incluindo dados
numéricos, conforme descrito anteriormente.
Repare-se que os valores que aparecem nas colunas altura e salário não consistem
nos valores originais, mas sim daqueles decorrentes do processo de arredondamento fuzzy
aplicado.
Assim como no caso anterior, nome, que é uma variável unívoca, obtém pesos
iguais para todos os elementos. Isto é coerente com o fato de que não se pode realizar
111
nenhum tipo de classificação baseada em chaves de bases de dados, dado que novos
registros possuirão chaves unívocas nunca antes vistas em conjuntos de treinamento.
Aplicando o K-Means nos valores dos pesos obtidos pelo algoritmo STIRR, os
dados foram separados nos seguintes conjuntos:
•
Carro: {TOYOTA, HONDA} e {VOLKS,PEUGEOT,FORD}
•
Cabelo: {Preto, Louro} e {Branco, Ruivo, Castanho}
•
Salário: {1263, 1820, 2043, 2155, 2266, 2824, 3381} e {2489, 5054}
•
Altura: {1.49, 1.57, 1.62, 1.66, 1.80, 1.85} e {1.70, 1.74}
O conjunto altura foi separado de forma espúria, colocando dois elementos maiores
do que 1,7m dentro do conjunto dos pertencentes. Isto é decorrente do fato de que ambas as
alturas aparecem em apenas um registro cada, no qual está definido um carro de marca
japonesa. Para demonstrar este fato, foram acrescentadas ao arquivo de dados as linhas
descritas na tabela 4-8.
Altura
Salario
Carro
Nome
Cabelo
Categoria
1.85
2000
VOLKS
Sicrano
Castanho 1
1.8
2000
FORD
Beltrano Ruivo
1
Tabela 4-8: Linhas acrescentadas no arquivo para demonstrar efeito de uma má amostragem do conjunto de
dados. Se houver várias linhas espúrias, estas podem alterar os conjuntos obtidos. É fundamental para a boa
execução do algoritmo que os dados utilizados sejam representativos do conjunto como um todo, incluindo
todas as classes e exemplos.
Omitem-se as pertinências para todas as outras variáveis que não altura por questão
de concisão e de falta de necessidade, tendo em vista que nenhum dos conjuntos fuzzy
obtidos para estas se alterou. As novas pertinências obtidas para a variável para a altura
foram aquelas descritas na tabela 4-9 a seguir.
112
Altura
Valor
Peso
1,49
0,040
1,57
0,040
1,62
0,040
1,66
0,040
1,70
0,359
1,74
0,160
1,80
0,160
1,85
0,160
Tabela 4-9: Novas pertinências obtidas para o conjunto altura.
Aplicando o K-Means nos valores dos pesos obtidos pelo algoritmo STIRR para o
campo altura, os dados foram separados então nos seguintes conjuntos:
•
Altura: {1.49, 1.57, 1.62, 1.66} e {1.70, 1.74, 1.80, 1.85}
Esta divisão é aquela corretamente preconizada pela estrutura de separação dos
conjuntos propostos (que diz que todos os indivíduos que têm uma altura menor que 1,7m
deve pertencer ao conjunto 2). Isto implica em que o conjunto de dados de treinamento
deve ser representativo do conjunto de dados como um todo. Se houver algum tipo de bias
na definição do conjunto de treinamento, isto se refletirá imediatamento nos conjuntos
descobertos pelo algoritmo proposto.
Os elementos pertencentes aos conjuntos acima são os dados numéricos após o
arredondamento. É importante que se aplique o arredondamento nos conjuntos de validação
antes de aplicar as regras obtidas através deste algoritmo.
Como o universo de discurso dos conjuntos fuzzy é dependente dos valores
assumidos pela variável, o método é auto-escalonável e não é necessário preocupar-se em
determinar o tamanho dos slots de acordo com os valores assumidos por cada uma delas.
113
Isto faz com que se tenha menos um ponto de interferência por parte do usuário,
diminuindo o número de parâmetros livres do sistema.
4.9 Algoritmos Genéticos Paralelos
4.9.1 Conceitos
A idéia por trás dos programas paralelos é dividir uma tarefa em sub-tarefas e
resolver a todos eles simultaneamente usando múltiplos processadores. Esta estratégia de
“dividir para conquistar” pode ser aplicada aos algoritmos evolucionários de várias
maneiras diferentes e podemos encontrar várias referências a implementações paralelizadas
de algoritmos evolucionários (DORIGO et al., 1992, CANTÚ-PAZ, 1997)
Alguns métodos paralelos usam uma única população, enquanto outros dividem a
população em várias sub-populações relativamente isoladas. Alguns métodos são mais
adequados para arquiteturas massivamente paralelas, enquanto outros são mais adequados
para computadores com poucos mas poderosos processadores.
A implementação paralelizada que descrevemos nesta seção é inspirada em
conhecimento biológico bem difundido. Os biólogos descobriram que em ambientes
isolados os animais são geralmente mais adaptados às peculiaridades do seu ambiente do
que em grandes massas contínuas.
O primeiro a perceber isto foi o próprio Charles Darwin, que em sua viagem no
navio H.M.S. Beagle percebeu ao passar por algumas ilhas, que as aves eram mais similares
de uma ilha para outra do que os animais terrestres, já que estes não podiam mudar de ilha e
por conseguinte apresentavam diferenças sutis que os tornavam mais adaptados às
peculiaridades de cada ambiente.
114
Darwin percebeu que isto provavelmente decorria do fato de que as aves podem ir
de uma ilha para outra facilmente para encontrar parceiros sexuais e difundir seu potencial
cromossômico, enquanto que, por mais próximas que as ilhas estivessem, os animais
terrestres estavam irremediavelmente presos nelas, sem a possibilidade de misturar seus
genes com os de animais das outras ilhas.
Como conseqüência, cada população insular manteve suas características, e esta
manutenção consiste na essência da teoria dos nichos ecológicos. Esta teoria, por sua vez
inspirou a criação de novos modelos de algoritmos evolucionários paralelos.
DORIGO et al. (1992) teorizou que em um ambiente computacional pequenas
populações separadas seriam mais competentes na busca de soluções através de um
algoritmo evolucionário do que uma grande população unificada cujo tamanho fosse a
soma dos tamanhos das pequenas populações.
Assim, desenvolveu-se um modelo de algoritmo evolucionário denominado Island,
no qual a população de cromossomos é particionada em sub-populações isoladas cada uma
das quais evoluirá de forma separada tentando atingir um determinado objetivo
(maximização de uma função).
Periodicamente, cada população envia suas melhores n soluções para seus vizinhos,
que descartam suas n piores soluções e as substituem pelos padrões recebidos. Esta troca é
denominada migração e pode ser vista na figura 4-12.
Figura 4-12 → Descrição do processo de migração de um algoritmo evolucionário paralelizado do tipo
Island.Os melhores indivíduos da Ilha 1 (preenchidos) são selecionados para migração para a Ilha 2. Como
a população é de tamanho fixo, os piores indivíduos da Ilha 2 (os sem preenchimento) são substituídos pelos
elementos que chegam. O processo é repetido no sentido inverso (migração da Ilha 2 para a Ilha 1).
115
Este tipo de algoritmo evolucionário paralelizado é usado em ambientes distribuídos
que tenham uma memória privada local. Dado que não existe um processo central de
seleção, o sistema é completamente assíncrono, com os processadores se comunicando
durante os intervalos de migração.
A utilização deste algoritmo permite que se criem várias populações com
populações iniciais distintas que evoluem para tentar atingir o mesmo resultado. Após um
determinado número de iterações, cada população sofrerá o efeito da convergência genética
que será combatido utilizando-se o processo de migração.
Tendo em vista que cada população é inicializada de forma aleatória, esta tende a
ser diferente da população de outro ambiente, e, por conseguinte, o processo migratório traz
cromossomos que introduzem uma maior variabilidade para a população que o recebe.
Os elementos introduzidos pela migração possuem uma boa avaliação, já que eram
os melhores indivíduos da população que os enviou. Isto quer dizer que eles provavelmente
serão escolhidos durante o processo de aplicação de operadores para a criação de uma nova
geração.
Aplicando-se esta paralelização pode-se executar várias rodadas de uma única vez.
Entretanto, estas rodadas não executarão isoladamente, como seria o caso se as fizéssemos
seqüencialmente em um único processador, mas sim cooperarão entre si para a obtenção de
um resultado geral melhor.
4.9.2 Implementação
No caso do algoritmo desta tese, foi adotada a estratégia de dividir o processamento
em vários computadores pessoais. Na maioria do tempo fora usados três deles, o melhor
sendo um Pentium IV 1,7 Mhz com 256 Mb de memória.
Como os processadores usados eram diferentes, havia duas estratégias possíveis a
adotar para o momento em que uma das ilhas atingissem o ponto de migração: esperar que
as outras ilhas atingissem o mesmo ponto e sincronizar o processo ou continuar sem fazer a
migração até alguma população estrangeira estar disponível.
116
Foi adotada a primeira opção, por questões de simplicidade e pelo fato de todos os
computadores serem muito parecidos (o pior deles é um Pentium IV 1.2 Mhz), o que faz
com que o tempo de espera seja relativamente pequeno.
A implementação da comunicação do aplicativo foi feita criando-se um servidor de
memória central, que armazena os indivíduos migrantes até que outra ilha esteja pronto a
recebê-los e a comunicação entre as ilhas e o pool de memória é feita usando-se o protocolo
da Internet (TCP-IP via sockets).
Esta paralelização permite que o aplicativo seja dividido por um número grande de
computadores, sem nenhuma restrição formal. No caso extremo, poderia se criar uma
versão que fosse ativada em máquinas de pessoas interessadas em cooperar quando não
estivessem usando seu micro. Estas versões poderiam rodar por um tempo pré-determinado
ou até que os usuários retornassem ao seu computador. Assim, se poderia, ao menos
teoricamente, infinitas ilhas de processamento que poderiam colaborar para resolver
qualquer problema, por mais difícil que este se mostrasse.
Todas as execuções descritas no próximo capítulo foram feitas utilizando-se mais de
um computador simultaneamente. Em cada micro foi evoluída uma população
independente, cujos 3 melhores indivíduos migravam a cada 10 gerações para as outras
populações em evolução.
Cada micro usado possui um processador e uma quantidade de memória distinta, e
todas as populações evoluem de forma assíncrona. Isto implica em que um processador
chega ao momento de migração antes dos outros. Para que este micro com processador
mais veloz não tenha que parar para esperar pelas outras populações, foi criado um banco
central de indivíduos. Ao fim de cada execução o programa checa com este banco central se
existem migrações a efetuar, e havendo, ele as recebe, substituindo seus 3 piores
cromossomos pelas soluções recebidas.
117
4.10
Comparando
a
representação
proposta com outras pré-existentes
Nesta seção será comparado o uso prévio da notação polonesa reversa (RPN) em
vários artigos que também usam algoritmos evolucionários com a representação dos
cromossomos similares àquela usada nesta tese.
YANG et al. (2003) busca desenvolver regras para análise de pontos de clivagem de
proteases. Esta representação não utiliza conjuntos fuzzy, pois é voltada para regras que
analizam a presença de aminoácidos (um conjunto de 20 letras). Assim, o único formato
necessário de regra consiste em combinação de avaliações do tipo <posição> <operador>
<aminoácido>, onde <operador> pode ser igual ou diferente.
DASGUPTA et al. (2002) usa uma representação que se baseia em string de bits
para resolver o problema de detecção de intrusos em uma rede. Assim como no caso da
representação adotada no capítulo anterior para o caso binário, esta solução tem o problema
de não ser escalável e ter cromossomos de tamanho praticamente intratável quando do
crescimento do número de parâmetros. No caso do trabalho mencionado isto não é um
empecilho visto que o número de atributos sendo tratados é pequeno (da ordem de poucas
dezenas).
O algoritmo evolucionário descrito aqui difere destes dois trabalhos citados no fato
de que o operador usado nesta tese, que é fortemente baseado nos operadores padrão de
programação genética (KOZA, 1992), é similar ao crossover uniforme, enquanto que
ambos os trabalhos usam uma breve variação do crossover de um ponto, que é
reconhecidamente inferior na preservação dos esquemas e das características interessantes
dos cromossomos (MITCHELL, 1996).
BENTLEY (1999), de forma semelhante ao trabalho desenvolvido nesta tese, busca
desenvolver bases de regras fuzzy para análise de padrões. Este artigo, tal como
(DASGUPTA et al., 2002), usa uma representação baseada em strings de bits que, como
118
discutido anteriormente, faz com que o cromossomo se torne intratavelmente grande em
problemas com um número elevado de atributos.
Outro ponto que merece destaque nestes artigos é o fato de que eles geram seus
conjuntos fuzzy sem interseção. Para poder realizar uma comparação justa, foi tentado usar
este tipo de definição em nosso algoritmo e descobriu-se que a desempenho do
previsor/classificador era inferior àquela obtida usando-se conjuntos com interseção, dado o
grande número de regras que não disparavam e a falta de precisão resultante do módulo
fuzzy.
Obviamente não é possível dizer que isto ocorre também nos trabalhos citados tendo
em vista o fato de que nesta tese usam-se conjuntos de dados radicalmente diferentes.
Entretanto, é de se esperar que este tipo de melhoria quando do uso de conjuntos fuzzy com
interseção seja verificado em todas as aplicações.
ZHOU et al. (2002) usa algoritmos evolucionários para criar uma base de regras
descritas com RPN. Entretanto, neste artigo usam-se operadores matemáticos tais como raiz
quadrada, adição e multiplicação que apesar de serem interessantes para a aplicação deste
artigo, não fazem sentido em um contexto de regras fuzzy.
Alguns destes operadores também não têm sentido nas aplicações biológicas que
serão descritas nos próximos capítulos. As células não realizam operações matemáticas
com a concentração de substâncias. As operações celulares são processos estocásticos cuja
probabilidade é diretamente proporcional à presença (ou ausência) dos elementos
promotores (ou inibidores) (ALBERTS et al., 2002).
Se dois promotores são necessários, pode-se interpretar como se estivesse sendo
efetuado algum tipo de multiplicação ou convolução. Entretanto, posto que não existem
pequenos somadores/integradores dentro da célula, seria uma modelagem mais precisa
considerar esta necessidade como sendo uma pré-condição, como é no contexto fuzzy e
definido no algoritmo proposto nesta tese.
119
Capítulo 5 - Aplicações
em bioinformática
Existem várias aplicações possíveis na área de bioinformática e a escolhida para a
aplicação do algoritmo desta tese foi a análise de microarrays de DNA, que possui algumas
características especiais. A principal delas consiste no fato de que estes microarrays
possuem informação sobre um grande número de genes medidos em um pequeno número
de instantes de tempo. Isto decorre do fato das medições serem feitas por microarrays e
serem financeiramente onerosas e faz com que as matrizes de dados tenham um número de
colunas da ordem dos milhares e um número de linhas da ordem das unidades.
Outra característica importante consiste na grande quantidade de informações
parciais disponíveis hoje em dia na área de biologia. A utilização destas informações é
imprescindível para a obtenção de modelos precisos que tenham um bom poder de
previsão.
Este capítulo será iniciado com uma descrição do conhecimento biológico mínimo
necessário para a compreensão do problema. Na seção a) serão discutidas as redes de
regulação genética e na seção b) os microarrays de DNA e as principais características dos
dados obtidos através deles. Uma vez estabelecidos estes conhecimentos, será descrita a
aplicação do algoritmo proposto nesta tese com detalhes, especialmente quanto às
necessidades de pré-processamento e a incorporação de conhecimento pré-existente.
120
5.1 Pré-processamento dos dados
Este passo é necessário para diminuir a dimensionalidade do nosso conjunto de
dados quando trabalhamos com conjuntos provenientes de microarrays. Nestes casos, temos
conjuntos de dados de dimensões n X m, onde n é da ordem de 103 enquanto que m é da
ordem de 1. Obviamente tal conjunto não pode ser tratado usando-se técnicas estatísticas
tradicionais tais como análise de convariância (MOORE et al., 2002).
Se for possível diminuir a dimensionalidade dos dados, torna-se mais fácil para
qualquer algoritmo encontrar soluções com base nos dados. Assim, é interessante que se
use técnicas estabelecidas, baseadas em estatística ou conhecimento biológico prévio, para
diminuir ao máximo as dimensões dos dados antes de oferecê-los ao algoritmo aqui
proposto. Quando outros problemas que não possuirem esta grande discrepância entre as
dimensões forem tratados, este passo pode vir a ser dispensável.
Nos problemas biológicos, primeiramente eliminam-se os elementos que não podem
ter função de controle. Isto decorre do fato de se estar procurando por elementos que
possam ser candidatos a reguladores. Esta aplicação de conhecimento biológico prévio
permite que o espaço de busca original seja reduzido aos fatores de transcrição, quinases de
proteína, transdutores de sinal e proteínas de ligação.
É fácil entender este passo quando se pensa que se está buscando elementos que
podem ter um papel na regulação e que apresentem mudanças significativas nos seus níveis
de expressão, de forma a serem detectados através de microarrays. Alguns elementos, como
fatores de transcrição, agem mesmo quando presentes em níveis muito baixos (às vezes,
basta uma molécula por célula). Entretanto, outras moléculas, que são diretamente
influenciadas por estes fatores podem estar presentes em níveis muito mais significativos, o
que significa que mesmo que não se encontre o controle real, encontraremos uma ligação
de controle epistático (PE’ER et al., 2002).
121
Os conjuntos de dados usados nesta tese são aqueles gerados por microarrays e que
representam o logaritmo da variação da expressão. Entretanto, dado que a variação não está
linearmente relacionada com a intensidade do sinal é possível superestimar esta variação
nas baixas intensidades ou subestimá-la quando o elemento em estudo estiver presente em
grandes quantidades.
Para representar isto imagine que existam dois elementos: o primeiro elemento varia
seu nível de expressão de 0,0001 para 0,001 (variação de ordem de 10) enquanto que o
segundo elemento varia de um nível de expressão de 10 para um nível de 20 (uma mudança
de ordem 2). Apesar da segunda mudança ser muito mais importante e estatisticamente
significativa que a segunda (que pode se dever apenas a ruído ou erros de medição), ela
será considerada menos importante, tendo em vista que a magnitude da variação é menor
do que no primeiro caso.
Por conseguinte, baseando-se apenas nas variações de intensidade, serão obtidos um
número possivelmente grande de falsos positivos e falsos negativos para genes cujos níveis
de expressão sejam muito baixos ou muito altos, respectivamente. Esta é uma limitação do
algoritmo da qual é necessário estar consciente.
Para minimizar este efeito, são removidos do banco de dados aqueles elementos que
têm um nível de expressão muito baixo ou cujas variações de nível de expressão são não
significativas, podendo ser atribuídas a fatores tais como erro aleatório de medição,
conforme processo manual descrito abaixo.
Esta remoção não está relacionada com o fato dos elementos serem considerados
como “outliers”, mas sim com os conceitos biológicos associados à obtenção dos dados de
microarray.
Primeiramente, quando a expressão de um gene é muito baixa, existem problemas
de medição pois está é feita em termos de luminosidade. Ademais, tendo em vista que os
spots (local de cada gene) não são perfeitamente limitados geometricamente, é possível que
a superexpressão de um gene vizinho afete ligeiramente a expressão de um gene. Assim, se
esta expressão já era inicialmente baixa, este efeito pode afetar significativamente o valor
obtido.
Segundo, quando a expressão de um gene é muito baixa, certos efeitos estocásticos
do comportamento de moléculas de DNA passa a ser significativo. Existe uma tendência a
122
pensar que duas seqüências complementares de DNA sempre se ligam, mas isto não é
verdade. Esta ligação ocorrerá com uma probabilidade determinada que é afetada por vários
valores, entre os quais a temperatura do ambiente. Logo, se houver um baixo nível de
expressão, este pode ser afetado por estes fatores estocásticos e ter uma significância
menor.
Estes dois fatores justificam o trabalho de eliminação dos elementos de baixo nível
de expressão. Este trabalho é feito de forma manual, usando-se conhecimento prévio dos
biólogos, pois cada gene tem um nível distinto de expressão significativa. Para cada gene
deve ser estabelecido se seu nível de expressão é significativo, com base em informações
sobre seus níveis normais e nas variações esperadas quando ele está expresso.
Além disto, levando-se em consideração que os microarrays utilizados não medem o
nível absoluto de expressão, mas sim a variação da expressão relativa a um valor basal,
podemos ter variações não significativas, também devido aos valroes discutidos acima.
Assim, em discussões com biólogos, estabeleceu-se de forma ad-hoc um limite
mínimo de 0,3 para as variações de expressão a serem processadas pelo algoritmo. Este
limite corresponde a uma duplicação dos níveis de expressão, mudança esta que
necessariamente não pode se considerar como conseqüência de efeitos estocásticos, posto
que quando se aplica este limite, já se eliminou todos os elementos com níveis de expressão
pouco significativos.
Para efeitos ilustrativos, mencionamos que ao terminar este passo, no caso do maior
problema estudado nesta tese, o da resposta ao frio da Arabidopsis thaliana, a base original
que tem tamanho de 8000 X 7, passa a ter dimensões de 176 genes medidos durante 7
instantes de tempo, que não são tratáveis por métodos estatísticos tradicionais, mas que já
são perfeitamente adequadas para tratamento pelo algoritmo proposto nesta tese.
Este trabalho foi realizado na base completa, pois como o instante t é usado para
prever o instante t+1, se o instante t for retirado, não haverá como prever os valores de
expressão do estado t+1, inviabilizando testes do tipo n-fold.
123
5.2 Separando candidatos a regulador
Tendo em vista a alta dimensionalidade dos dados, seria interessante reduzir o
escopo de nossa busca, restringindo-a apenas a aqueles genes que se mostrem os candidatos
mais fortes a serem reguladores do gene em questão. Para tanto pode ser usada a correlação
entre as expressões.
A correlação não necessariamente implica em causalidade. Para determinar que
existe causalidade a partir de uma alta correlação, é necessário estabelecer que as mudanças
na variável que é dita de causa antecedem no tempo as mudanças da variável efeito, além
de adequar a hipótese da causalidade com o modelo teórico específico do fenômeno sendo
estudado.
Para determinar que a variável de causa antecede a variável de efeito, usa-se a
medida da correlação com atraso (MOORE et al., 2002). Esta se refere à correlação entre o
nível de expressão do gene de interesse em um determinado instante t (dito gene regulado)
com os níveis de expressão de todos os outros genes nos instantes t-∆t, ∀∆t=0,1,2,.... Isto
permite reduzir o número de candidatos a regulador, excluindo todos aqueles que não
demonstram possuir um relacionamento significativo com o gene regulado.
É importante entender que altas correlações também podem ser causadas por uma
resposta comum de duas variáveis a uma terceira que não esteja incluída no modelo.
Ademais, uma correlação baixa não necessariamente implica na ausência de causalidade,
devido ao efeito da confusão (MOORE et al., 2002). Este efeito é causado por uma terceira
variável, escondida ou não, que afeta a ação do gene regulador sobre o gene regulado,
modificando o resultado da regulação. Estes efeitos estão resumidos na figura 5-5.
Estes fatores levam à conclusão de que, ao usar esta técnica, corre-se o risco de
perder relacionamentos significativos entre genes. Entretanto, é um risco aceitável dado o
benefício que se terá ao obter um algoritmo que rode em um tempo computacionalmente
viável, além da própria questão da significância dos resultados. Tendo em vista que o
número de pontos (dimensão coluna da matriz de dados) é limitado, é importante limitar-se
o número de genes analisado (dimensão linha da matriz de dados).
124
Se a ordem de grandeza da matriz for drasticamente reduzida, pode-se até
considerar a utilização de métodos estatísticos.
Mesmo que estes métodos ainda não
possam ser utilizados devido à falta de dados, a limitação do número de elementos diminui
o número de graus de liberdade fazendo com que os resultados obtidos sejam mais
significativos.
Uma das maneiras com que se busca diminuir o número de falsos positivos que esta
hipótese fundamental pode gerar consiste em agrupar os elementos por nível de expressão
de forma a buscar relacionamentos significativos para vários elementos que supostamente
estejam sob o mesmo tipo de controle, conforme será descrito na seção a seguir.
Figura 5-5: Possíveis relacionamentos entre variáveis, de acordo com o nível de correlação apresentado.
5.3 Agrupamento
Agrupamento (clustering) consiste em particionar um determinado conjunto de
dados em grupos baseados em uma métrica baseada em uma ou mais características dos
dados de tal forma que todos os pontos em um determinado conjunto sejam mais similares
aos outros elementos do mesmo grupo do que a qualquer outro elemento de outro grupo do
universo.
Várias abordagens já foram propostas para este problema, usando-se diferentes
métricas e diferentes técnicas e algumas destas foram aplicadas a dados de expressão
gênica, se mostrando úteis para identificar agrupamentos biologicamente significativos de
125
genes e amostras, assim como para responder algumas questões sobre função de algum
gene, regulação e expressão diferenciada de genes em várias condições distintas.
Algoritmos de agrupamento se mostraram úteis para agrupar genes de funções
similares baseando-se nos padrões de expressão em várias amostras distintas, sejam de
tecidos ou de condições diferentes. Genes co-expressos encontrados no mesmo cluster
normalmente compartilham função ou se apresentam no mesmo caminho de regulação
(pathway).
Usando-se técnicas de agrupamento é possível juntar genes pouco conhecidos com
famílias de outros já bem estudados, o que pode ajudar a entender e/ou teorizar sobre as
funções de vários genes para existe pouca informação disponível a priori (JIANG et al.,
2002).
A abordagem discutida a seguir é baseada na hipótese de que genes que exibem o
mesmo comportamento estão sob o mesmo tipo de controle. Quando se lida com um
número limitado de medidas, pode-se acreditar nesta hipótese de forma errônea.
É possível que dois genes exibam um mesmo comportamento em um intervalo de
tempo limitado, dado um número pequeno de medidas (em instantes de tempo distintos),
mesmo que submetidos a estratégias de regulação diferentes. Isto decorre do fato de que
duas diferentes estratégias de regulação podem partir de um mesmo ponto e gerar a mesma
resposta.
Um exemplo trivial de tal problema consiste em observar dois genes que tenham as
seguintes estratégias de regulação:
gene1 =
x(t − 1) + y (t − 1)
, x ( 0) = 1
2
gene2 = 1, ∀t ≥ 0
Se for feito um acompanhamento da evolução dos dois elementos, os genes 1 e 2,
poderá se perceber que ambos se mantém constantes em 1. Um algoritmo de agrupamento
poderia supor que ambos estão sujeitos à mesma estratégia de regulação, o que obviamente
não é verdade. Este tipo de inferência errada poderia ser desfeita facilmente se fossem
obtidos mais trajetórias, com valores iniciais diferentes para o gene1, o que pode não ser
126
possível em situações reais. Isto quer dizer que esta hipótese deve conduzir a uma estratégia
que fornecerá alguns falsos positivos (aqueles para os quais parece haver uma estratégia de
regulação compartilhada, apesar de não haver).
Por outro lado, não há nenhuma razão para supor que tal estratégia nos conduza a
obter falsos negativos. Isto quer dizer que infelizmente as hipóteses geradas pelo algoritmo
aqui proposto não serão necessariamente todas consistentes, podendo haver a inferência
equivocada de participação de certos elementos em alguns caminhos regulatórios.
É importante lembrar, entretanto, que o objetivo proposto nesta aplicação é a
obtenção de um número pequeno de hipóteses plausíveis. A presença de falsos positivos
significa que será necessário um trabalho adicional para eliminá-los usando-se informações
e/ou experimentos adicionais.
Uma métrica freqüentemente utilizada para indicar a similaridade entre os níveis de
expressão e suas mudanças é o coeficiente de correlação (r) que é uma medida do grau de
relacionamento linear entre duas variáveis (geralmente chamadas de X e Y).
Enquanto que na regressão a ênfase era na predição de uma variável baseando-se em
outra, na correlação a ênfase é em detectar até que ponto um modelo linear pode descrever
o relacionamento entre duas variáveis. Na regressão, o interesse é direcional (há uma
variável predita e outra previsora), enquanto que na correlação o interesse é não direcional,
sendo o relacionamento o aspecto crítico a modelar (STOCKBURGER, 1996)
Usar valores de correlação também é interessante, pois pode gerar grupos com
interseção. O fato de que o gene1 está correlacionado com o gene2 em um certo grau e este
está correlacionado com o mesmo grau a um outro gene (gene3), não implica que este
último e o primeiro (gene1) estejam relacionados com este mesmo grau.
Um exemplo deste tipo de falta de transitividade da correlação pode ser vista através
de um conjunto de dados de valores de expressão criados artificialmente e sem relação com
exemplos anteriores, mostrados na tabela 5-1, cujo gráfico pode ser visto na figura 5-6.
127
gene1
gene2
Gene3
1
1,6
1,2
2
2,3
2,1
3
3,4
3,1
4
3
2,5
6
4,9
4,7
Tabela 5-1: Exemplo de valores de expressão criados artificialmente
As correlações entre estes elementos são as seguintes:
r(1,2)=0,955
r(2,3)=0,995
r(1,3)= 0,934
Se for estabelecido como limite mínimo de correlação entre os elementos o valor de
0,95, serão criados dois grupos para estes três genes, grupos estes cujos componentes são
respectivamente {1,2} e {2,3}.
Valores de Expressão
6
5
4
gene1
3
gene2
gene3
2
1
0
1
2
3
4
5
Instantes de tempo
Figura 5-6: O gráfico dos genes fictícios do exemplo. Podemos ver que as séries dos genes 2 e 3 mudam de
forma quase idêntica, o que justifica o valor de correlação muito próximo de 1.
Logo, pode-se criar um cluster para cada elemento da matriz, contendo todos os
elementos que estão fortemente correlacionados a um elemento de interesse, a ser
determinado pelo pesquisador que está usando este algoritmo.
Como pode ser visto no simples exemplo dado acima, estes clusters não serão
necessariamente disjuntos, o que é perfeitamente condizente com o fato já mencionado
128
anteriormente de cada gene estar envolvido em até dez diferentes processos regulatórios
dentro de uma célula (ARNONE et al., 1997, ALBERTS et al., 2002).
Neste momento o objetivo principal é diminuir a dimensionalidade do problema e
descobrir estratégias de controle. Baseado na nossa premissa de que genes que apresentam
o mesmo comportamento estão sob o controle do mesmo processo regulatório, pode-se
descobrir, usando técnicas de agrupamento, todos os genes que possuem o mesmo
comportamento do gene de interesse.
Usando-se a premissa fundamental, pode-se afirmar que qualquer estratégia
descoberta que funcione no gene de interesse também deve funcionar em todos os genes
pertencentes ao seu agrupamento.
Procurar então por estratégias de regulação que funcionem em todo o grupo de
genes ajuda a eliminar estratégias que funcionem bem apenas nos dados do gene de
interesse. Esta eliminação, por sua vez, fará com que os resultados obtidos sejam mais
próximos de estratégias que efetivamente se mostrem boas candidatas para teste em
laboratório.
A técnica usada para separar os elementos que apresentam o mesmo padrão de
expressão consiste em determinar qual é o elemento de interesse (aquele que se pretende
estudar) e depois estabelecer ad hoc um limite mínimo de correlação para que o elemento
entre no grupo em consideração.
Este é um limite crisp, ou seja, elementos que estejam imediatamente abaixo deste
valor de correlação não farão parte do grupo, apesar de seu valor de correlação poder ser
muito próximo a outros que eventualmente estejam presentes no grupo.
Um exemplo deste caso seria se fosse estabelecida uma correlação de corte de 0,95.
Elementos de correlação com o elemento em estudo igual a 0,9501 estariam presentes,
enquanto elementos com correlação igual 0,9499 estariam ausentes. Este tipo de problema é
inerente à técnica usada e não pode ser evitado.
É importante ressaltar que não se está falando do valor absoluto da correlação, mas
sim de seu valor real. Os elementos com valores de correlação negativos e próximos de
menos um estão quase que perfeitamente anti-correlacionados com o elemento de interesse
e poder-se-ia imaginar que sua estratégia de controle fosse exatamente a inversão da
129
estratégia usada para o elemento de interesse (se este fosse ativado por uma substância, os
elementos anti-correlacionados estariam inibidos pela mesma).
Entretanto, esta seria mais uma suposição ad-hoc e, no intuito de minimizar o
número de hipóteses em que os resultados se baseiam, decidiu-se por não se incluir os
elementos anti-correlacionados nos agrupamento obtidos.
Um exemplo de cluster gerado por nossa técnica está mostrado na figura 5-7. É
importante perceber que apesar dos níveis de expressão dos diversos genes serem
diferentes, os padrões de expressão de todos (a trajetória no tempo) é bastante similar.
Assim, para cada gene de interesse (o gene regulado) foi descoberto dentro do
conjunto de dados de microarray um grupo de elementos cujas trajetórias são similares
àquela do genes do interesse. Partindo-se do pressuposto de que genes com padrão de
expressão similar estão sob a mesma regulação, pode-se então aplicar o algoritmo
inteligente descrito nesta tese a todo o grupo simultaneamente.
Expression level (Fold change to
t=0)
25
13225_s_at
13950_at
20
14984_s_at
15
15997_s_at
16079_s_at
10
18594_at
19189_at
5
19190_g_at
0
-5
1
2
3
4
5
6
19322_at
20451_at
20457_at
Time step
Figura 5-7: Um dos clusters gerados pela aplicação da técnica de agrupamento nos dados de expressão da
Arabidopsis thaliana.A abcissa corresponde ao instante da medida, enquanto que a ordenada corresponde ao
nível de expressão dos genes. Cada linha corresponde ao padrão de expressão de um gene distinto, cujo
nome está descrito na tabela ao lado do gráfico. Pode se perceber que, apesar dos níveis de expressão dos
vários genes serem distintos, o formato da curva dos genes pertencentes a este grupo são semelhatnes,
correspondendo a uma subida até o instante 5, quando o nível de expressão começa a cair.
130
5.4
Incorporando
conhecimento
existente
Um grande problema da maioria das técnicas modernas de extração de dados a
partir de experimentos biológicos (de microarray ou de outros) consiste no fato em a
maioria destas técnicas que na maioria das vezes não incorporam nenhum ou quase nenhum
conhecimento pré-existente, baseando-se apenas nos dados disponíveis (SCHRAGER et
al., 2002).
Um exemplo deste tipo de comportamento consiste nas técnicas de agrupamento,
que simplesmente separam os dados de acordo com seus perfis de expressão, sem utilizar
qualquer informação adicional.
A utilização exclusiva dos dados como fonte de descobertas não condiz com a
maneira como os biólogos trabalham. Estes profissionais costumam apoiar-se firmemente
no conhecimento pré-existente para desenvolver modelos e testar estes modelos contra os
dados disponibilizados pelas técnicas modernas.
Este conhecimento pré-existente não pode ser desprezado. Em várias situações,
existem modelos parciais de regulação já comprovados em diversos experimentos em
laboratório. Assim, seria interessante usar os dados disponíveis em laboratório para testar e
estender estas hipóteses criadas pelos biólogos.
Ademais, a busca cega pode ser interessante para se testar uma técnica para tentar
determinar se ela consegue descobrir certos relacionamentos fundamentais previamente
conhecidos, mas não é uma estratégia eficiente de descoberta de novos relacionamentos de
uma rede de regulação genética, pois a existência de relacionamentos prévios cria précondições e limita o espaço de busca, permitindo que nós façamos uma busca muito mais
eficiente do que se nós os ignorássemos.
Ademais, algoritmos de busca cega normalmente não incluem mecanismos para
inclusão de conhecimento prévio para direcionamento da busca, o que faz com que
normalmente este tipo de conhecimento seja simplesmente desprezado.
131
Assim sendo, nossa técnica permite a incorporação de conhecimento pré-existente,
através da utilização de uma interface própria. Conforme veremos na seção de resultados, a
incorporação de conhecimento prévio serve também como forma de validação de modelos
biológicos existentes.
5.5 Resultados
Para testar nosso algoritmo, nada melhor do que usar conjuntos de dados reais e
verificar os resultados contra conhecimento biológico pré-existente. Para fazê-lo, então,
usamos dois conjuntos de dados: um referente à resposta ao frio por parte da planta
Arabidopsis thaliana e outro que consiste na expressão dos genes de uma determinada
família no desenvolvimento do sistema nervoso central de ratos.
Em todos os resultados mostrados a seguir foi usado um critério de terminação
baseado no número de gerações (máximo de 80 gerações por rodada), estagnação (paramos
o algoritmo se a melhor solução estagnasse por 10 gerações) e qualidade da solução
(interrompeu-se a execução quando o erro do casamento dos dados fosse menor ou igual
que 0.001).
É usada uma roleta para selecionar os operadores. O crossover recebeu uma
probabilidade inicial de 0,95 enquanto que os três operadores de mutação receberam uma
fitness igual a 1 – fitness do crossover.
Os operadores recebem probabilidades distintas para que se possa fazer com que o
operador mais útil em determinado momento seja selecionado de forma mais frequente. No
início da execução, enquanto a população é muito variada, é importante que o operador de
crossover predomine, para combinar o material genético das melhores soluções. Entretanto,
após um grande número de rodadas, a população sofrerá os efeitos da convergência
genética, comum a populações fechadas que reproduzem, o que faz com que o operador de
mutação seja mais proveitoso na melhoria genética da população.
Uma vez selecionado o operador de mutação, haveria um segundo sorteio para
determinar qual dos três (alteração aleatória, inserção de regra ou exclusão de regra) seria
132
escolhido, na qual o operador de mutação de alteração aleatória de uma regra receberia uma
chance de 60% enquanto que os outros dois operadores receberiam uma chance de 20%
cada.
Uma vez escolhido, o operador de mutação de alteração aleatória alteraria cada
ramo de uma árvore com probabilidade de 5%. Esta probabilidade é bastante alta para os
padrões da literatura, mas esta normalmente utiliza o operador de mutação em tandem com
o operador de crossover. No nosso caso eles estão competindo entre si e o operador de
alteração aleatória ainda compete com outros operadores de mutação, o que diminui
sobremaneira a taxa efetiva de mutação.
A probabilidade do operador de crossover foi colocada como linearmente
decrescente até que na rodada final sua fitness fosse de 0,2 (a dos operadores de mutação se
manteve linearmente crescente, sempre sendo equivalente a 1 – probabilidadecrossover, como
é possível ver na figura 5-8).
Cada população consistiu de 100 indivíduos e foi usado um módulo de população
elitista que transfere as melhores 2 soluções da geração atual para a próxima e permite que
as outras 98 soluções estejam sujeitas à substituição por indivíduos gerados através da
Fitness
aplicação dos operadores genéticos.
1
0,9
0,8
0,7
0,6
0,5
0,4
0,3
0,2
0,1
0
Fitness Crossover
Fitness Mutação
0
20
40
60
80
100
Geração
Fig 5-8 → Evolução da fitness dos operadores usados no nosso programa genético
133
Em ambos os exemplos descritos a seguir o algoritmo proposto foi executado 10
vezes e os dois melhores resultados de cada rodada foram usados como sementes de
inicialização para a 11a rodada, cujos resultados são os mostrados neste documento.
Esta abordagem pode ser considerada como “otimista”, sendo que alguns poderiam
apontar para o uso da média dos melhores resultados como uma métrica mais adequada.
Entretanto, é praxe, no ramo dos AE, utilizar o melhor resultado entre aqueles obtidos, pois
não faz sentido obter uma boa solução para o problema e utilizar outra solução pior.
Outro ponto a ressaltar é que quando se executam múltiplas rodadas de um AE, os
valores de variância e desvio padrão do erro para um AE têm a tendência de serem
elevados, dada a influência de fatores estocásticos na inicialização e evolução da
população. Estes valores, por conseguinte, não agregam informação, e mesmo que sejam
baixos, não são bons indicativos do desempenho do AE em um problema novo que
proventura surja.
São mostrados os resultados da divisão do espaço de expressão (universo de
discurso) de cada gene em 3 conjuntos fuzzy distintos. Foi tentada também a divisão do
universo de discurso em 2, 5, 7, 11 e 15 conjuntos fuzzy. Entretanto, nenhuma melhora
significativa nos resultados foi obtida. Nos casos de 5 regras ou mais, é provável que haja
um over-fitting dos dados sem aprendizado do processo subjacente, sem contar que o
número de regras com ativação zero cresce. Para cada conjunto foi permitido um máximo
de 2 regras por conjunto fuzzy.
Posteriormente foi desenvolvido um mecanismo simplificador de pré-condições
baseado no mecanismo de expressões regulares do PERL que corta expressões
desnecessariamente longas (tais como A AND A) e as substitui pela sua forma mais
simples (no caso do exemplo, A). As regras mostradas aqui já passaram por este
mecanismo de simplificação, mas o algoritmo originalmente gera várias regras com
características repetidas.
134
5.5.1 Resposta ao frio da Arabidopsis thaliana
O primeiro conjunto de dados que utilizamos foi gerado por experimentos de
microarrays, consistindo na expressão de todos os genes da planta Arabidopsis thaliana
(cerca de 8000 no total) em um número limitado de instantes de tempo (no nosso caso, 7
apenas). Nosso objetivo primoridal consistia em utilizar nosso algoritmo para realizar uma
busca pela regulação de alguns elementos específicos dentro do conjunto de genes
disponíveis, mais especificamente aqueles envolvidos na resposta desta planta ao frio.
É importante ressaltar um fato que já mencionamos anteriormente: que estes valores
de dimensões são comuns no campo da biologia. Como os experimentos de microarrays
analisam até milhares de dados simultaneamente, temos milhares de linhas em nossa matriz
de dados. Entretanto, sua realização é cara, é comum que sejam realizados poucos
experimentos, resultando em um baixo número de colunas (normalmente, na ordem das
unidades ou das dezenas). Assim, concluímos que o exemplo usado aqui é representativo
do tipo de problema que estamos procurando enfrentar.
É óbvio que nenhuma das técnicas estatísticas bem estabelecidas, tais como análise
de covariância ou outros métodos de regressão, linear ou não linear, seria capaz de extrair
relacionamentos significativos a partir de dados tão escassos, posto que elas necessitam de
conjuntos de tamanho estatisticamente significativo para trabalhar. Logo, a aplicação de um
algoritmo como o proposto aqui, que é capaz de lidar com dados tão esparsos, mostra-se
uma alternativa interessante.
Existem três aspectos fundamentais na resposta às reduções de temperatura:
aclimatação (aumento na tolerância ao frio), invernalização (redução no tempo de
inflorescência) e estratificação (fim da latência das sementes induzida pelo frio). Todos os
três são resposta básicas de uma planta ativadas pelas baixas temperaturas e são, em grande
parte, determinadas pelas alterações dos padrões de expressões genéticos quando uma
planta está submetida a baixas temperaturas (GILMOUR et al., 1998).
Dentro desta resposta, existem alguns genes que a pesquisa identificou como parte
dos elementos reguladores fundamentais. Estes genes são 16062_s_at, 17520_s_at e
135
16111_f_at, enquanto que os genes controlados por estes, nós temos 15611_s_at,
15997_s_at, 13018_at e 13785_at.
Assim, obtemos um problema previamente identificado para que possamos testar a
aplicabilidade de nosso algoritmo, que consiste em tentar identificar os genes reguladores
dos elementos pertencentes à lista dos controlados acima.
Aplicamos então nosso algoritmo para os dois últimos elementos desta lista
(13018_at e 13785_at), conforme descrito nas seções anteriores. Inicialmente, não usamos
nenhum tipo de conhecimento prévio que poderia privilegiar os reguladores conhecidos.
Usamos os critérios descritos anteriormente para controlar o fim da execução de nosso
programa.
Foram testados diferentes números de divisões do intervalo de expressão em
conjuntos fuzzy e os resultados semelhantes foram obtidos para o número de conjuntos
igual a 3 ou 5, dando-se preferência ao primeiro conjunto dado que por ter menos regras,
mostra-se mais simples e compreensível para o usuário que recebe o resultado.
A escolha do número de conjuntos fuzzy por variável, especialmente no caso do
elemento cuja regulação está sendo buscada, é uma questão fundamental: aumentar o
número de regras também poderia resultar em um casamento mais perfeito do padrão, mas
tendo em vista que o resultado busca oferecer hipóteses para uso de um investigador, a
simplicidade é um dos objetivos a serem perseguidos. Ademais, sabe-se que o número
médio de elementos controladores em células eucarióticas varia de 5 a 6, dependendo do
organismo (ARNONE et al., 1997), e nós procuramos fazer com que nossa base de regras
contivesse um número próximo destas médias, para ser mais significativo biologicamente.
Para números maiores de conjuntos, percebeu-se uma significativa degradação da
desempenho de nosso algoritmo. Esta degradação pode ser devida ao aumento do espaço de
busca. Assim, sendo um número maior de gerações e rodadas poderia permitir a obtenção
de resultados superiores (que obtivessem uma mlehor identificação do padrão de
expressão). Entretanto, os resultados obtidos com um número menor de conjuntos foi
satisfatório, chegando a uma aproximação da ordem de 98% do padrão de expressão dos
genes em questão. Assim, não prolongou-se esta linha de pesquisa de forma desneessária.
Para o elemento 13875_at o algoritmo evolucionário proposto nesta tese forneceu
como resultado o conjunto de regras fuzzy exibido na tabela 5-2 a seguir.
136
(a) SE Baixo_Nível(17413_s_at) AND NOT Alto_Nível(16111_f_at) ENTÃO
Baixo_Nível(13785_at)
(b) SE NOT Médio_Nível (15714_at) ENTÃO Baixo_Nível(13785_at)
(c) SE NOT Médio_Nível (17834_at) ENTÃO Baixo_Nível(13785_at)
(d) SE Baixo_Nível (17421_s_at) ENTÃO Médio_Nível(13785_at)
(e) SE Médio_Nível (16062_s_at) ENTÃO Médio_Nível(13785_at)
(f) SE
Baixo_Nível(17050_s_at)
OR
Alto_Nível(16062_s_at)
ENTÃO
Alto_Nível(13785_at)
(g) SE Médio_Nível (17034_s_at) ENTÃO Alto_Nível(13785_at)
(h)
SE NOT [Alto_Nível(16062_s_at) OR Baixo_Nível(15140_s_at)] ENTÃO
Alto_Nível(13785_at)
Tabela 5-2: Conjunto completo de regras obtidas para o gene 13875_at. Dividiu-se o universo de discurso
desta variável em 3 conjuntos fuzzy e definiu-se o número médio de regras por conjunto em 2. O operadores
de mutação de inserção e de exclusão alteram este número e o resultado foi um conjunto com um total de 8
regras.
Os resultados descritos acima são interessantes, apresentando as seguintes
características notáveis:
•
As regras (a), (e) e (f) apresentam relacionamentos com reguladores conhecidos.
•
A regra (g) apresenta um novo regulador (17034_s_at) que foi considerado interessante
por pesquisadores ligados ao estudo da Arabidopsis thaliana para que novos estudos
fossem realizados em um futuro próximo.
•
As regras (f) e (h) mostram a presença dos elementos 15140_s_at e 17050_s_at que
possuem alta correlação com o elemento 17520_s_at, elemento este que, apesar de ser
um regulador conhecido, não estava presente em nossas regras. Este tipo de problema
deve ser esperado devido ao pequeno número de pontos conhecidos, o que leva a
qualquer tipo de afirmação sobre a presença destes genes na base de regras de regulação
ser prematura.
Depois do sucesso desta investida inicial nós realizamos uma busca usando o nosso
algoritmo para uma regulação para o gene 13018_at, outro que está envolvido na resposta
ao frio. Desta vez, para testar mais nosso programa, nós pedimos para que fosse
137
necessariamente incluída uma ativação por parte do gene 17520_s_at e, preferencialmente,
uma inibição por parte do gene 16111_s_at. Isto serve como teste para o mecanismo de
inserção de conhecimento prévio.
Um relacionamento de ativação de um gene X para um gene Y pode ser inserido
pedindo-se para o programa inserir o conjunto fuzzy Alto(X) como pré-condição de uma
das regras escolhidas para o conjunto Alto(Y), enquanto que uma inibição pode ser
coseguida através da inserção do mesmo conjunto fuzzy Alto(X) como pré-condição do
conjunto Baixo(Y).
O programa permite que sejam incluídos relacionamentos mandatórios (que têm que
estar presentes no conjunto final de regras), como foi feito no caso do gene 17520_s_at, ou
preferenciais (cuja presença no conjunto final de regras é desejável, mas não obrigatória),
como no caso do gene 16111_s_at. Estes dois genes reguladores foram escolhidos de forma
aleatória entre os genes reguladores conhecidos. Usando o mesmo tipo de algoritmo
descrito para o elemento 13875_at, as regras obtidas são aquelas descritas na tabela 5-3 a
seguir.
(a) SE
Baixo_Nível(17520_s_at)
OR
Alto_Nível(20351_at)
ENTÃO
Baixo_Nível(13018_at)
(b) SE NOT [Médio_Nível(14969_at) OR Baixo_Nível(17034_s_at)] ENTÃO
Baixo_Nível(13018_at)
(c) SE Médio_Nível (13018_at) ENTÃO Lowly_Medium(13018_at)
(d) SE Baixo_Nível (17421_s_at) AND Alto_Nível(16218_s_at) ENTÃO
Médio_Nível(13018_at)
(e) SE Médio_Nível (1611_s_at) AND
Médio_Nível(17200_at) ENTÃO
Médio_Nível(13018_at)
(f) SE Baixo_Nível(17034_s_at) AND NOT Alto_Nível(14832_at) ENTÃO
Alto_Nível(13018_at)
(g) SE Alto_Nível (17520_s_at) ENTÃO Alto_Nível(13018_at)
Tabela 5-3: Conjunto de regras obtidas para o gene 13018_at.
138
Os resultados obtidos acima acusam a presença do relacionamento requerido com o
gene 17520_s_at nas regras (a) e (g). O relacionamento preferencialmente escolhido, com o
gene 16111_s_at também está presente na regra (e). O gene 17034_s_at, considerado como
um achado promissor nas regras anteriores, foi novamente encontrado neste conjunto de
regras.
5.5.2 Sistema nervoso central de ratos
O segundo conjunto de dados utilizados para testar nosso programa foi aquele
obtido pela expressão da rede de regulação genética do sistema nervoso central (SNC) de
um rato durante seus estágios embrionário e de recém nascido.
A Carboxilase do Ácido Glutâmico (GAD) que é a enzima responsável pela
conversão do ácido glutâmico em ácido gama-aminobutírico (GABA), sustância esta que é
o principal transmissor inibidor nas regiões superiores do cérebro e um hormônio putativo
no pâncreas. As duas formas molecular do GAD (respectivamente com 65kD e 67kD), que
têm 64% de aminoácidos idênticos, são altamente conservadas e expressas no SNC,
pâncreas, testes e ovário, tendo um importante papel no desenvolvimento do SNC.
D’HAESELEER et al. (2000) mostra os relacionamentos mais prováveis dos
elementos GAD65 e GAD67 em um diagrama que podemos ver na figura 5-9. Usando estes
relacionamentos como objetivo máximo, nós aplicamos o nosso algoritmo para a
determinação da rede de regulação do elemento preGAD67. Este elemento, além de ser
instrumental na formação do elemento GAD67, é altamente conectado, tendo 5 entradas
teorizadas, o que faz dele um candidato interessante para nosso algoritmo.
139
Fig 5-9 → O diagrama de interação genética, conforme mostrado em (D’HAESELEER et al., 2000).As linhas
pontilhadas indicam inibição, enquanto que as linhas inteiriças indicam a existência de um relacionamento
de ativação entre o gene de origem da seta e o gene de destino desta.
Executando o programa implementado para esta tese da mesma forma que o
descrito na seção anterior, foi obtido o conjunto de regras descrito na tabela 5-4, que é
representado graficamente pela figura 5-10.
Figura 5-10 → Representação gráfica das regras descritas pelo conjunto de regras da tabela 5-4. As setas
seguem o padrão descrito na figura 5-9 (linhas inteiras para ativação, linhas tracejadas para inibição). Os
relacionamentos foram extraídos baseado no pressuposto de que se um alto nível do gene X implica em um
baixo nível de pre-GAD67, então o relacionamento é de inibição. Todos os outros relacionamentos foram
considerados como sendo de ativação.
140
(a) SE Baixo_Nível(5HT2) AND Médio_Nível(cellubrevin) ENTÃO
Baixo_Nível(pre-GAD67)
(b) SE Alto_Nível (GAD65) ENTÃO Baixo_Nível(pre-GAD67)
(c) SE Baixo_Nível (pre-GAD67) ENTÃO Baixo_Nível(pre-GAD67)
(d) SE Baixo_Nível (GRg3) ENTÃO Baixo_Nível(pre-GAD67)
(e) SE Médio_Nível (GRa3) ENTÃO Médio_Nível(pre-GAD67)
(f) SE Alto_Nível (GAD65) ENTÃO Médio_Nível(pre-GAD67)
(g) SE Baixo_Nível (GRb3) ENTÃO Alto_Nível(pre-GAD67)
(h) SE Baixo_Nível (GRa4) ENTÃO Alto_Nível(pre-GAD67)
(i) SE Baixo_Nível (GRa3) ENTÃO Alto_Nível(pre-GAD67)
Tabela 5-4: Conjunto de regras obtidas para o gene pre-GAD67
Estas regras apresentam alguns resultados notáveis, descritos a seguir:
1. O GAD65, que é colocado como um repressor, aparece em duas regras na base acima:
primeiro na regra (b), na qual sua alta expressão induz uma baixa expressão de preGAD67, o que é um forte comportamento inibitório, e na regra (f) na qual encontra-se
que sua alta expressão induz um médio nível de expressão de pre-GAD67, o que é um
comportamento levemente inibitório. É óbvio que esta segunda regra poderia ser
encarada também como uma leve forma de ativação, mas, combinada com a regra
anterior, leva a um comportamento fortemente inibitório.
2. Outro repressor putativo, GRa3, aparece com um relacionamento semelhante ao do
GAD65, como podemos ver nas regras (e) e (i). Nesta última regra temos um claro
exemplo de comportamento inibidor, pois a ausência de Gra3 (indicada pela précondição de existência de um baixo nível de expressão deste gene) implica na forte
expressão do gene de interesse.
3. O pre-GAD67 tem um mecanismo putativo de ativação que foi descoberto pela regra
(c). Entretanto, usar esta regra como um sucesso de nosso algoritmo é algo temerário,
visto que um elemento sempre demonstra uma alta correlação consigo próprio. Assim,
regras que incluam o próprio elemento, especialmente como a regra (c), que prediz um
baixo nível de expressão a partir de outrobaixo nível de expressão, aparecerão de forma
141
freqüente e a não ser que o conhecimento prévio diga o contrário, devem ser
desconsideradas.
4. A regra (d) mostra outro relacionamento putativo dscoberto pelo nosso programa,
através da correta previsão de um relacionamento de ativação por parte do gene GRg3.
Um baixo nível de um ativador necessário implicará em um baixo nível de expressão do
gene de interesse na maioria das situações. Isto só não é totalmente verdade quando
existe um relacionamento sigmoidal ou exponencial entre o gene regulado e o
regulador, quando a presença de poucas moléculas deste último causarão a forte
expressão do primeiro. Entretanto, pela natureza de nosso algoritmo, e pelo fato de nós
desprezarmos os elementos com baixíssimos nívis de expressão (como descrito
anteriormente na seção sobre pré-processamento de dados), este tipo de relacionamento
não é captado pelo nosso algoritmo.
5. O gene GRa4 é inibido pelo preGAD67. Entretanto, apesar do algoritmo captar o
relacionamento de inibição entre os dois genes, este foi invertido. Isto provavelmente
poderia ser remediado com mais dados.
Estes resultados são interessantes, pois dos sete candidatos presentes na base de
regras retornada por nosso algoritmo (5HT2, cellubrevin, GAD65, pre-GAD67, GRg3,
GRa3, GRb3 e GRa4), quatro deles estão presentes na lista de reguladres putativos do
preGAD67.
Para demonstrar a capacidade de modelagem das regras expostas anteriormente, são
mostradas na figura 5-11 as trajetórias reais e calculadas do GAD67. Apesar de haver
algumas diferenças de níveis de expressão a forma das trajetórias é seguida de forma
precisa. Isto sugere que a regulação tenha sido capturado de forma correta e que o processo
subjacente aos valores de expressão tenha sido modelado de forma razoavelmente precisa.
Assim, pode-se concluir que estas bases de regras são candidatas promissoras a
maiores avaliações, devendo ser testadas contra novas bases de dados e eventualmente
levadas às bancadas de laboratórios, para a realização de experimentos mais específicos que
possam validar seu valor.
Os resultados individuais de cada regra foram mostrados na figura 4-8 como
demonstração dos critérios de parada usados pelo algoritmo e merecem uma discussão
142
especial. O melhor resultado obtido obteve uma avaliação de 105, que corresponde a um
erro de aproximadamente 1% em cada ponto da trajetória.
A pior das rodadas obteve avaliação igual a 21, o que corresponde a um erro de
aproximadamente 5% em cada ponto da trajetória. A média global das avaliações ficou em
58,5, com desvio padrão de 28,9. Esta alta dispersão confirma o que foi discutido na seção
introdutória sobre algoritmos genéticos: não é razoável esperar que todas as rodadas
obtenham um bom resultado. Ademais, tendo em vista o uso dos melhores indivíduos de
cada rodada como inicialização da última rodada, é de se esperar que esta tenha uma
avaliação superior à melhor de todas as outras rodadas.
Validar o algoritmo genético pela média de suas rodadas é similar ao conceito de
validação do método de Newton-Raphson com inicialização aleatória aplicado a uma
função multi-modal (RUGGIERO et al., 1996). Em execuções distintas, como inicialização
em diferentes pontos do espaço de busca, este método encontrará máximos distintos (locais
e/ou global). Entretanto, o resultado final não consiste em calcular a média dos máximos
encontrados, mas sim retornar o maior dos máximos encontrados. Pode-se traçar um
paralelo entre o paradigma de utilização deste algoritmo e o padradigma dos algoritmos
evolucionários - o fato de que haverá uma dispersão dos resultados de várias rodadas é
uma característica inerente ao uso destes que deve ser conhecida a priori aqueles que
desejem usá-los e não algo que os desabone como método.
5.6
Comentários
gerais
sobre
a
aplicação de engenharia reversa
Este modelo apresenta resultados interessantes quando lidando com dados esparsos
como os provenientes de microarrays. Os resultados mostrados nesta tese assemelham-se
sobremaneira àqueles conhecidos pelo biólogo e existe uma perspectiva interessante para
143
que o programa criado para esta tese transforme-se em uma ferramenta verdadeiramente
útil para que biólogos gerem hipóteses testáveis em bancada.
Os relacionamentos regulatórios encontrados neste trabalho provavelmente não
seriam descobertos por outros modelos, devido ao grande número de genes e o pequeno
número de pontos, que inviabiliza métodos estatísticos tradicionais, além de outros métodos
que requerem uma grande quantidade de dados, como redes neurais.
Entretanto, quando houver pontos suficientes para tanto, acreditamos que métodos
estatísticos estabelecidos ou quaisquer outros dependentes de grande quantidade de dados
devem ter a preferência sobre nosso algoritmo, que na verdade é uma heurística e, como
tal, tem um grau de confiabilidade menor.
1,6
1,4
1,2
1
0,8
0,6
0,4
0,2
0
1
2
3
4
5
6
7
8
9
Fig 5-11 → Trajetórias calculada (quadrados) e real (losângulos) para o preGAD67 no sistema nervosa
central de ratos em estágios iniciais de desenvolvimento. No eixo das abcissas, têm-se os instantes de tempo
em que as medidas foram efetuadas, enquanto que no eixo das coordenadas estão os valores de expressão do
gene estudado. As curvas são semelhantes e mesmo nos pontos de divergência o formato das curvas é similar.
Ademais, posto que nossas conclusões são baseadas em uma quantidade de dados
que não é estatisticamente significativa, é possível, e até provável, que nosso método
obtenha em várias situações resultados espúrios, especialmente falsos positivos. Por
conseguinte, deve ficar claro que o objetivo do nosso algoritmo consiste em encontrar
candidatos interessantes para verificação posterior, e não resultados finais mostrando a
regulação real de certos genes de interesse. É óbvio que a intervenção de um investigador
qualificado sempre se mostrará necessária ao fim da execução de nosso programa.
Outro ponto a ser levado em consideração é que, como mencionamos anteriormente,
métodos dependentes apenas de dados não são a solução final para nenhuma aplicação em
144
bioinformática. Deve-se sempre procurar incluir o máximo possível do conhecimento
disponível na biologia para que nossos modelos sejam mais completos.
Um exemplo desta questão é o ponto onde escolhemos os candidatos a reguladores
que serão testados. Neste trabalho nós usamos apenas os dados (somente aqueles que têm
níveis de expressão significativos) e conhecimento prévio das regulações existentes, no
caso da Arabidopsis thaliana. Entretanto, existem maneiras mais interessantes de se fazer
esta escolha que mereceriam um estudo posterior.
Uma delas seria deixar como candidato a regulador somente aqueles elementos
cujas seqüências apresentassem um domínio de ligação. Domínios de ligação são elementos
fortemente estudados na área da biologia e correspondem a seqüências de aminoácidos que
têm características físicas especiais que permitem que as proteínas se liguem ao DNA,
passo primordial para que a regulação tenha efeito. Assim, se um elemento não possui um
domínio de ligação podemos afirmar com certeza que ele não tem função regulatória.
Existem vários trabalhos que mostram algoritmos computacionais para o
reconhecimento de domínios de ligação. DODD et al. (1990) e PIETROKOVSKI et al.
(1997) descrevem técnicas algorítmicas para o reconhecimento de domínios helix-turnhelix e o trabalho descrito em (OHLER, 2002). Embutir eses trabalhos dentro de nosso
algoritmo significaria uma pré-seleção mais eficiente que seria tão eficiente quanto o
método atual em termos de diminuição da dimensão do espaço de busca mas com a
presença apenas de elementos que são candidatos a reguladores mais prováveis.
O único problema deste ganho é que a descoberta de promotores é um ramo de
pesquisa por si só, o que é claramente representado pelo fato de um dos trabalhos que
citamos acima ser uma tese de doutorado. Além dos trabalhos já citados, existem vários
outros já feitos, mas a análise de todos os trabalhos ainda não é 100% precisa, o que efz
com que se optasse pela sua não aplicação neste instante.
Além da complexa biologia dos promotores merecer ampla discussão, omitida aqui,
existem vários fatores estocásticos ou não que implicam no uso de técnicas tais como
Cadeias de Markov, Redes Bayesianas ou Redes Neurais para a realização deste trabalho, e
nenhuma delas consegue 100% de precisão na descoberta de promotores. É óbvio que o
fato de tal avanço ser conseguido apenas a custa de muitos esforços não desmerece a sua
aplicação, mas implica sim na impossibilidade de sua aplicação no âmbito deste trabalho.
145
Outro avanço interessante quando lidando com o problema de regulação celular
consiste em que se possa lidar com as questões dos diferentes atrasos, e tempos de
degradação dos diferentes reguladores, além da questão da assincronia da atuação entre os
mesmos, mas nosso modelo ainda não é capaz de fazê-lo. Isto afeta sobremaneira o
resultado do sistema. Entretanto, nosso algoritmo só é capaz atualmente de realizar
alterações síncronas o que afeta a sua capacidade de modelagem. Apesar dos resultados
obtidos com este modelo simplificado serem já interessantes, pode-se considerar o
desenvolvimento de modelos futuros (e mais analíticos) deste problema que possam tentar
resolver este tipo de questão.
146
Capítulo 6 - Conclusão e
Trabalhos Futuros
Neste capítulo serão discutidos os resultados obtidos nas duas áreas de aplicação do
algoritmo proposto nesta tese, incluindo suas qualidades e limitações. Ao final desta
discussão, serão apresentadas algumas idéias de como o trabalho desenvolvido aqui poderia
ser incrementado de forma que os resultados obtidos melhorem e se tornem mais
significativos.
6.1 Algoritmo Proposto
Esta tese apresentou e estudou o problema de obtenção de conhecimento de fontes
escassas de dados que possivelmente incorporam valores numéricos e categóricos, de forma
que este conhecimento seja claro e compreensível para o usuário final da informação.
Apresentou-se um algoritmo evolucionário para o desenvolvimento de bases de
regras fuzzy que foram aplicados em uma série de problemas importantes que não possuem
boas soluções na literatura.
147
O algoritmo apresentado aqui possui um tempo de execução longo, que foi
compensado pela qualidade dos resultados obtidos, tanto em termos de precisão como de
compreensibilidade dos resultados.
Esta deriva do fato de que a lógica fuzzy trabalha com termos lingüísticos que são
usados no discurso cotidiano. Em outras palavras, o formato de regras fuzzy permite que os
resultados sejam compreendidos mais facilmente em comparação com outros métodos
amplamente difundidos, tais como máquinas de vetor de suporte (ONODA et al., 2001;
AUER et al, 2002), métodos de clustering (KAWAJI et al., 2001; Hanisch et al., 2002) e
métodos matriciais (VAN SOMEREN et al., 2000), cujos resultados apresentam um bom
grau de precisão, mas que, do ponto de vista da pessoa que recebe seus resultados (o
usuário final dos dados), são caixas-pretas.
Em contrapartida, o método aqui proposto apresenta seus resultados em um formato
de regras que segue o padrão lingüístico usualmente adotado pelas pessoas, o que facilita
sua compreensão e a sua usabilidade posterior.
Outro ponto importante apresentado aqui foi a possibilidade demonstrada neste
trabalho de incorporar conhecimento pré-existente para diminuir o espaço de busca do
algoritmo.
O uso de regras fuzzy tem uma vantagem inerente sobre os modelos baseados em
equações diferenciais, tais como apresentados em (CHEN et al., 1999; SAKAMOTO et al.,
2001), por exemplo. Estes últimos são dependentes de parâmetros específicos e obtêm
resultados que podem divergir da realidade se estes parâmetros tiverem um pequeno erro. A
lógica fuzzy é menos sujeita a estes erros, tendo em vista que pequenas mudanças em
parâmetros numéricos, tais como os conjuntos fuzzy, não causam alterações bruscas nos
resultados obtidos.
Esta propriedade também é denominada robustez e é uma característica inerente dos
algoritmos fuzzy, ao passo que é necessário provar a robustez de outros tipos de algoritmos.
Pequenas variações em parâmetros de modelos matriciais ou diferenciais causam a
modificação das matrizes básicas do sistema, podendo alterar dramaticamente sua
dinâmica. No caso fuzzy, tendo em vista sua estrutura pseudo-lingüística, pequenas
alterações em parâmetros como conjuntos ou nas condições iniciais do sistema vão causar
148
perturbações de magnitude semelhante no desenvolvimento do mesmo, sem alterações
consideráveis na sua dinâmica.
Outra vantagem do modelo aqui utilizado é que ele pode incorporar diretamente
dados Booleanos, analisando-os sem dificuldades adicionais. Isto se torna mais difícil para
os modelos diferenciais uma vez que dados Booleanos são inerentemente discretos e como
tal não possuem derivadas que possam ser incorporadas aos modelos envolvendo equações
diferenciais contínuas.
6.2 Aplicações em Bioinformática
As aplicações biológicas já mencionadas são os resultados mais significativos
apresentados nesta tese. Usando apenas a implementação do algoritmo apresentado e um
conhecimento pré-existente da biologia, representado em forma de regras de regulação,
conseguiu-se descobrir, entre um pequeno número de candidatos a regulador, aqueles genes
que pertencem ao processo regulatório de genes de interesse, fato confirmado por
experimentos biológicos (GILMOUR et al., 1998).
Os resultados obtidos aqui devem ser compreendidos como uma demonstração de
que é possível orientar a pesquisa para determinados candidatos mais promissores, evitando
uma busca cega e dispendiosa.
Entretanto, posto que os resultados são baseados em uma quantidade de dados
pequena e não estatisticamente relevante, é possível que alguns resultados espúrios tenham
sido obtidos, especialmente em termos de falsos positivos. Dado o tamanho dos conjuntos
de dados com que se trabalhou, qualquer método teria este problema, que tende a diminuir
com o aumento do número de trajetórias.
Mesmo levando em consideração estas limitações inerentes aos conjuntos de dados
utilizados, é importante ressaltar que os resultados obtidos apontam para uma eficiente
descoberta de candidatos a reguladores, posto que até 99,9% dos genes não reguladores
foram eliminados do conjunto de resultados, no caso da análise dos dados da Arabidopsis
thaliana.
149
Ademais, dentro dos resultados obtidos encontram-se aqueles genes pelos quais se
estava buscando inicialmente, isto é, aqueles genes cujo envolvimento na resposta ao frio é
conhecida de antemão (GILMOUR et al., 1998). Isto significa que com a execução do
algoritmo apresentado, utilizando os dados de apenas um experimento de microarray, pôdese obter resultados que, se transplantados para um laboratório de biologia, poderiam guiar
uma pesquisa de forma que os microarrays realizados a seguir testassem os relacionamentos
mais promissores, o que permitiria que se obtivesse resultados mais rapidamente e com um
menor ônus financeiro.
No caso do sistema nervoso central dos ratos, a comparação com um trabalho
realizado anteriormente (D’HAESELEER et al., 2000) e geralmente aceito como
biologicamente plausível aponta para uma grande similaridade com os resultados
conseguidos através da aplicação do algoritmo proposto nesta tese.
Ademais, a captura bastante precisa das variações nos níveis de expressão dos genes
estudados sugere que o processo regulatório que gera estas variações pode ter sido
modelado de forma correta, fazendo por justificar a realização de testes de bancada para
uma posterior comprovação.
Em ambos os casos, junto com os reguladores previamente identificados, existem
vários outros candidatos, alguns dos quais são provavelmente espúrios (falsos positivos).
Isto é esperado, dado o pequeno volume de dados disponível em cada caso. Entretanto, o
algoritmo ainda se justifica, posto que sua proposta original era restringir o espaço de busca
para o trabalho de bancada em laboratórios biológicos.
Deve-se manter sempre em mente que as bases de regras obtidas através da
aplicação do método aqui proposto devem ser tratadas apenas como candidatos
interessantes para o problema sendo modelado, e não como um resultado final. Assim, mais
testes, especialmente na bancada de um laboratório de biologia, serão necessários para
futura validação.
A incorporação de informação pré-existente é um conceito lógico que tem sido
pouco utilizado na literatura. Por exemplo, no caso dos exemplos biológicos apresentados
no capítulo 5 desta tese, existe uma ampla gama de relacionamentos regulatórios entre
genes que são conhecidos atualmente. Ignorar estes conhecimentos significa ampliar de
150
forma desnecessária o espaço de busca do algoritmo, arriscando-se a obter resultados
menos precisos ou simplesmente incorretos.
Outro tipo de conhecimento utilizado nesta aplicação foi a seleção dos elementos
que poderiam ser os reguladores putativos dos genes de interesse, que limitou fortemente o
espaço de busca. Uma forma mais inteligente de selecionar os reguladores é discutida na
seção de trabalhos futuros, a seguir.
Não é razoável procurar uma solução com todos os genes de um microarray apenas
porque eles estão disponíveis. O uso de conhecimento prévio pode aperfeiçoar os resultados
obtidos e minimizar a necessidade de dados.
Assim, torna-se imperativo incluir nos modelos de busca o atual estado da arte do
conhecimento no campo biológico, de forma que o modelo obtido seja o mais completo
possível (SCHRAGER et al., 2002).
O algoritmo proposto para esta tese permite a introdução deste conhecimento de
forma a restringir o espaço de busca e fazer com que os resultados obtidos sejam o mais
próximo possível da realidade.
6.3 Trabalhos Futuros
Nesta seção descreveremos algumas melhorias que podem ser feitas no algoritmo
apresentado nesta tese, de forma a obter resultados mais significativos e/ou fazê-lo mais
capaz de lidar com problemas tais como aqueles aqui apresentados.
Os trabalhos apresentados a seguir não foram implementados devido ao fato de
serem complexas adições que merecem estudos intensivos, não sendo apenas pequenas
adições ao código fonte do sistema desenvolvido para esta tese ou estudos que se possam
realizar em um curto espaço de tempo.
151
6.3.1 Seleção de candidatos a reguladores
O processo de regulação da transcrição de um gene é um processo complexo que
normalmente envolve a ligação de uma série de proteínas reguladoras de transcrição
(fatores de transcrição) a regiões especiais (sítios de ligação, ou binding sites) situadas um
pouco antes (upstream) da seqüência de DNA codificadora do gene sendo regulado.
A localização dos sítios de ligação é outro fator complexo. Existem promotores que
podem estimular a transcrição ligando-se a um promotor localizado a dezenas de kilobases
de distância da seqüência codificadora, como, por exemplo, o promotor SV40, enquanto
que outros somente funcionam de forma proximal, distantes no máximo 15-20 bases da
seqüência do gene, como os elementos controlando o gene HSV tk. Existe, obviamente, um
grande número de genes localizados entre os dois extremos (ALBERTS et al., 2002).
Os fatores de transcrição são compostos por duas regiões funcionais essenciais: um
domínio de ligação ao DNA e um domínio de ativação. O domínio de ativação ao DNA
consiste de uma seqüência de aminoácidos específicos que reconhecem os sítios de ligação
com os quais devem se ligar (OHLER, 2001).
Os fatores de transcrição são tipicamente classificados de acordo com a estrutura do
seu domínio de ligação que pode ser de um dos seguintes grupos:
•
Zinc fingers
•
Helix-Turn-Helix
•
Zíper de Leucina
•
Helix-Loop-Helix
•
Grupos de alta mobilidade
Por outro lado, o domínio de ativação interagem com os componentes do aparato de
transcrição, especialmente a RNA polimerase e com outras proteínas regulatórios afetando
a eficiência da transcrição do DNA. Estes fatores podem ser ativados por estímulos
fisiológicos, terapêuticos e patológicos.
A existência e especificidade dos domínios de ligação pode ser explorada na seleção
de candidatos a reguladores que seriam submetidas ao algoritmo proposto nesta tese. Em
152
vez de selecionar os candidatos pelo grupo funcional, como feito aqui, poderia se analisar a
sequência codificadora de cada proteína expressa na célula e permitir que o algoritmo
utilizasse como candidato somente aqueles que possuíssem um domínio de ligação
reconhecível.
Este trabalho não foi realizado nesta tese pois a complexidade do assunto é imensa.
O reconhecimento de domínios de ligação é uma área de pesquisa avançada que tem
suscitado o desenvolvimento de várias teses de doutorado em todo o mundo. Entretanto, os
resultados destes trabalhos poderiam ser usados como forma de fazer com que os
candidatos a regulador fossem somente aqueles capazes de realizar tal função, diminuindo
o número de resultados espúrios obtidos pelo algoritmo.
6.3.2 Integração com um laboratório de bioinformática
Os resultados obtidos no trabalho realizado em bioinformática nesta tese foram
promissores. Por exemplo, um pesquisador que recebesse como resultado o conjunto de
regras para o gene 13875_at, por exemplo, teria uma lista de 9 genes que são considerados
como candidatos promissores pelo algoritmo proposto nesta tese.
Estes genes foram retirados de um espaço de 8000 genes, o que implica em um fator
de redução do espaço de busca de cerca de 99,9% pela aplicação de um algoritmo
computacional, o que pode ser de grande valia para um pesquisador trabalhando na área
biológica.
É razoável assumir que dentre os genes desprezados existem um certo número
falsos negativos, mas neste instante é impossível obter uma estimativa precisa deste
número. Ademais, este número variará para cada aplicação, dependendo de fatores como
nível de expressão dos genes envolvidos em relacionamentos regulatórios, por exemplo.
Isto quer dizer que se um gene regulatório não estiver expresso de forma expressiva dentro
do conjunto de dados, ele pode vir a ser eliminado pelos passos de pré-processamento e não
ser considerado pelo algoritmo.
153
Este e outros resultados obtidos nesta tese sugerem que o algoritmo aqui proposto
pode ser uma ferramenta útil para ajudar a descobrir processos regulatórios ainda
desconhecidos de forma que novas hipóteses possam ser geradas e testadas em um
laboratório (wet lab).
Para tanto, seria interessante que se desenvolvesse uma cooperação com um
laboratório de pesquisas biológicas, de forma que o algoritmo pudesse ser usado de forma
extensiva e suas capacidades testadas em situações de necessidades reais. Assim, suas
verdadeiras capacidades e limitações poderiam ser testadas e novos aprimoramentos
propostos.
154
Bibliografia
ALBA, E., CHICANO, J. F., 2004, “Training Neural Networks with GA Hybrid
Algorithms”, In: Proceedings of the Genetic and Evolutionary Computation Conference
(GECCO-2004), pp. 864-876, Seattle, EUA, Jun.
ALBERTS, B., JOHNSON, A., LEWIS, J., et al., 2002, “Molecular Biology of the Cell”,
4a. Edição, Boston, Garland Publishing.
ALTER, O. , BROWN, P. O., BOTSTEIN, D., 2001, “Processing and modeling genomewide expression data using singular value decomposition”, In: Bittner M. L., Chen Y. (eds)
Microarrays: Optical Technologies and Informatics, cap 12., pp. 171-186, International
Society for Optical Engineering, Bellingham, EUA
AKUTSU, T., MIYANO, S., KUHARA, S., 1999 “Identification Of Genetic Networks
From A Small Number of Gene Expression Patterns Under The Boolean Network Model”,
In: Proceedings of the Pacific Simposium on Bio-Informatics (PSB’99), pp. 17-28, Havaí,
EUA, Jan.
ANDO, S; IBA H., 2000, “Identifying the Gene Regulatory Network by Real-Coded,
Variable-Length, and Multiple-Stage GA”,In: Proceedings of 2001 Congress on
Evolutionary Computation, pp. 712-719, Seul, Coréia do Sul, Maio.
ARNONE, M.I., DAVIDSON, E.H., 1997, "The hardwiring of development: organization
and function of genomic regulatory systems", Development v. 124, n. 10 (May), pp. 18511864.
155
AUER, P., BURGSTEINER, H., AND MAASS,W., 2002, “Reducing communication for
distributed learning in neural networks”. International Conference on Artificial Neural
Networks (ICANN 2002), pp. 123-128, Madri, Espanha, Aug.
BAESENS, B.; EGMONT-PETERSEN, M.; CASTELO, R. et al., 2002,
“Learning
Bayesian network classifiers for credit scoring using Markov Chain Monte Carlo search”,
Proceedings of the 16th International Conference on Pattern Recognition (ICPR), pp. 4952, Quebéc, Canadá, Jul.
BARANAUSKAS, J. A.., MONARD, M. C., 2003, “Conceitos sobre aprendizagem de
máquina”, In: Rezende, S. O. (coord),
“Sistemas Inteligentes – Fundamentos e
Aplicações”, 1a. Edição, capítulo 4, São Paulo, Brasil, Ed. Manole
BATISTA, G. E. A. P. A., PRATI, R. C., MONARD, M.C., 2004, “A Study of the
Behaviour of Several Methods for Balancing Machine Learning Training Data”, SIGKDD
Explorations, v. 6, n. 1 (Dec), pp. 20-29.
BENTLEY, P., 1999, “Evolving Fuzzy Detective: An Investigation in the Evolution of
Fuzzy Rules”, In Proceedings of the Genetic and Evolutionary Computation Conference
(GECCO '
99) , pp. 38-47, Orlando, EUA, Jul.
BLAVYAS, I., KIMMEL, R., 2001, Efficient Classification via Multiresolution Training
Set Approximation, Technical Report 3, Technion, Haifa, Israel.
CANTÚ-PAZ, E., 1997, A Survey of Parallel Genetic Algorithms, Technical Report,
University of Illinois, Chicago, EUA.
CELIS, J. E.; KRUHOFFER, M., 2000, “Gene expression profiling: monitoring
transcription and translation products using DNA microarrays and proteomics”, FEBS
Letters n. 480, pp. 2-16
CHEN, T., 1999, “Modeling Gene Expression With Differential Equations”, In:
Proceedings of the Pacific Simposium on Bio-Informatics (PSB’99), pp. 29-40, Havaí,
EUA, Jan.
CHEN, K., LIU L., 2003, Towards Finding Optimal Partitions of Categorical Datasets,
Technical Report, Syracuse University, EUA
CHO, R. J.; HUANG, M.; DONG, H., et al., 2001, “Transcriptional Regulation and
Function in the Human Cell Cycle” Nature Genetics, v. 27, n. 1 (Jan), pp. 48-54.
156
COOPER, S. ; SHEDDEN, K., 2003, “Microarray analysis of gene expression during the
cell cycle”, Cell & Chromosome, v. 2, n. 1, pp. 66-70, BioMed Central Ltd.
CLARK, P., NIBLETT, T., 1987, “Induction in Noisy Domains” In Proceedings of the 2nd
European Working Session on Learning, pp. 11-30, Bled, Yugoslavia, Jul.
CRISTOFOR, D. AND SIMOVICI, D. A., 2002, “An information theoretical approach to
clustering categorical databases using genetic algorithms”, Second SIAM International
Conference on Data Mining, Workshop on clustering high dimensional data, n. 3,
Arlington, EUA, Apr.
DASGUPTA, D., GOMEZ, J., 2002, “Evolving Fuzzy Classifiers for Intrusion Detection”,
Proceedings of the 2002 IEEE Workshop on Information Assurance, pp. 118-129, Nova
York, EUA, Jun.
DAVIDSON, E., RAST, J. P., 2002, “A Genomic Regulatory Network for Development”,
Science Magazine, v. 295, n. 10 (Mar), pp. 1670-1679.
DE JONG, H., 2002, “Modeling and Simulation of Genetic Regulatory Systems : A
Literature Review”, Journal Of Computational Biology, v. 9, n. 1 (Jan), pp. 67-103, Ed.
MaryAnnLiebert,Inc.
DELLAERT. G., 1995, Towards a biologically defensible model of development, MSc
Thesis, Case Western Reserve University, EUA.
D’HAESELEER, P., 1993, Reconstructing Gene Networks from Large Scale Expression
Data, Tese de Doutorado, The University of New Mexico, Novo México, EUA
D’HAESELEER, P; LIANG, S., SOMOGYI, R., 2000, “Genetic Network Inference – from
Co-Expression Clustering to Reverse Engineering”, Bioinformatics v. 16, n. 8 (Aug), pp.
707-726, Oxford University Press.
DOUNIAS, G.; TSAKONAS, A., JANTZEN, J. et al., 2002 “Genetic Programming for the
Generation of Crisp and Fuzzy Rule Bases in Classification and Diagnosis of Medical
Data”, Proc. Of the Neuro-Fuzzy Conference (NF’ 2002), pp. 60-67, Havana, Cuba, Jan.
DODD, I. B., EGAN J.B., “Improved detection of helix-turn-helix DNA-binding motifs in
protein sequences”, Nucleic Acids Res v. 18 n. 26 (Jun) pp. 5019-5026
DORIGO, M., MANIEZZO, V., 1992, “Parallel Genetic Algoriths : Introduction and
overview of current research", In J.Stenders (ed.), “Parallel Genetic Algorithms: Theory
and Applications”, IOS Press, pp. 5-42.
157
DUCH, W.; ADAMCZAK, R., GRABCZEWSKI, K., 2001 “A New Methodology Of
Extraction, Optimization And Application Of Crisp And Fuzzy Logical Rules”, IEEE
Transactions On Neural Networks, v. 12, N. 2 (Mar), pp. 277-306.
DUGGAN, D. J.; BITTNER, M.; CHEN, Y.; et al., 1999, “Expression profiling using
cDNA microarrays”, Nature Genetics Suppl., vol. 21, N. 1 (Jan), pp. 10-14
EGGERMONT, J.; KOK, J. N. E KOSTERS, W. A., 2004a, “Genetic Programming for
Data Classification:Partitioning the Search Space”, Proceedings of the 19th Annual ACM
Symposium on Applied Computing (SAC'
04), pp. 1001-1005 Nicosia, Chipre, Mar.
EGGERMONT, J.; KOK, J. N., KOSTERS, W. A., 2004b, “Detecting and Pruning Introns
for Faster Decision Tree Evolution”, In: Proceedings of the 8th International Conference
on Parallel Problem Solving From Nature, pp. 1068-1077, Birmmingham, Sep.
ELKAN, C., 2001, “The Foundations of Cost-Sensitive Learning”, In: Proceedings of the
Seventeenth International Joint Conference on Artificial Intelligence (IJCAI’01), pp. 617628, Seattle, EUA, Aug.
ESPINDOLA, R. P., 2004, Sistemas Inteligentes para Classificação de Dados, Tese de
Doutorado, COPPE-UFRJ, Rio de Janeiro, Brasil.
EVSUKOFF, A. G., ALMEIDA P. E. M., 2003, “Sistemas Fuzzy”, In: Rezende, S. O.
(coord), “Sistemas Inteligentes – Fundamentos e Aplicações”, 1a. Edição, capítulo 7, São
Paulo, Brasil, Ed. Manole
FOGEL, G.B, CORNE, D. W., 2003 “An Introduction to Evolutionary Computation for
Biologists” In: Fogel, G.B and Corne, D. W. (eds), “Evolutionary Computation in
Bioinformatics”, Nova Iórque, EUA, Morgan Kaufmann Publishers.
FREITAS, A.A., 2000, Tutorial on Data Mining with Evolutionary Algorithms, Genetic
and Evolutionary Computation Conference (GECCO-2000). Las Vegas, EUA, Jul.
GESTEL, T. V., SUYKENS, J., BAESENS, B., et al., 2001, “Benchmarking least squares
support vector machine classifiers”, Machine Learning, v. 54 , n. 1 (Jan), pp. 5-32, Kluwer
Academic Publisher.
GIBSON, D. ; KLEINBERG, J., RAGHAVAN, P., 2000, “Clustering categorical data: an
approach based on dynamical systems” , The VLDB Journal v. 8, n. 2 (Mar), pp 222–236,
Springer Verlag Ed.
158
GILMOUR S. J.; ZARKA, D. G., 1998, “Low Temperature Regulation of the Arabidopsis
CBF family of AP2 transcriptional activators as an early step in cold-induced COR gene
expression”, The Plant Journal v. 16 n. 4 (Apr) pp. 433-442, Blackwell Science Ltd.
GORDON, A. D., 1981 “Classification”, 1a Edição, Boston, EUA, Chapman and Hall
Editors.
GRAY, S.; LEVINE, M., 1996, “Transcriptional Repression in Development”, Current
Opinion in Cell Biology, v. 8, n. 2, pp.358-364.
GRIFFITHS, A. J. F; MILLER, J. H.; SUZUKI, D. T. et al., 2000, “An Introduction to
Genetic Analysis” 7ª Edição, Nova York, EUA, Ed. W. H. Freeman.
GUHA, S., RASTOGI, R., SHIM, K., 2000, “Rock: A robust clustering algorithm for
categorical attributes.” Information Systems, v. 25, n. 5 (May), pp. 345-366.
GUPTA, M., YAMAKAWA, T., 1991, Fuzzy Logic in Knowledge Based Systems, Decision
and Control, 1a. Edição, Amsterdã, Holanda, Elsevier Science Publishers B. V.
HAN, J., KAMBER, M., 2001, Data Mining: Concepts and Techniques, 1 ed., California,
EUA, Morgan Kaufmann.
HANISCH, D. ; ZIEN, A., 2002, “Co-clustering of Biological Networks and Gene
Expression Data”, Bioinformatics v. 18 Suppl. 1, pp. 145-154, Oxford University Press.
HAUTANIEMI, S., 2003, Studies Of Microarray Data Analysis With Applications For
Human Cancers, DSc. Dissertation, Tampere University of Technology, Finlândia.
HERRERA, F., MAGDALENA, L, 1997, “Genetic Fuzzy Systems – a Tutorial”,
Proceedings of the Seventh IFSA World Congress (IFSA97), pp. 93-121 Praga, República
Tcheca, Jun.
HETLAND, M. L, SAETROM, P., 2002, Temporal Rule Discovery using Genetic
Programming and Specialized Hardware”, Technical Report IDI, Oslo, Noruega.
HOLLAND, J. H., 1975 “Adaptation in Natural and Artificial Systems”, 1a Edição,
Cambridge, EUA, The MIT Press.
HWANG, D.; SCHMITT, W. A., 2002, “Determination of minimum sample size and
discriminatory expression patterns in microarray data”, Bioinformatics, v. 18, n. 9 (Sep.),
pp 1184-1193, Oxford University Press.
159
JIANG, D., ZHANG, A., 2002, Cluster Analysis for Gene Expression Data: A Survey,
Technical Report 2002-06, State University of New York at Buffalo, EUA.
KAUFFMAN, S. A., 1969, “Metabolic stability and epigenesis in randomly constructed
genetic nets,”, J. Theoret. Biol., v. 22, n. 3 (Mar), pp. 437–467.
KAWAJI, H., YAMAGUCHI, Y., MATSUDA, H. et al., 2001, “A Graph-Based Clustering
Method for a Large Set of Sequences Using a Graph Partitioning Algorithm”,Genome
Informatics, v. 12, n. 1 (Jan), pp. 93–102, Universal Academy Press.
KEOGH, E., KASETTY, S., 2003, “On the Need for Time Series Data Mining
Benchmarks: A Survey and Empirical Demonstration”, Data Mining and Knowledge
Discovery, vol. 7, n. 2 (Feb.) 349–371, Kluwer Academic Publishers.
KIM, Y.; STREET, W. N., MENCZER, F., 2002, “Evolutionary model selection in
unsupervised learning”, Intelligent Data Analysis vol. 1 n. 6 (Nov) pp.. 531–556, IOS
Press.
KOZA, J. R., 1992, “Genetic Programming: On the Programming of Computers by Means
of Natural Selection”, 1a. Edição, Cambridge, EUA, The MIT Press.
KOZA, J. R.; MYDLOWEC, W., LANZA, G., et al., 2001, “Reverse Engineering Of
Metabolic Pathways From Observed Data Using Genetic Programming”, In: Proceedings
of the Pacific Simposium on Bio-Informatics (PSB’01), pp. 434-445, Havaí, EUA, Jan.
LEE, B.; YEN, J., YAN, L. et al., 1999, “Incorporating qualitative knowledge in Enzyme
kinetic models using fuzzy logic”, Biotechnol Bioeng. v. 62, n. 6 (Mar.), pp. 722-729
LEE, H. K. H., 2000, Model Selection for Neural Network Classification, Technical Report
2000-1, Duke University, EUA.
LIANG, S., FUHRMAN, S., SOMOGYI, R., 1998, “REVEAL, a general reverse
engineering algorithm for inference of genetic network architectures” In Proceedings of the
Pacific Symposium on Biocomputing (PSB’98) pp. 18-29, Havaí, EUA, Feb.
LINDEN, RICARDO; BHAYA, AMIT, 2002, “Reverse Engineering of Genetic Networks
under the Boolean Networks Model using Variable-Length Genetic Algorithms”,
Proceedings of the XIII Artificial Neural Networks in Engineering, pp. 535-541, St. Louis,
EUA, Nov.
160
LINDEN, RICARDO; BHAYA, AMIT, 2002, “Reverse Engineering of Genetic Networks
under the Boolean Networks Model using Variable-Length Genetic Algorithms”, Anais do I
Workshop Brasileiro de Bioinformática, pp. 94-96, Gramado, Brasil, Oct.
MANGASARIAN, O., LEE, Y., 1999, “SSVM: A smooth support vector machine for
classification”, Data Mining Institute Technical Report 99-03, EUA.
MCADAMS, H.H.; SHAPIRO, L., 1995, “Circuit simulation of genetic networks”,
Science, v. 269 n. 8 (Feb) pp 650-656.
MENDES, R., VOZNIKA, F. B., FREITAS, A. et al., 2001,
“Discovering Fuzzy
Classification Rules with Genetic Programming and Co-Evolution”, In: Proceedings of the
5th European Conference on Principles and Practice of Knowledge Discovery in
Databases (PKDD'
01), pp. 314-325, Freiburg, Alemanha, Sep.
MEYER, D.; LEISCH, F. E HORNIK, K., 2002, “Benchmarking Support Vector
Machines”, Technical Report nº 78, Report Series, Vienna University of Economics and
Business Administration, Áustria
MICHALSKI, R. S., MOZETIC, I., HONG, J., et al., 1986, “The Multi-Purpose
Incremental Learning System AQ15 and its Testing Application to Three Medical
Domains” In Proceedings of the Fifth National Conference on Artificial Intelligence, pp.
1041-1045,Philadelphia, EUA, Aug.
MITCHELL, M., 1996 “An Introduction to Genetic Algorithms”, 1a. Edição, Cambridge,
Massachussets, The MIT Press.
MOORE, D. S., MCCABE, G.P, 2002, “Introdução à Prática da Estatística”, Rio de
Janeiro, Brasil, Editora LTC, 2002.
SUÁREZ, A., 2001, “Using All Data to Generate Decision Tree Ensembles”, Tese de
MSc., Universidade Autónoma de Madrid, Madri, Espanha
MURPHY, P. M., AHA, D. W., 1996, UCI repository of machine learning databases
[machine-readable data repository]. Technical Report, University of California at Irvine,
Department of Information and Computer Science, California, EUA.
NAUCK, D. AND KRUSE, R., 1995 “NEFCLASS – A Neuro-Fuzzy Approach for the
Classification of Data” , Proc. of the 1995 ACM Symposium on Applied Computing, pp.
461-465, Nashville, EUA, Feb.
161
OHLER, U., 2002, Computational Promoter Recognition in Eukaryotic Genomic DNA,
PhD Dissertation, Universidade Erlanger-Nürnberg, Alemanha
O’DEA, P.; GRIFFITH, J. E O’ RIORDAN, C., 2001, “Combining Feature Selection and
Neural Networks for Solving Classification Problems”, In: Proceedings of the 12th Irish
Conference on Artificial Intelligence & Cognitive Science (Lecture Notes in Artificial
Intelligence),pp. 157-166, Springer-Verlag Publisher Dublin, Irlanda, Sep.
ONODA, T., RATSCH, G., AND MULLER, K.R., 2001, “Soft margins for adaboost”
Machine Learning, vol. 42 n. 3 (Mar), pp.287–320, Kluwer Academic Publisher.
PALMER, C. R., FALOUTSOS, C., 2003, “Electricity Based External Similarity of
Categorical Atributes”, In: Proceedings of the Seventh Pacific-Asia Conference on
Knowledge Discovery and Data Mining, pp. 120-126, Seul, Coréia, Apr.
PEDRYCZ, W. E GOMIDE, F., 1998, “An Introduction to Fuzzy Sets – Analysis and
Design”, 1a. Edição, Cambridge, EUA, MIT Press.
PE’ER, D.; REGEV , A. ; TANAY, A., 2002 “Minreg: Inferring an active regulator set”,
Bioinformatics v. 18, Suppl. 1 (Dec), pp. S258–S267
PIASECZNY, W., SUZUKI, H., SAWAI, H., 2004, Chemical Genetic Programming – The
Effect of Evolving Aminoacids, Technical Report, ATR Human Information Labs, Tóquio,
Japão
POZDNOUKOV, A.; BENGIO, S., 2004, Invariances in Kernel Methods: from samples to
objects, Relatório Técnico, Instituto Pascal, Berna, Suíca.
PIETROKOVSKI, S., HENIKOFF, S., 1997, “A helix-turn-helix DNA-binding motif
predicted for transposases of DNA transposons”, Molecular Genetics v. 254 n. 3 (Mar.), pp.
689-695, Springer Verlag Ed.
QUINLAN, J. R., 1986, “Induction of Decision Trees”, Machine Learning v. 1, n. 1 (Jan)
pp. 81-106, Kluwer Academic Publishers.
RIPLEY, B. D., 1993, “Statistical Aspects of Neural Networks” in Barndorff-Nielsen, O.
E. ; Jensen, J. L. e Kendall, W. S. (eds), Networks and Chaos – Statistical and Probabilistc
Aspects, 1a. Edição, cap. 4, Chapman & Hall Ed., Inglaterra,
RUGGIERO, M. A. G.; LOPES, V. L. R., 1996, “Cálculo Numérico – Aspectos Teóricos e
Computacionais”, 2a. Edição, Rio de Janeiro, Brasil, Ed. Makron Books.
162
SAKAMOTO, E., IBA, H., 2001, “Inferring a System of Differential Equations for a Gene
Regulatory Network by using Genetic Programming”, In: Proceedings of the 2001
Congress on Evolutionary Computation (CEC’01), pp. 720-726, Seul, Coréia do Sul, Maio.
SOCIEDADE BRASILEIRA DE DIABETES, 2004, “Diabetes e o Peso”, disponível no
site http://www.diabetes.org.br/diabetes/atividade/peso.php, Brasil.
SCHEAFFER, R., 1999, Categorical Data Analysis, Technical Report - NCSSM Statistics
Leadership Institute, Carolina do Norte, EUA
SCHRAGER, J; LANGLEY, P., POHORILLER, 2002, “Guiding revision of regulatory
models with expression data”, In: Proceedings of the Pacific Symposium on Biocomputing
(PSB’02), pp. 486-497, Havaí, EUA, Feb.
SHEDDEN, K. AND COOPER, S., 2002, “Analysis of cell-cycle-specific gene expression
in human cells as determined by microarrays and double-thymidine block synchronization”,
Proceeding of the National Academy of Sciences (PNAS), vol. 99 n. 7 (Feb.), pp. 43794384.
SINGAL, P. K, MITRA, S., PAL, S. K., 2001, “Incorporation of Fuzziness in ID3 and
Generation of Network Architecture”, Neural Comput & Applic Vol. 10 n. 1 (Jan), pp.
155–164, Springer-Verlag London Limited.
SMOLEN, P, BAXTER, D, BYRNE, J. D., 2000, “Modeling Transcriptional Control in
Gene Networks—Methods, Recent Results, and Future Directions”, Bulletin of
Mathematical Biology v. 62, n. 2 (Mar), pp. 247–292.
SONTAG, E. ; KIYATKIN, A. E KHOLODENKO, B. N., 2004, “Inferring Dynamic
Architecture of Cellular Networks Using Time Series of Gene Expression, Protein and
Metabolite Data”, Bioinformatics, no prelo, Oxford University Press.
VAN SOMEREN, E.P.; WESSELS, L.F.A ; REINDERS, M.J.T., 2000, "Linear Modeling
of Genetic Networks from Experimental Data", In: Proceedings of the Eighth International
Conference on Intelligent Systems for Molecular Biology , pp. 355-366, La Jolla, EUA,
Aug.
SPIETH, C.; STREICHERT, F., 2004, Optimizing Topology and Parameters of Gene
Regulatory
Network
Models
from
Time-Series
Universidade de Tübingen, Alemanha.
163
Experiments,
Technical
Report,
STOCKBURGER, D., 1996, Introductory Statistics, Online textbook, available at
http://www.psychstat.smsu.edu/sbk00.htm
SUER, G. A., BADURDEEN, F., THANGALEVU, B., 2002, “Capacitated lot sizing by
using multi-chromosome crossover strategy”, in Proceedings of the XII Conference on
Artificial Neural Networks in Engineering, pp. 281-286, St. Louis, EUA, Nov.
SZALLASI, Z., LIANG, S, 1998,: "Modeling the normal and neoplastic cell cycle with
realistic boolean genetic networks: their application for understanding carcinogenesis and
assessing therapeutic strategies",
In: Proceedings of the Pacific Symposium on
Biocomputing (PSB '
98), pp 66-76. Havaí, EUA, Feb.
TAN, M., ESHELMAN, L., 1988, “Using weighted networks to represent classification
knowledge in noisy domains”, In: Proceedings of the Fifth International Conference on
Machine Learning, pp. 121-134, Ann Arbor, MI, Aug.
THEIL, H., 1971, “Applied Economic Forecasting”, 1a. Edição, Amsterdã, Holanda, North
Holland Publishing Co.
THOMAS, R., 1998, “Laws for the dynamics of regulatory networks”, International
Journal Developmental Biology v. 42 n. 5 (May.) pp. 479-485.
TOIVONEN, H., 1996, “Sampling Large Databases for Association Rules” In: Proceedings
of 22th International Conference on Very Large Data Bases, pp. 134-145, Morgan
Kauffman Publishers, Bombaim, Índia, Sep.
WAGNER, A., 2001,
“How to reconstruct a large genetic network from n gene
perturbations in fewer than n2 easy steps”, Bioinformatics, v. 17, n. 12 (Dec),
pp 1183-1197.
WANG, L., 1994, “Adaptative Fuzzy Systems and Control – Design and Stability
Analysis”, 1 Edição, Nova Iórque, EUA, Ed. Prentice-Hall
VENET , D.; MAENHAUT, C., BERSINI, H., 2001 – “Modeling and determination of
regulation of gene expression: the binary switch model”, In: Proceedings of the 2nd.
International Conference on Systems Biology, pp. 239-247, Pasadena, EUA, Nov.
YANG, Z. R.; THOMSON, R., 2003, “Searching for discrimation rules in protease
proteolytic cleavage activity using genetic programming with a min-max scoring function”,
In: BioSystems v. 72 n. 2 (Feb.) pp.159-176, Elsevier Ireland Ltd., Irlanda
164
ZHANG, Y., FU A. W., CAI, C. H. et al., 2000, “Clustering Categorical Data”, In:
Proceedings of the 16th International Conference on Data Engineering, pp. 305-316 San
Diego, EUA, Feb.
ZHOU, C., XHIAO, W., TIRPAK T. M., et al., 2002 “Discovery of Classification Rules by
Using Gene Expression Programming” In Proceedings of the International Conference on
Artificial Intelligence, pp. 1355-1361, Chicago, Jun.
ZIEN, A., FLUCK, J., ZIMMER, R. et al., 2002, “Microarrays: How Many Do You
Need?”, In Proceedings of RECOMB02, pp. 321-330, Seattle, EUA, Jan.
165
Apêndice A– Aplicações
em Classificação
A.1 Introdução
O aprendizado indutivo consiste em estabelecer hipóteses sobre exemplos
fornecidos por um processo externo ao sistema de aprendizado e pode ser dividido em dois
tipos:
•
Supervisionado: neste caso, é fornecido ao algoritmo de aprendizado um conjunto de
exemplos de treinamento para os quais o resultado esperado (rótulo de classe, no caso
da classificação) é conhecido.
•
Não supervisionado: nenhuma estrutura é imposta a priori aos dados, cabendo ao
algoritmo classificador descobrir uma hipótese subjacente aos dados que permita
classificá-los de alguma forma lógica.
No primeiro caso, o problema a ser resolvido é conhecido como algoritmo de
classificação para rótulos de classe discretos e de regressão, para valores contínuos. Já no
segundo caso, o problema a ser resolvido é denominado agrupamento ou clustering
(GORDON, 1981) e (BARANAUSKAS et al., 2003).
Neste capítulo será explicado como se aplica o algoritmo de aprendizado aqui
proposto para o problema de classificação, discutindo alguns exemplos de aplicação em
conjuntos que são normalmente usada na literatura da área.
166
Segundo HAN & KAMBER (2001), os algoritmos de classificação podem ser
avaliados e comparados utilizando-se os seguintes critérios:
•
precisão: é a capacidade de classificar corretamente novos elementos, usando o
modelo definido a partir dos dados de treinamento. O modelo proposto será
avaliado em termos deste critério e também usando-se modelos naïve como base de
comparação, como será visto neste apêndice;
•
rapidez: refere-se tempo gasto na fase de aprendizado e na utilização do modelo. É
importante entender que algoritmos evolucionários são técnicas de busca que
mantêm grandes populações que têm que se avaliadas contra toda a base de
treinamento, sendo por isto inerentemente mais lentas que outros métodos como as
máquinas de vetor de suporte. Logo, a rapidez não pode ser um critério fundamental
quando se pretende utilizar um algoritmo evolucionário;
•
escalabilidade: é a capacidade de construir classificadores na presença de grandes
bases de dados. Este conceito não é conceitualmente aplicável ao algoritmo desta
tese, posto que está se propondo uma técnica a ser aplicada para bases de dados
escassas. Para bases de grande porte, sugere-se aplicar qualquer técnica estatística
estabelecida e largamente utilizada (MOORE, 2002)
•
robustez: é a capacidade de realizar decisões corretas na presença de dados com
ruído ou incompletos;
•
interpretabilidade: refere-se ao nível de entendimento do modelo construído. No
caso do modelo proposto, o uso de regras fuzzy permite que se crie uma estrutura
pseudo-linguística que tem grande similaridade com a linguagem utilizada de forma
cotidiana na comunicação de idéias pelas pessoas. Assim, as regras obtidas possuem
grande interpretabilidade para o usuário final.
167
A.2 Mudanças na função de avaliação
A função de avaliação utilizada para classificação não pode ser a mesma usada para
a previsão, pois esta se concentra em erros percentuais enquanto que no caso da
classificação, é necessário apenas optar entre dois ou mais valores.
As classes previstas nesta tese são determinadas por variáveis Booleanas. Isto é, se
temos duas classes apenas, usar-se-á uma variável Booleana para discriminá-las. Se temos
mais de duas classes, serão usadas um número de variáveis Booleanas igual ao número de
classes para separá-las.
Tendo em vista que um sistema fuzzy é usado para prever as classes e que opta-se
por um defuzzificador do tipo médio dos máximos (MoM), as variáveis Booleanas usadas
deixam de ser consideradas como assumindo valores 0 ou 1 para assumir os valores 1 ou 2.
Isto mantém seu caráter essencialmente binário mas permite que o limite inferior passe a
contribuir para a média de uma forma efetiva, enquanto que se usássemos o zero como um
dos limites, sua contribuição para a média seria sempre zero. Isto decorre do fato de que o
algoritmo MoM utiliza a seguinte fórmula para realizar a defuzzyficação:
µ p max p
y=
p
onde:
•
y é a saída gerada
•
p é o número de conjuntos fuzzy adotados para a divisão do universo de discurso da
variável de saída
•
µ p é a pertinência calculada da variável de saída ao conjunto p pela aplicação da
base de regras
•
max p é o valor máximo do conjunto fuzzy p.
Assim, se o valor máximo for igual a zero, a parcela de contribuição deste conjunto, não
importando o valor calculado para µ p , será sempre zero. Isto não é relevante em uma
situação em que usamos apenas dois conjuntos que possuem pertinência complementar
168
( µ 1 = 1 − µ 0 ), pois neste caso a conta obteria exatamente o mesmo resultado. Em qualquer
outra situação, seja com número maior de conjuntos ou com formatos distintos da função
de pertinência, a presença do máximo em zero causará problemas no cálculo do valor
defuzzyficado.
No caso de haver apenas duas classes, a defuzzificação da variável de categoria gerará
um número entre 1 e 2. Para este número, cria-se então uma zona de classificação errônea,
que consiste em [1,5-ε ; 1,5+ε], onde ε é um parâmetro fornecido ao algoritmo. Todos os
valores defuzzificados que resultarem em um valor neste intervalo serão tratados como uma
falha de classificação, isto é, uma incapacidade do algoritmo de classificar corretamente a
tupla.
Os valores obtidos maiores que 1,5+ε serão tratados como pertinentes à classe 2,
enquanto que os valores obtidos que sejam menores que 1,5-ε serão tratados como
pertinentes à classe 1.
Outra abordagem possível seria não defuzzyficar as pertinências, simplesmente
atribuindo a tupla à classe que obtiver a maior pertinência. As duas abordagens são bastante
similares, dado que foram utilizados conjuntos criado a partir de uma divisão uniforme do
universo de discurso. Isto quer dizer que a partir do ponto 1,5, a pertinência da classe 2 é
maior que a da classe 1, e antes disto o inverso ocorre, e a classe 1 predomina. Em outras
situações, com mais de duas classes ou com uma divisão não uniforme do espaço de
estados, como a baseada nos dados descrita em (SINGAL et al., 2001), as duas abordagens
poderiam ser comparadas.
A função de avaliação do indivíduo consiste no número de acertos de classificação
realizados.
É hábitual na comunidade de pesquisadores de classificação usar o número de erros
multiplicado por um valor negativo como forma de punição dentro da função de avaliação.
Assim, sua função de avaliação torna-se:
F = c1 * n acertos − c 2 * nerros , onde c1 e c2 são constantes positivas a determinar.
Entretanto, este tipo de acréscimo à função de avaliação não acrescenta nenhum tipo
de informação a esta, pois tendo em vista que nerros é igual a n-nacertos (onde n é o número de
exemplos dentro do conjunto de treinamento), obtemos o seguinte:
169
F = c1 * n acertos − c 2 * (n − n acertos )
F = (c1 + c 2 ) * nacertos − c 2 * n
F = k1 * nacertos − k 2 * n
O que implica que este tipo de acréscimo consiste apenas em multiplicar a função
originalmente usada e somar uma constante negativa a esta. Além de não fornecer nenhum
tipo de informação adicional, este tipo de acréscimo ainda cria uma dificuldade adicional de
fornecer valores negativos quando
n acertos <
k2 * n
k1
Um ponto fundamental relativo à função de avaliação usada em um algoritmo
genético é que nenhum elemento deve ter avaliação negativa ou zero. Isto faria com que a
soma das avaliações diminuisse, alterando a roleta e fazendo com que houvesse mais de um
elemento possivelmente selecionado dada a escolha do mesmo valor de intervalo. Isto quer
dizer que, se um elemento k possui avaliação negativa, tem-se a seguinte condição para
uma população de n elementos mantida por uma algoritmo genético de função de avaliação
f:
n
i =1
f (i ) <
n
f (i )
i =1;i ≠ k
Simplificando, pode-se afirmar que adicionar uma avaliação negativa diminui o
total da função de avaliação. Isto resulta em dois elementos poderem ser escolhidos através
do mesmo resultado para um sorteio da roleta e, sob certas circunstâncias, no fato de que o
segundo destes elementos nunca será efetivamente escolhido.
Esta questão pode ser facilmente entendido com o seguinte exemplo. Imagine que
temos 100 exemplos, com k1 = k2 = 1, e três cromossomos. O primeiro classifica
corretamente 60 elementos, o segundo 30 elementos e terceiro, 70 elementos. Isto resulta
que a fitness do primeiro será igual a 20, a do segundo a –40 e a do terceiro, a 40.
O somatório das funções de avaliação será igual a 20 e por conseguinte a roleta
selecionará um número de 1 a 20, selecionando eternamente o primeiro cromossomo,
acabando com a variabilidade genética da população de cromossomos.
Assim, torna-se imperioso eliminar a constante acrescida à função de avaliação o
que nos leva à função originalmente usada, multiplicada por uma constante positiva. Tendo
170
em vista que o acréscimo de uma penalização resulta apenas em um deslocamento vertical
sem aumento do poder discriminatório da função de avaliação, usou-se apenas a
informação quanto ao número de acertos na função de avaliação de nosso programa
genético.
No caso de termos mais de duas categorias, poderia ser usada uma variável contínua
para descrever as categorias às quais um elemento pertence. Por exemplo, se a variável
assumisse o valor i (i=1,..., nc, , onde nc é o número de categorias existentes), o dado
pertenceria à categoria i. Entretanto, isto criaria uma situação em que uma categoria seria
mais próxima de outra, sem que isto tenha necessariamente um reflexo na estrutura dos
dados. Por exemplo, seria criada, de forma artificial, uma proximidade maior entre as
categorias 1 e 2 do que entre as categorias 1 e 3.
Para evitar a introdução deste tipo de estrutura nos dados, pode-se optar pela
utilização de variáveis Booleanas. Neste caso, será necessário mais de uma variável
Booleana para descrever todas as categorias. As categorias poderiam ser descritas usandose log 2 nc variáveis, mas isto também criaria uma proximidade artificial entre elas. Por
exemplo, a categoria três (representada pelo número Booleano 011) seria mais próxima da
categoria 1 (representada pelo número Booleano 001) do que da categoria 4 (representada
pelo número Booleano 100) já que a diferença entre 1 e 3 é apenas um bit enquanto que
entre 1 e 4 é de 3 bits.
Assim, optou-se por uma estrutura em que foram usadas exatamente nc variáveis
Booleanas. Para designar a categoria i, apenas a variável i assume valor 2, enquanto que
todas as outras variáveis assumem valor 1. Isto pode ser um problema se lidarmos com
variáveis com números grandes de categorias, mas os problemas de classificação de ordem
prática tendem a lidar com pequenos números de categorias, da ordem de 2 a 5, o que faz
com que esta abordagem não cause aumento expressivo no número de variáveis em
avaliação.
Escolhido o número de variáveis, é necessário definir como o resultado da
defuzzyficação será tratado em termos de categorias. Da mesma forma que no caso de duas
variáveis, o processo de defuzzyficação faz com que cada uma das variáveis assuma um
valor contínuo no intervalor [1,2], mas é desejável tratar apenas uma das variáveis como se
171
tivesse valor dois (categoria efetiva do dado) e todas as outras como se tivessem valor 1
(categorias às quais o dado não pertence).
Para fazer isto, usamos o conceito de dominância. Consideramos que a variável que
possui o maior valor é a categoria corrente do dado sendo classificado, desde que a
diferença deste valor para todos os outros seja maior do que um parâmetro ε definido pelo
usuário. Podemos formular tal abordagem matematicamente dizendo que o dado pertence à
categoria i se e somente se ∀j = 1,2.,..., nc , j ≠ i
vi − v j ≥ ε , onde vi e vj significam
respectivamente os valores assumidos pelas variáveis i e j. Se isto não for verdade para
nenhuma variável i, então o dado é considerado como sendo uma classificação errônea.
Uma vez obtidos os valores para todas as variáveis, usamos o mesmo critério que
usamos para o caso de termos apenas uma variável, isto é, o número de dados classificados
corretamente é o valor da função de avaliação para o conjunto de regras em questão.
Existem artigos tais como (EGGERMONT et al., 2004a) que utilizam um critério
fuzzy para determinar a avaliação de uma classificação, usando um critério que
matematicamente pode ser explicitado da seguinte forma:
fitness classificação ( x) =
(1 − ρ (r ))
r∈conj .treinamento
Esta função de avaliação usa a pertinência designada para cada um dos conjuntos de
forma que se o dado x pertence à classe y, mas esta função de classificação associa qualquer
pertinência ρ à classe y menor do que 1, um erro de classificação de 1-ρ. Da mesma forma,
qualquer pertinência diferente de 0 em qualquer outro conjunto fuzzy que não y é tratado
como erro e integra o somatório da função de avaliação.
Tendo em vista que, tanto no caso desta tese como do artigo em questão, se está
lidando com dados que pertencem a uma única classe, sem nenhum tipo de gradação, este
tipo de função acrescenta muito pouca informação em relação a um critério claro de
dominância. No fundo, o que esta métrica procura é forçar o algoritmo evolucionário usado
a buscar regras que impliquem em uma dominância maior (de preferência, de tal forma que
o resultado das regras fuzzy retorne uma classificação praticamente crisp).
172
A.3 Avaliação do desempenho de um
algoritmo de classificação
Nos últimos anos, vários novos algoritmos de classificação foram apresentados em
conferências e revistas. Tornou-se um aparente consenso que para avaliar a capacidade
destes algoritmos, estes deveriam ser testados com alguns conjuntos de dados disponíveis
no site da UC-Irvine (MURPHY et al., 1996).
Assim, estes conjuntos de dados se tornaram uma espécie de “benchmark” na
literatura, e se tornou um paradigma de facto que qualquer novo método deve mostrar que é
superior a trabalhos anteriores nos quesitos velocidade e/ou precisão quando trabalhando
nestes conjuntos de dados.
Uma característica comum à maioria dos artigos que seguem este consenso é que
eles omitem certas informação inerentes aos conjuntos analisados que colocariam os
resultados em um contexto, deixando claro a validade das taxas de acerto, ao invés de
mostrá-las como números puros.
Seria necessário analisar os resultados não só em termos das percentagens de
classificação correta, mas também em termos das características inerentes aos conjuntos de
dados. Por exemplo, certos conjuntos de dados, como o da Íris, são extremamentes simples
para classificação e resultados de 95% podem ser considerados ruins, enquanto que em
outros conjuntos, tais como o da Diabetes, este nível de resultado parece ser inatingível.
Assim, para dar maior perspectiva para os resultados obtidos aqui, fez-se uma
comparação dos resultados obtidos com classificadores naïve e árvores de decisão treinadas
com o algoritmo ID3 (QUINLAN, 1986).
O algoritmo ID3 tradicional pode ser descrito como uma heurística gulosa baseada
na entropia condicional ( H (Y | X ) ) e é dada pelo seguinte pseudo-código:
1. Calcule a entropia condicional da categoria em relação a cada um dos atributos,
de acordo com a seguinte fórmula:
173
Pr( X = υ j ) H (Y | X = υ j ) , e
H (Y | X ) =
j
H (Y | X = υ j ) = −
Pr(Y = υ k ) * log 2 (Pr(Y = υ k ))
k
2. Selecione o atributo com a menor entropia
3. Crie os subconjuntos para cada valor do atributo
4. Para cada subconjunto:
o Se todos os elementos do subconjunto pertencem à mesma classe, crie uma
folha e encerre para aquele subconjunto.
Senão, volte para o passo 1.
Ambos os previsores simples são considerados nesta tese como os “padrões-ouro”
que devem ser superados por quaisquer algoritmos de classificação supostamente melhores.
Para realizar esta comparação, introduzimos uma versão modificada da estatística U
de Theil (doravante denominada U-Theil), que é tradicionalmente usada na área de previsão
de séries temporais.
Existem duas versões do U-Theil para resumir a precisão de um algoritmo de
previsão. Se um determinado método prevê um conjunto Pi de mudanças na série, estas
podem ser comparadas com as mudanças efetivas na série (Ai). O coeficiente U-Theil pode
ser dado então por:
U=
( Pi − Ai ) 2
Ai
(1)
2
Se as previsões são perfeitas, o valor de U é zero. O modelo naïve que prevê que
não haverá nenhuma alteração obtém um valor de U igual a 1. Assim, modelos que tenham
uma performance melhor do que o método naïve devem obter valores de U no intervalo
[0,1[ (THEIL, 1971).
Uma das grandes vantagens deste coeficiente é que ele é independente dos valores
reais presentes na série, além de ser definido como um número sem unidades.
174
O coeficiente modificado proposto aqui tem as mesmas características e o mesmo
espírito, isto é, a comparação do modelo previsor proposto com um modelo naïve. No caso
de algoritmos de classificação, pode-se comparar a taxa de erro obtida no modelo proposto
(Ep) com a taxa de erro obtida no modelo naïve (En). O coeficiente U-Theil modificado
seria dado então por:
U=
Ep
(2)
En
Não é necessário tirar o módulo das medidas pois tendo em vista que elas consistem
em uma taxa de erro, naturalmente elas estão contidas no intervalo [0,1].
Assim como no caso das séries temporais, este coeficiente retorna um valor no
intervalo [0,1[ para modelos que tenham desempenho superior ao modelo naïve, sendo que
o valor obtido também é sem unidades e independentes dos valores reais existentes no
conjunto de dados em estudo.
Para cada aplicação existente, o modelo naïve é distinto. É necessário estudar as
características implícitas nos dados e o corpo de conhecimento da área que gerou o
conjunto, e não simplesmente se aplicar um algoritmo de classificação às cegas e esperar
por um bom resultado.
Na maioria dos casos estudados para esta tese, o modelo naïve adotado consistiu em
uma reordenação dos dados seguida de uma inspeção visual, de forma a atribuir de forma
imediata uma classe a cada tupla de dados. Este é um modelo subjetivo e geralmente pouco
eficiente. A sua baixa eficiência o torna um bom modelo de comparação, posto que todos
aqueles que não o superarem devem avaliar de forma profunda a razão desta falha. Os casos
em que o modelo usado como base de comparação é distinto são claramente indicados no
texto da seção apropriada.
A utilização desta métrica serve para contextualizar os resultados obtidos. Como
dito acima, muitos trabalhos analisam o desempenho de seus algoritmos através da simples
comparação com os resultados obtidos. Isto pode levar o leitor/usuário de tais trabalhos a
considerar como positivo e valioso um resultado de pouca conseqüência real.
É extremamente importante que a comparação com algoritmos simples seja efetuada
e que seja feito um estudo da área científica que gerou os dados sob análise. Isto permite
175
que sejam evitados estudos desnecessários, onde o ser humano já é um classificador mais
preciso ou onde o conhecimento disponível demonstra que precisão absoluta é teoricamente
inatingível.
Estes conceitos serão aplicados em todos os testes aplicados nos conjuntos de dados
usados como “benchmarks” do algoritmo proposto nesta tese.
A.4 Aplicações numéricas do algoritmo
proposto
Podemos agora tentar aplicar nosso algoritmo a alguns conjuntos de dados
tradicionalmente usados em problemas de classificação. Ambos os conjuntos obtidos nesta
seção foram retirados do conhecidos repositório de UC-Irvine (endereço da internet
http://www.sgi.com/tech/mlc/db).
A.4.1 Íris
Este pequeno conjunto de dados, consistindo de 150 exemplos, é muito conhecido e
utilizado em vários trabalhos como uma espécie de benchmark para modelos de
classificações. Os dados consistem em 4 colunas de dados dados por:
•
Comprimento da sépala, em cm.
•
Largura da sépala, em cm.
•
Comprimento da pétala, em cm
•
Largura da pétala, em cm
176
Os dados são divididos em 3 classes diferentes: Iris Setosa, Iris Versicolor e Iris
Virginica, dependendo da espécie da flor na qual foram medidos. As espécies são
praticamente separáveis usando apenas os atributos de tamanho da pétala, como podemos
ver na figura 6-1.
Classes Obtidas dos Dados da Série Íris
Largura da Pétala
3
2,5
2
Iris-Setosa
Iris-Versicolor
1,5
Iris-Virginica
1
0,5
0
0
2
4
6
8
Comprimento da Pétala
Figura 6-1 → Separação das classes com base nos dados de tamanho da pétala.
Os dados foram separados em dois conjuntos: o de treinamento com 80% dos dados
(120 instâncias, consistindo de 40 instâncias de cada classe) e o de teste, com 20% dos
dados (30 instâncias, 10 de cada classe).
Foram executadas 60 gerações de 100 cromossomos em cada população, usando uma
probabilidade linearmente decrescente para o crossover (com valor inicial de 95%) e
probabilidade de mutação de 5%. O módulo de população usou elitismo, mantendo vivas as
duas melhores soluções de cada geração.
O módulo fuzzy foi configurado usando-se 5 conjuntos para cada variável numérica,
criados a partir de uma divisão uniforme do universo de discurso, que, por sua vez, é obtido
a partir dos dados reais. Foram definidos dois conjuntos fuzzy para cada uma das classes
(denominados respectivamente pertence e não pertence), que foram definidas como três
variáveis booleanas. Os operadores fuzzy utilizados foram do tipo min-max e uma média de
uma regra por conjunto fuzzy.
177
Não foram tentados outros valores para nenhum dos parâmetros definidos tendo em
vista o sucesso imediato atingido. Com apenas duas execuções do algoritmo foi atingida
uma taxa de sucesso de 100% para a classificação do conjunto de testes. O conjunto de
regras conseguido foi o descrito na tabela 6-1 a seguir.
a) Pertence(Iris
Virginica):
Muito_Alto(Comprimento_Petala)
AND
Médio(Comprimento_Petala)
AND
Muito_Alto(Largura_Petala)
b) Pertence(Iris_Versicolor):
Muito_Alto(Largura_Petala) AND NOT [ Médio(Largura_Sépala) AND
NOT (Baixo(Largura_Sépala)) ]
c) Pertence(Iris Setosa): Muito_Baixo(Comprimento_Pétala) AND NOT
Muito_Alto(Largura_Pétala)
Tabela 6-1: Regras para classificação das flores Íris, conforme obtido pelo algoritmo proposto nesta tese.
A regra (b) apresenta uma relação importante entre a classe Iris Versicolor e a largura
da sépala das flores. Se forem usadas apenas as duas variáveis de tamanho da pétala, existe
uma área não classificável entre os dois conjuntos, como pode ser visto na figura 6-1. É
necessário então acrescentar uma variável extra que as diferencie, o que foi
automaticamente descoberto através da aplicação do algoritmo desta tese.
Para uma melhor verificação deste conjunto, foi feita uma rotação do conjunto de
validação, isto é, o conjunto de dados foi separado em 5 conjuntos de tamanho igual (30
exemplos) e foram feitas mais quatro execuções do algoritmo, usando cada um dos
conjuntos previamente não usados como conjuntos de testes. Este procedimento é idêntico
ao processo de treinamento five-fold.
As regras obtidas em todas as execuções guardaram uma grande semelhança com as
regras descobertas para o primeiro conjunto de treinamento, baseando-se nos atributos de
tamanho da pétala. Isto já é previsto, tendo em vista que estes dois atributos guardam uma
maior correlação com a separação de classes, conforme informado no banco de dados da
UCI.
178
Para cada uma das execuções, usaram-se os mesmos parâmetros previamente definidos.
Em um dos casos houve um erro de classificação (96,6% de acerto) , em outro ocorreram
dois erros de classificação (93,3% de acerto), enquanto que nos outros dois casos foram
necessárias apenas duas rodadas para que se obtivesse 100% de precisão no conjunto de
validação.
No total, o algoritmo proposto nesta tese cometeu 3 erros de classificação em 150
exemplares (98% de acerto). Este valor compara positivamente com vários outros trabalhos
da literatura, como por exemplo, o sistema neuro-fuzzy descrito em (NAUCK et al., 1995),
que conseguiu 95,7% de precisão na classificação.
Os três exemplos nos quais as regras determinadas pelo algoritmo aqui proposto
incorreu em erro já foram discutidas em (RIPLEY, 1993) e são possivelmente erros
originais de classificação. A base de dados das írises consiste de dados que foram
originalmente coletados por Anderson em 1935, sendo que as plantas foram classificadas
manualmente. Por conseguinte, é possível que haja erros na separação de classes
originalmente determinada, ou que tenhamos indivíduos que são aberrantes para suas
espécies. Estas aberrações podem ser devidas a fatores externos, tais como excesso ou falta
de luz do sol, condições do solo, predadores ou qualquer outro tipo de interação da planta
com o meio ambiente.
Em aplicações de classificação cujos dados são obtidos a partir da natureza, sempre
existirão elementos cujas características são bastante diferenciadas em relação aos seus
companheiros de conjunto. Estes elementos, denominados outliers, fazem com que a
expectativa de se obter 100% de precisão neste tipo de aplicação seja normalmente irreal.
Este conjunto é extremamente simples e facilmente separável. Entretanto, dada a sua
ampla difusão e uso, a correta descoberta de suas classes através da aplicação do algoritmo
proposto é alentadora, justificando a aplicação deste algoritmo em exemplos mais
complexos, descritos a seguir.
179
A.4.2 Diabetes
Estes dados foram originalmente compilados em 1988 pelo National Institute of
Diabetes and Digestive and Kidney Diseases, e consiste em uma tabulação de vários fatores
de saúde dos índios da tribo Pima, uma tribo que vive perto da cidade de Phoenix, no
estado americano do Arizona. Por isto, este conjunto de dados também é conhecido
também pelo nome de Pima Indians.
Este conjunto de dados consiste de 768 exemplos, divididos em um conjunto de
treinamento (512 exemplos) e um conjunto de avaliação (256 exemplos). No conjunto de
avaliação 155 dos indivíduos considerados (60,6% do total) não sofrem de diabetes.
O conjunto de dados consiste nas seguintes variáveis:
•
Número de vezes que a pessoas ficou grávida.
•
Concentração de glicose plasmática duas horas depois da alimentação em um teste de
sobrecarga oral de glicose
•
Pressão sangüínea diastólica (mm Hg)
•
Espessura da dobra da pele do triceps (mm)
•
Insulina em um teste de duas horas (mu U/ml)
•
Índice de massa corporal (peso em quilos/(altura em metros)2)
•
Função de pedigree da diabetes
•
Idade (anos)
Este conjunto é um exemplo típico de base de dados desbalanceada. Uma base de
dados é desbalanceada quandouma classe é representada por um grande númer de
exemplos, enquanto outras são representadas por apenas uns poucos (BATISTA et al.,
2004). Os classificadores tendem a dar grande ênfase aos acertos na classe dominante,
quando a detecção de elementos pertencentes à classe presente em menor número pode ser
fundamental, como no caso desta aplicação, onde o correto diagnóstico da doença é de
fundamental importância.
A estimativa de desempenho pela acurácia assume que todos os tipos de erros
ocorridos na classificação são iguais, assim como todos os benefícios dos acertos. Nos
180
casos de desbalanceamento, a acurácia tende a valorizar os classificadores com fraco
desempenho em classes raras e, possivelmente, terá alta taxa de erro ao classificar novos
elementos destas classes. (ESPINDOLA, 2004). Isto sugere a utilização de outros tipos de
métricas, como por exemplo aquelas baseadas na matriz de confusão (tabela de
contingência), que separa os resultados obtidos por um algoritmo de acordo com a correta
classificação em cada uma das classes, identificadas como “positiva” e “negativa”. A partir
destas classificações, pode-se identificar quatro valroes em termos das classes previstas e
das classes às quais cada tupla realmente pertence:
•
VP: é a quantidade de elementos da classe positiva que foram previstos como
pertencente a esta classe; os elementos são chamados de verdadeiros positivos;
•
FP: é a quantidade de elementos da classe negativa que foram classificados como
pretencentes à classe positiva; os elementos são chamados de falsos positivos;
•
FN: é a quantidade de elementos da classe positiva que que foram classificados
como pretencentes à classe ngativa; os elementos são chamados de falsos
negativos;
•
VN: é a quantidade de elementos da classe negativa que foram classificados como
pretencentes à classe negativa; os elementos são chamados de verdadeiros
negativos;
Na matriz de confusão, os valores da diagonal principal representam os acertos e os
demais valores os erros. As medidas de desempenho mais comuns são (ESPINDOLA,
2004):
1. sensitividade: também chamada de hit rate e recall, ela avalia o quanto um classificador
pode reconhecer os exemplos positivos e é definida por:
Sens =
VP
VP + FN
2. especificidade: avalia o quanto um classificador pode reconhecer os exemplos negativos
e é definida por:
Espec =
VN
FP + VN
181
3. precisão: é a proporção de elementos classificados como positivos que de fato o são:
Pr ec =
VP
FP + VP
A variável de diagnóstico é binária consistindo em uma determinação do fato do
paciente exibir sinais de diabetes de acordo com critério definidos pela Organização
Mundial de Saúde (OMS). Este critério consiste no fato da glicose no sangue duas horas
após a ingestão de alimentos ser de valor igual ou superior a 200 mg/dl em qualquer exame.
Existem vários previsores naïve possíveis, todos baseados em conhecimento médico
básico. Um previsor é baseado no conceito de que mulheres com uma alta taxa de glicose
no sangue (acima de 115) têm diabetes. Para o caso do conjunto de testes, este previsor
naïve está correto em 100 dos 123 (81,3%) casos de mulheres que não têm diabetes em em
87 dos 133 (65,4%) casos em que as pacientes têm diabetes. A taxa geral de acerto é de
187 em 256 (73%).
Existem outros previsores naïve igualmente capazes de prever a diabetes. Estes são
baseados nas variáveis de espessura da pele do tríceps e índice de massa corporal, que são
variáveis que têm alto grau de correlação com a alta taxa de açúcar no sangue.
Outro previsor simples que pode ser considerado é uma implementação do algoritmo
ID3. Tendo em vista que as variáveis são numéricas e este algoritmo sabe trabalhar apenas
com valores categóricos, as variáveis foram divididas em duas categorias (alto e baixo) com
um ponto de corte crisp entre elas. Este ponto de corte foi determinado com auxílio da
literatura médica, disponível no site da Sociedade Brasileira de Diabetes. Rodou-se então
este algoritmo aplicando-se pós-poda e conseguiu-se uma árvore capaz de classificar
corretamente 193 casos (75,4% do total).
Este conjunto já foi usado extensivamente na literatura, usando-se os mais variados
métodos, com resultados das mais diversas precisões. Os mais qualificados obtiveram
precisão de 100% no conjunto de treinamento (característica típica dos algoritmos de
árvores de decisão que não aplicam nenhum tipo de poda), mas nunca excederam 81% no
conjunto de teste.
O resultado de 100% no conjunto de treinamento é esperado em certos métodos, como
por exemplo árvores de decisão, pois esta é uma característica do algoritmo, especialmente
182
se não for usado nenhum tipo de poda. Entretanto, este tipo de precisão normalmente é
conseguido à custa de uma baixa capacidade de extrapolação, como podemos ver, por
exemplo, no trabalho de SUÁREZ (2001), que cria árvores de decisão e consegue
resultados de cerca de 75% de acerto. Outros algoritmos usaram árvores de decisão e
chegaram a resultados semelhantes.
EGGERMONT et al. (2004b) comparam árvores de decisão usando algoritmo C4.5
com uma classificação baseada em programação genética. Esta última obtém resultados
superiores, mas sua taxa de erro também é bastante alta (cerca de 26%).
BLAVYAS et al. (2001) utiliza métodos de interpolação usando técnica de treinamento
de “leave-one-out”, isto é, faz 768 treinamentos (tamanho do conjunto de dados completo)
usando 767 dados para treino e um para validação. Este método é extremamente veloz,
executando em frações de segundo, e conseguiu um desempenho de 76% de acerto em
todos os dados – posto que o processo de “leave-one-out” é repetido para todos os
elementos, não existe mais distinção entre conjunto de dados e conjunto de treinamento. É
importante ter em mente que, dado o seu método de treinamento, este algoritmo conhece
todas as instâncias do conjunto de dados e não existe nenhum tipo de extrapolação real.
Outro método extremamente veloz é a classificação baseada em Support Vector
Machines. MANGASARIAN et al. (1999) usa este método para classificar os dados da
diabetes, conseguindo resultados em torno de 78% de acerto com tempo de treinamento na
faixa dos segundos. Outro artigo que utiliza SVM para classificação é (MEYER et al.,
2002), mas este também não consegue resultados muito melhores, obtendo uma taxa de
acerto de aproximadamente 77%.
LEE (2000) relata um método baseado em redes neurais que consegue uma taxa de
acerto de aproximadamente 79% no conjunto. Este método baseia-se em técnicas
bayesianas para escolha de modelo e consegue um dos melhores resultados descritos na
literatura, apesar de ter um tempo de treinamento muito lento, quando comparado com
outros métodos, tais com SVM ou métodos de regressão.
ALBA et al. (2004), compara a utilização de algoritmos genéticos para treinar redes
neurais que utilizam métodos de gradiente descendente com os métodos tradicionais de
treinamento destas redes e aplica este método em vários problemas de classificação, entre
os quais o problema da diabetes. O artigo reporta resultados inferiores aos apontados até
183
agora, com taxas de acerto próximas de 72% nos melhores resultados, abaixo inclusive do
previsor naïve usado como base de referência.
Foi aplicado então a algoritmo aqui proposto. Foram realizadas 100 rodadas do
algoritmo, cada uma das quais em dois computadores simultaneamente, usando-se o
algoritmo paralelo discutido no capítulo 3 desta tese. Cada computador executou até 80
gerações com 100 indivíduos cada.
Os melhores resultados foram obtidos quando se dividiu o universo de discurso das
variáveis em cinco conjuntos fuzzy criados a partir da divisão uniforme do universo de
discurso de cada variável, além de terem sido usados os operadores min-max para a
composição fuzzy.
Os operadores genéticos tinham aptidão variável, com fitness inicial de 95% para o
operador de crossover e variação linearmente decrescente para a mesma. O operador de
mutação usado tinha uma probabilidade de 5% de alterar uma árvore quando aplicado.
Foi usada uma estratégia elitista no módulo de população, com a manutenção dois
dois melhores indivíduos de uma população para a outra, de um total de 120 indivíduos. A
execução de cada rodada foi interrrompida depois de 60 gerações ou depois de haver
estabilização da avaliação do melhor indivíduo durante 10 gerações, o que poderia
caracterizar convergência genética.
O melhor indivíduo obtido é caracterizado pela regra dada na tabela 6-2
SE
[Alta(Massa_Corporal)
AND
Alta(Número_Gravidez)]
OU
[Muito_Alta(Massa_Corporal)
AND
NOT
OU
Baixa(Pressão)]
[Alta(Concentração_Glicose)] ENTÃO Diabético
Tabela 6-2: Melhor regra para separação do conjunto dos índios diabéticos
Esta regra conseguiu um índice de classificação correta de 87% (443 classificações
corretas em 512 instâncias) no conjunto de treinamento e 80% de acerto (205 acertos em
256 exemplos) no conjunto de teste.
Os resultados podem ser melhor compreendidos através da matriz de confusão,
mostrada na tabela 6-3.
184
Pessoa Sem Diabetes
Pessoa Com Diabetes
(155 casos)
(101 casos)
Previsto Sem Diabetes
129
25
Previsto Com Diabetes
26
76
Tabela 6-3: Matriz de confusão para os resultados obtidos pela aplicação do algoritmo proposto à base de
dados da diabetes.
Estes resultados apontam para uma sensitividade de 83,2%, uma precisão de 83,7%
e uma especificade de 75,1%, demonstrando uma preferência pelo conjunto mais numeroso,
o que sugere a aplicação de uma técnica de compensação de desbalanceamento, questão
que é discutida na seção de conclusão deste capítulo.
U-Theil
U-Theil
(Naïve)
(ID3)
69,0
1,148
1,585
glicose igual a diabetes)
73,0
1,000
1,097
Previsor Naïve (baseado na
heurística ID3)
75,4
0,911
1,000
76,2
0,881
0,967
77,4
0,837
0,878
78,1
0,811
0,890
0,807
0,886
Algoritmo
Precisão
(%)
K Nearest Neighbour
Previsor Naïve (alta taxa de
Técnica de Interpolação
Splines
SVM
Redes Neurais + Algoritmo
Evolucionário
78,2
Discriminante Linear
79,8
0,748
0,821
Método Proposto
80,0
0,741
0,796
Redes Neurais RBF + PCA
82,0
0,667
0,732
Tabela 6-4: Resultados de vários métodos de classificação aplicados ao conjunto da diabetes. O método
proposto aqui na tese só perde para o método de redes neurais associado à análise de componentes principais.
Note-se que o previsor naïve supera um dos métodos descritos na literatura.
185
Estes resultados são equivalentes aos melhores resultados obtidos na literatura e,
apesar do tempo de execução do algoritmo aqui proposto ser muito maior do que outros
algoritmos que obtêm resultados similares, como os métodos de SVM. Um ponto
importante é que o método em questão possui um coeficiente U-Theil baixo (abaixo de
0,75), indicando que ele é um classificador bem mais poderoso que o previsor naïve
proposto. Um resumo das taxas de acerto dos diferentes métodos é mostrada na tabela 6-4.
Uma forte qualidade deste resultado é sua simplicidade e a capacidade de
interpretação direta dos resultados. Por exemplo, observando a regra acima, pode-se ver
uma relação direta entre a massa corporal e a presença de diabetes tanto diretamente
(através da presença dos conjuntos Alto e Muito_Alto para a variável Massa_Corporal)
quanto indiretamente (no caso de um grande número de gestações, que normalmente
implica em uma maior massa corporal da mulher). Este resultado é amplamente conhecido
na medicina, podendo ser encontrado em vários textos médicos, como aqueles encontrados
no site da Sociedade Brasileira de Diabetes e sua descoberta pelo algoritmo indica sua
capacidade de extrair informação significativa de uma massa de dados, oferecendo-a de
forma simplificada e compreensível para o destinatário final (usuário).
A falta de precisão de todos os métodos é patente – o melhor resultado tem taxas de
erros próximas a 20% - o que poderia servir de estímulo para que outros pesquisadores
busquem novos métodos capazes de obter melhores resultados. Entretanto, isto pode ser
inviável nesta massa de dados.
É possível que a imprecisão apresentada por todos os métodos seja devida ao fato de
que apesar da maioria das variáveis envolvidas neste teste serem relevantes para a
compreensão desta síndrome metabólica, existem várias outras componentes envolvidas
que não são citadas, tais como predisposição genética e quantidade de exercício realizada,
entre outras. Todos estes importantes fatores estão ausentes do conjunto de dados
disponível para estudos.
Além disto, temos o problema de que na prática, algumas das variáveis explicativas no
conjunto de dados apresentam forte correlação. Por exemplo, estudos mostraram que
indivíduos obesos, apresentando índice de massa corporal superior a 30, com diabetes ou
não, apresentam, em jejum, níveis de insulina aumentados e a liberam mais após sobrecarga
oral de glicose (SOCIEDADE BRASILEIRA DE DIABETES, 2004). Isto implica que na
186
prática, estas duas variáveis não são independentes e qualquer algoritmo que procure tratálas como tal terá maior dificuldade em realizar uma classificação eficiente deste conjunto
de dados.
A soma de todos estes fatores não implicam na desqualificação do método proposto
aqui, tendo em vista sua capacidade de extrair de uma massa de dados conhecimento
compreensível para o usuário. Isto faz com que, mesmo que a precisão da classificação do
algoritmo aqui proposto não seja próxima de 100%, os resultados obtidos através de sua
aplicação ainda são utilizáveis por um usuário (no caso específico desta aplicação, um
médico) como um guia para melhor compreensão do fenômeno subjacente aos dados.
A.5 Aplicações do algoritmo proposto a
dados categóricos
A.5.1 Análise de crédito
Este conjunto de dados, amplamente utilizado na literatura de classificação e
conhecido popularmente como German Credit, também está disponível publicamente no
repositório da UC-Irvine, consistindo em um conjunto de dados de análise de crédito de
indivíduos alemães com base em seus dados financeiros/empregatícios.
O conjunto contém 1000 instâncias, cada qual com 20 diferentes atributos, variando
desde dados contínuos (como idade e número de créditos com o banco) até dados
categóricos (como a propriedade onde mora e tipo de emprego que a pessoa em questão
possui).
Os atributos destes dados são os seguintes:
187
Status da conta existente: categórico, podendo assumir os valores { no-account, ODM, less200DM, over-200DM}
•
Duração da conta, em meses.
•
Histórico de créditos: categórico, podendo assumir os valores {all-paid-duly, dulytill-now, bank-paid-duly, delay, critical}
•
Propósito do empréstimo: categórico, podendo assumir os valores {car (new), car
(used),
furniture/equipment,
radio/television,
domestic
appliances,
repairs,
education, business, others
•
Valor do crédito, em marcos.
•
Posses: categórico, podendo assumir os valores {less-100, less-500, less-1000,
more-1000, unknown}
•
Estado empregatício atual: categórico, podendo assumir os valores { unemployed,
less-1yr, less-4yr, less-7yr, more-7yrs}
•
Percentagem da prestação sobre valor da renda.
•
Estado
civil/sexo:
categórico,
podendo
assumir
os
valores
{male:
divorced/separated, female: divorced/separated/married, male: single, male:
married/widowed, female: single}
•
Outras garantias: categórico, podendo assumir os valores {none, co-applicant,
guarantor}
•
Anos de residência.
•
Propriedades: categórico, podendo assumir os valores {real estate, building society
savings agreement, life insurance, car or other, not in attribute 6, unknown / no
property
•
Idade, em anos.
•
Outras prestações: categórico, podendo assumir os valores {bank, stores, none}
•
Moradia: categórico, podendo assumir os valores {rent, own, free}
•
Número de créditos existentes no banco.
•
Emprego: categórico, podendo assumir os valores {unemployed/ unskilled - nonresident, unskilled – resident, skilled employee / official, management/ selfemployed, highly qualified employee/ officer}
•
Número de dependentes.
188
•
Possui telefone: categórico, podendo assumir os valores {no, yes}
•
Estrangeiro: categórico, podendo assumir os valores {yes, no}
Os indivíduos podem ser classificados em duas classes (dignos de crédito ou não
dignos de crédito). Assim como nos casos anteriores relatados nesta tese, estes atributos
foram transformados em uma variável binária para classificação.
O conjunto foi dividido em duas partes: um conjunto de treinamento com 666
instâncias e um conjunto de avaliação com 334 instâncias. O conjunto de treinamento
contém 209 pessoas (31,4%) que devem ter o crédito negado e 457 (68,6%) de pessoas
merecedoras de crédito. No conjunto de testes esta proporção é de 243 (72,8%) de bons
pagadores e 91 (27,2%) de pessoas a quem o crédito não pode ser concedido.
Este conjunto de dados foi escolhido para avaliação do algoritmo proposto nesta
tese, pois, assim como o conjunto da diabetes, apresenta uma complexa relação entre os
dados e os conjuntos a serem obtidas que não foi capturada de forma perfeita nos artigos
pesquisados para esta tese.
EGGERMONT et al. (2004b) propõe uma abordagem baseada em programação
genética que obtém uma taxa de acerto de apenas 74%. Entretanto, este artigo afirma que
sua abordagem é melhor do que os algoritmos de árvore de decisão tradicionais, uma vez
que sua implementação consegue uma precisão de apenas 72%.
AUER et al. (2002), ONODA et al. (2001) e GESTEL et al. (2001) aplicam
máquinas de vetor de suporte, sendo que todos apresentam taxas de acerto em torno de 77%
para o conjunto de avaliação.
Outras técnicas aplicadas não conseguem resultados mais impressionantes. Por
exemplo, BAESENS et al. (2002) utiliza um previsor baseado em redes bayesianas
aprendidas através do método de Monte Carlo e consegue uma precisão de 73,1%. No
mesmo artigo é citado que um método bayesiano naïve consegue 76,7% de precisão no
conjunto de treinamento.
O’DEA et al. (2001) descreve um algoritmo que combina características de teoria
da informação para seleção de atributos com redes neurais e que apresenta uma
performance igualmente pobre, atingindo uma precisão máxima no conjunto de treinamento
igual 75,9%.
189
ELKAN (2001) propõe uma forma de avaliação de qualidade da solução a técnica
adotada em muitos artigos, que consiste em associar uma matriz de custo a cada decisão
tomada, e o resultado final é a média dos custos obtidos. Esta matriz de custo associa um
custo a cada classificação correta ou incorreta, tendo um formato similar à matirz de
confusão mostrada anteriormente, Para um problema de classificação de duas classes, a
matriz de custo seria como visto na tabela 6-5, supondo que as classes se chamam
“positivo” e “negativo”.
Classe Negativa
Classe Positiva
Previsto Negativo
C00
C01
Previsto Positivo
C10
C11
Tabela 6-5: Custos obtidos para cada uma das previsões associadas aos valores reais das classes.
A maioria dos artigos que usam esta métrica associaram os seguintes custos às
previsões:
•
C00 = 0
•
C11 = 0
•
C10 = 5
•
C01 = 1
Estes números são baseados no fato de que para um banco, o custo de uma
oportunidade perdida (negar crédito para uma pessoa que o merece) é muito menor que o
custo do dinheiro perdido (oferecer um empréstimo para uma pessoa que provavelmente
não o pagará). Em contrapartida negar crédito para uma pessoa que não é merecedora ou
oferecer crédito para um bom pagador são decisões que não implicam em “custo” para a
instituição de crédito, pois na realidade, convertem-se em lucro ao final do processo.
Para obter dados para inicializar a população mantida pelo programa, assim como
para criar uma base de comparação para o desempenho do algoritmo aqui proposto, foi
implementada uma versão do algoritmo ID3 para montagem de árvores de decisão. Como
explicado anteriormente, este algoritmo é uma heurística do tipo “greedy” que se baseia na
teoria da informação, tentando escolher um atributo de classificação que minimize a
entropia associada à variável de interesse.
190
Fez-se a implementação usando-se um algoritmo de pós-poda para diminuir o
tamanho da árvore e melhorar sua generalização. Os resultados obtidos para esta
implementação apontam uma taxa de acerto de 87,8% na populaçao de treinamento e
76,7% na populaçao de teste, enquanto que de acordo com a matriz descrita acima, o custo
associado a esta árvore é de 0,56. A árvore obtida neste treinamento está mostrada na figura
6-6.
É importante ter em mente que um previsor naïve que afirmasse que todas as
pessoas sao dignas de crédito (categoria=good), obteria uma taxa de acerto, conforme a
descrição do conjunto fornecida acima, de 68,6% na populaçao de teste e de 72,8% na
população de treinamento.
O resultado obtido é perfeitamente consistente com o fato de que a maioria da
população (especialmente da Alemanha, de onde estes dados são originários, e onde a
população é famosa pelo seu respeito às leis e instituições) é boa pagadora. Assim, pode-se
usar estes números como base de comparação para se estabelecer um desempenho mínimo
aceitável.
Se for usado um previsor naïve que indique que todos os aplicantes não são dignos
de crédito, o banco perderá o negócio em 72,8% dos casos, gerando um custo de 0,728 de
acordo com a matriz de custo proposta acima.
Figura 6-6
Árvore de decisão calculada para o conjunto de dados German Credit. O desenho foi
simplificado, colocando-se múltiplos valores por ramos, por questões de tamanho.
191
A árvore de decisão determinada pelo algoritmo ID3 foi transformada em regras e
usada como inicialização para o algoritmo proposto nesta tese. Todas as regras colocadas
foram definidas como desejáveis, de forma que o algoritmo daria preferência a estas, tendo
a liberdade de omiti-las das regras finais.
Foram feitas 50 execuções do algoritmo de 80 gerações com 100 indivíduos cada,
usando-se elitismo (preservação dos dois melhores elementos de cada geração para a
próxima) e operador de crossover com probabilidade de uso linearmente decrescente. O
operador de mutação, quando selecionado, foi aplicado com probabilidade de 5%. Para as
variáveis numéricas foram usados três conjuntos (Alto, Médio e Baixo).
Criaram-se dois conjuntos para previsão da recorrência (“crédito bom” e “crédito
ruim”) e o número de regras médio por conjunto foi três. A inicialização do método
iterativo de separação de dados categóricos (STIRR) foi feita de forma uniforme e foi usado
o operador de soma para atualização dos pesos.
As regras obtidas pelo algoritmo foram aquelas descritas na tabela 6-6 a seguir.
SE job IN {management,skilled} AND Baixo{Installments} ENTÃO Crédito Bom
Se Status IN {over-200DM} ENTÃO Crédito Bom
Se Credit_History IN { All Paid Duly , Bank Paid Duly, Duly-till-now} ENTÃO
Crédito Bom
SE Baixa(Age) AND Housing IN {rent,free} ENTÃO Crédito Ruim
SE
Property
IN
{None}
AND
Personal_Status
IN
{Female_Divorced,Male_Divorced,Single_Male} ENTÃO Crédito_Ruim
Tabela 6-6: Regras que descrevem a separação do conjunto de pessoas com bom e mau crédito.
Estas regras atingem uma taxa de acerto de 86% no conjunto de treinamento (573
acertos em 666 exemplos) e de 78,4% no conjunto de teste (262 acertos em 334 exemplos).
O custo obtido para esta solução de acordo com a métrica descrita acima é de 0,54.
O repositório da UC-Irvine lista vários resultados que foram conseguidos na
literatura de classificação usando a matriz de custo como métrica de precisão. As fontes não
são mencionadas para os resultados, mas eles são dignos de nota, podendo ser vistos na
192
tabela 6-7, junto com sua comparação com os métodos naïve e os resultados obtidos pela
aplicação do algoritmo proposto nesta tese.
A utilização das regras do ID3 é interessante posto que exemplifica o acréscimo de
regras determinadas com base em conhecimento anterior. Outras regras que fossem
proveniente de especialistas na área poderiam ter sido fornecidas ao algoritmo.
A melhora obtida pelo algoritmo proposto em relação ao método ID3 é pequena,
mas mesmo uma diferença de custo pode justificar a aplicação de um algoritmo aos olhos
de um usuário final (banqueiro), dado o prospectivo aumento de ganhos.
U-Theil
U-Theil
Custo
(Sobre ID3)
(Sobre Naïve)
Discriminante Linear
0.535
0.955
0,735
Algoritmo Proposto
0.54
0.964
0,741
ID3
0.56
1.000
0.769
Cart
0.613
1.094
0.842
0.694
1.239
0.953
0.703
1.255
0,965
para todos)
0.728
1.300
1.000
Redes Neurais BackPropagation
0.772
1.378
1.060
Árvores Bayesianas
0.778
1.389
1.068
Funções de Base Radial
0.971
1.733
1.334
C4.5
0.985
1.758
1.353
Redes Neurais de Kohonen
1.160
2.071
1.593
Algoritmo
K Nearest Neighbour (KNN)
Redes Bayesianas
Previsor Naïve (Negar Crédito
Tabela 6-7: Resultados de vários métodos de classificação, conforme descrito no repositório do UCI,
comparado com o previsor naïve, a árvore de decisão montada usando-se o algoritmo de ID3 e o resultado do
algoritmo proposto aqui nesta tese.
Como em outras aplicações, existe um método que tem um desempenho superior
àquele exibido pelo algoritmo aqui apresentado. Entretanto, o método ganhador não é
sempre o mesmo e o algoritmo proposto sempre se apresenta com um desempenho entre
193
bom e ótimo, o que permite concluir que ele é um classificador genérico mais eficiente que
a média.
Outro ponto a ser considerado é a questão da usabilidade dos resultados. A análise
por discriminante linear, o método que obteve o melhor desempenho neste exemplo, usa
uma definição de um hiperplano separador que pode ser pouco compreensível para um
banqueiro.
Por outro lado, os resultados obtidos pelo algoritmo proposto, dado que usam uma
definição lingüística próxima àquela usada no cotidiano, criam uma compreensão do
fenômeno subjacente à questão do não pagamento, podendo levar a uma maior usabilidade
dos seus resultados por parte do usuário final.
A.5.2 Câncer no seio
O conjunto de dados do câncer do seio de Ljubljana também foi obtido no
repositório da UC-Irvine, sendo originário do Centro Médio Universitário de Oncologia, de
Ljubljana, antiga Iugoslávia.
Este conjunto de dados difere do conjunto normalmente denominado de Câncer do
Seio de Wisconsin, pois está focado em dados do paciente, enquanto que o segundo
conjunto consiste em uma série de dados citopatológicos. O conjunto de Wisconsin também
foi motivo de estudos extensos e foi modelado com sucesso em vários trabalhos, entre os
quais podemos apontar (MANGASARIAN et al., 1999).
O conjunto de Ljubljana inclui 201 instâncias de pacientes com câncer sem
recorrência e 85 de pacientes cujo câncer retornou em até um ano após o diagnóstico e
tratamento iniciais.
As instâncias são descritas pelos seguintes 9 atributos:
•
Idade: categórico, podendo assumir os valores {10-19, 20-29, 30-39, 40-49,
50-59, 60-69, 70-79, 80-89, 90-99}
•
Menopausa: categórico, podendo assumir os valores {lt40, ge40, premeno}
194
•
Tamanho do tumor: categórico, podendo assumir os valores {0-4, 5-9, 1014, 15-19, 20-24, 25-29, 30-34, 35-39, 40-44, 45-49, 50-54, 55-59}
•
Nós invadidos : categórico, podendo assumir os valores {0-2, 3-5, 6-8, 9-11,
12-14, 15-17, 18-20, 21-23, 24-26, 27-29, 30-32, 33-35, 36-39}
•
Encapsulado: categórico, podendo assumir os valores {yes, no.}
•
Grau de malignidade, numérico assumindo valores de 1 a 3.
•
Seio afetado: categórico, podendo assumir os valores {left, right}
•
Quadrante do seio afetado: categórico, podendo assumir os valores {left-up,
left-low, right-up,
•
right-low, central}
Irradiado: categórico, podendo assumir os valores {yes, no}
Todos os atributos são nominais, com exceção do grau de malignidade, que
consiste em um número variando de 1 a 3. Este atributo poderia ser tratado também como
uma classe nominal (baixa, média e alta taxa de malignidade), mas se isto fosse feito
perder-se-ia a ordenação entre os conceitos.
O conjunto de treinamento consiste em 191 instâncias, 116 (60,6%) das quais de
pacientes sem recorrência e 75 (39,45%) de pacientes cujo câncer retornou. No conjunto de
teste, temos 95 exemplos, 70 (73,7%) dos quais de pacientes que não recorreram e 25
(26,3%) de pacientes com recorrência.
Um previsor naïve simples que serve como base de comparação para o desempenho
de qualquer previsor consiste naquele que prevê que todos os pacientes não sofrerão
recorrência do câncer, obtendo uma taxa de sucesso de 73,7% no conjunto de treinamento.
Vários trabalhos antigos tentaram fazer previsões com base neste conjunto, com
resultados próximos ou inferiores ao previsor naïve. MICHALSKI et al. (1986) obteve
uma precisão na faixa de 66% a 72%, CLARK et al. (1987), de 65% a 72% e TAN et al
(1988) de 68% a 73,5%.
DUCH et al. (2001) usaram redes neurais para extração de regras e obteve um
resultado de 77,1% no conjunto de treinamento. Um previsor naïve Bayesiano, descrito no
mesmo artigo, obteveve uma precisão de 75,9% no mesmo conjunto.
195
Todos estes desempenhos são similares ao apresentado pelo previsor naïve
escolhido. O sistema baseado em redes neurais, que teve o melhor desempenho entre todos
os trabalhos descritos acima, obteve um coeficiente U modificado de 0,871.
Alguns trabalhos mais recentes baseados em máquinas de vetor de suporte (SVM),
como (AUER et al., 2002, ONODA et al., 2001) obtiveram resultados superiores, chegando
a uma precisão próxima de 97%.
Uma implementação direta do algoritmo ID3 usando pós-poda e considerando todos
os atributos como nominais, obteve uma taxa de classificação correta em 84% dos casos do
conjunto de treinamento e 77% dos casos do conjunto de validação. As variáveis que
ficaram nos pontos mais altos na árvore de treinamento, foram o tamanho do tumor, o
número de nós invadidos e a malignidade do tumor. Estas três variáveis confirmam o bom
senso médico e sugerem que um médico poderia obter resultados melhores do que a
maioria dos métodos propostos.
Com base nesta premissa, pediu-se a um oncologista que analisasse os dados e
predizesse a recorrência do câncer no conjunto de teste. O médico criticou as variáveis
disponíveis, afirmando que elas não lhe forneciam todas as informações necessárias para
avaliar corretamente os pacientes.
Mesmo sob estas restrições, o médico predisse corretamente a recorrência do câncer
em 86% dos pacientes. Este desempenho é superior àquele obtido pela maioria dos métodos
automáticos e sugere que, na posse de todos os dados que considera necessários, o médico
poderia obter resultados mais próximos daqueles obtidos pelos melhores métodos de
classificação.
Levando-se em consideração estas restrições apontadas pelo médico e os resultados
oferecidos pelo algoritmo ID3, foi então aplicado o algoritmo proposto nesta tese.
Foram feitas 30 execuções do algoritmo de 60 gerações com 100 indivíduos cada,
usando-se elitismo (preservação dos dois melhores elementos de cada geração para a
próxima) e operador de crossover com probabilidade de uso linearmente decrescente. O
operador de mutação, quando selecionado, foi aplicado com probabilidade de 10%.
Considerou-se a variável malignidade como sendo numérica. Apesar desta só poder
assumir um conjunto fechado de valores (1,2 e 3), estes estão ordenados entre si e a
transformação em variável numérica fornece a informação de a malignidade de grau 1 está
196
mais próxima da de grau 2 do que da de grau 3, Esta variável foi dividida em 3 conjuntos
fuzzy (baixa, média e alta), cada um dos quais com pico em um dos valores que a variável
pode assumir.
Criaram-se dois conjuntos para previsão da recorrência (“paciente recorrente” e
“paciente não recorrente”) e o número de regras médio por conjunto foi dois. Para
demonstrar a capacidade de embutir conhecimento externo no algoritmo, as seguintes
regras foram sugeridas para o algoritmo. Para o conjunto de Não recorrentes, sugeriu-se
que o conjunto de Baixa(Malignidade) teria influência positiva enquanto que para o
conjunto de recorrentes sugeriu-se que se incluísse o conjunto de Alta(Malignidade) nas
regras.
A inicialização do método iterativo de separação de dados categóricos (STIRR) foi
feita de forma uniforme e foi usado o operador de soma para atualização dos pesos.
Os operadores fuzzy usados foram do tipo min-max
A implementação do algoritmo proposto nesta tese retornou as regras para
classificação dos pacientes descritas na tabela 6-8.
SE Tamanho IN {0-4,5-9,10-14,15-19,20-24} ENTÃO Paciente não
recorrente
SE Irradiado IN {yes} AND Baixa(Malignidade} ENTÃO Paciente não
recorrente
SE Nó_Encapsulado in {no}ENTÃO Paciente não recorrente
SE Tamanho IN {25-29,30-34,35-39,40-44} AND Alta(Malignidade)
ENTÃO Paciente recorrente
Tabela 6-8: Regras que separam o conjunto de pacientes que terão recorrência do câncer daqueles que não
terão, conforme descoberto pelo algoritmo proposto nesta tese.
Este conjunto de regras simples previu corretamente a recorrência de 87 em 95
pacientes (91,6%) do conjunto de teste obtendo um coeficiente U Modificado de 0,319.
Este desempenho é consideravelmente superior ao previsor naïve e melhor do que todos os
métodos apresentados até agora, com exceção das máquinas de vetor de suporte (SVM),
sendo superior também ao desempenho conseguido pelo oncologista consultado.
197
Entretanto, a clareza da informação oferecida por estas regras é um fator adicional a
se considerar em termos de usabilidade de resultados. Um médico poderia facilmente usar
as informações fornecidas por estas regras como base de um projeto de estudo sobre
prognóstico de pacientes com câncer no seio. O mesmo não pode ser dito por resultados
obtidos através do uso de SVM.
Este conjunto de dados possui características impotantes que demonstram o fato de
que a maioria dos métodos simplesmente ataca os dados sem considerar o campo de onde
eles se originaram, a medicina.
Existe ao menos uma variável espúria neste conjunto de dados que consiste no seio
em que o câncer se desenvolveu. Um oncologista consultado declarou não haver qualquer
motivo para que se considere o seio canceroso como variável relevante para o processo de
prognóstico do paciente.
Este fato é comprovável empiricamente nos dados. O número de pacientes que
desenvolveu câncer no seio esquerdo consiste em 51% dos dados, contra 49% do seio
esquerdo. O ganho de informação (IG) associado à escolha desta variável, definido pela
fórmula:
IG (Pr ognóstico) = H ( prognóstico) − H ( prognóstico | seio) , onde
H(prognóstico) é a entropia associada à variável prognóstico
H(prognóstico|seio) é a entropia condicional da variável prognóstico em relação à
variável seio, valor este que é dado pela seguinte fórmula:
H ( prognóstico | seio) =
p ( seio = v j ) H ( prognóstico | seio = v j )
j
O ganho de informação obtido é igual a 0,005, indicando que não há nenhum valor
classificatório relevante associado a esta variável. Todas as outras variáveis do conjunto,
com exceção do quadrante do seio onde o câncer ocorreu, possuem ganhos de informação
pelo menos 10 vezes maior do que esta variável. Isto indica que qualquer classificador que
se utilize desta variável, obterá valores espúrios decorrentes apenas da utilização de um
pequeno espaço amostral.
Ignorar a ciência originadora de um determinado conjunto de dados é prática
comum dentro da literatura de classificação, mas isto não faz com que esta prática seja
elogiável. Ao contrário, ela prejudica o desempenho da maioria dos métodos ou então faz
198
com que estes produzam resultados com pouca relevância para o usuário final dos dados
(no caso desta base de dados específica, os médicos).
Por isto, é importante a existência de métodos que permitam embutir conhecimento
pré-existente e a utilização de técnicas de comparação dos métodos utilizados com métodos
adequados à ciência em questão.
A.6
Comentários
gerais
sobre
a
aplicação de classificação
Muitos trabalhos justificam a aplicação de seus algoritmos, especialmente aqueles
baseados em interpolação de funções, com base em questões de velocidade, alegando que,
mesmo que eles não tenham uma precisão maior do que os trabalhos previamente
estabelecidos, eles são mais velozes. Com base nesta linha de argumentação, a qualidade da
informação é menos importante do que a velocidade com a qual ela foi obtida, o que
certamente é falacioso.
O algoritmo proposto nesta tese é inerentemente mais lento, posto que é baseado em
um algoritmo evolucionário (EA). Por serem heurísticas, EAs normalmente necessitam
múltiplas execuções, o que faz com que o tempo requerido para a obtenção de resultados
seja necessariamente maior do que aquele em algoritmos velozes. Entretanto, isto não
significa por si só que este algoritmo seja inferior.
As aplicações apontadas para o algoritmo desta tese não são “on-line” ou de tempo
real. Apontou-se aqui o uso deste algoritmo em aplicações que podem ser caracterizadas
como parte da área e mineração de dados, na qual busca-se extrair informação valiosa de
um determinado conjunto de dados. Isto posto, fica claro que é necessário se privilegiar a
qualidade da informação, não só em termos da adequação do modelo aos dados existentes
quanto da clareza e da usabilidade destes dados para a pessoa que será o destinatário final
desta informação.
199
Esta clareza está presente no algoritmo proposto nesta tese. As variáveis de interesse
e as características básicas de seu relacionamento estão claramente presentes em todos os
resultados oferecidos pelo algoritmo, o que permite que estes resultados sejam a base de um
processo decisório, seja como hipótese ou como modelo final proposto.
É claro que a velocidade é uma característica importante, especialmente se for
desejável analisar bases de dados de grande volume (VLDB). Entretanto, existem trabalhos
na área de mineração de dados, tais como (TOIVONEN, 1996) que usam amostras
aleatórias de grandes bancos de dados como os conjuntos a serem analisados pelos seus
algoritmos, de forma que o tamanho da massa de dados seja tratável por um algoritmo mais
lento. Este tipo de abordagem poderia ser indicado para se extender a aplicabilidade do
algoritmo proposto aqui para bases de dados de grande tamanho, aliado a uma estratégia de
otimização do algoritmo, descrita em mais detalhes no capítulo final desta tese.
Em termos de precisão, o algoritmo proposto nesta tese apresentou resultados
inferiores àqueles encontrados nos trabalhos com máquinas de vetor de suporte (SVM), que
é a técnica que geralmente apresenta os melhores resultados. O algoritmo aqui proposto,
entretanto, tem um desempenho bom, superando a maioria das outras técnicas descritas na
literatura de classificação.
É importante ressaltar, entretanto, que o algoritmo proposto não foi projetado com o
intuito de classificação, e, por isso, o desempenho razoável no problema de classificação é
um bônus, mostrando a possibilidade de se adaptar o algoritmo para diversos problemas.
Um problema dos algoritmos de SVM é o fato de ainda não ter sido estudado de
forma intensiva a incorporação de conhecimento pré-existente de forma a restringir o
espaço de busca. Isto poderia ser feito incorporando-se outras condições limitantes do
espaço de busca, mas esta questão começou a ser estudada apenas recentemente, e ainda
não está bem desenvolvida. Um exemplo de trabalho que realiza esta incorporação é
(POZDNOUKOV et al., 2004).
A incorporação de conhecimento foi analisada e efetuada dentro do trabalho aqui
proposto, especialmente nos trabalhos de bioinformática. Sem um mecanismo para fazer
esta incorporação, a aplicabilidade de um algoritmo fica reduzida.
200
Outra questão importante apontada neste capítulo é a de se analisar os resultados
obtidos à luz das características inerentes aos conjuntos de dados utilizados e da área
científica de onde estes são provenientes.
Antes de se apontar uma determinada precisão como um sucesso, é necessário se
analisar os dados, de forma a verificar se aquela precisão é significativamente melhor do
que a que seria obtida com classificadores que se utilizam de métodos naïve, que serve
como um limite mínimo de desempenho interessante.
Ademais, estudos da área científica que originou os dados podem permitir uma
análise mais bem fundamentada dos dados, entendendo as limitações que processos
classificatórios podem ter e permitindo que se analise a priori a necessidade de se
efetivamente utilizar um algoritmo de classificação.
A.7 Conclusão
A aplicação do algoritmo a problemas de agrupamento apresentou resultados
interessantes. O algoritmo foi aplicado a conjuntos de dados amplamente utilizados pelos
pesquisadores mundialmente, e que têm se tornado benchmarks para novas técnicas.
Os resultados obtidos na aplicação do conjunto das flores íris demonstrou a
capacidade do algoritmo de realizar um agrupamento de forma eficaz. Este conjunto é
simples e linearmente separável, mas serve como uma demonstração da aplicabilidade da
técnica.
Em seguida aplicou-se o algoritmo obtido ao conjunto de dados da diabetes dos
índios Pima. Este conjunto se mostrou refratário a todos os principais algoritmos
pesquisados durante esta tese, os quais nunca conseguiram resultados muito superiores a
80% de classificação correta.
O algoritmo aqui apresentado também manteve-se nesta faixa de precisão, a qual,
como discutido, é possivelmente um limite para todos os algoritmos computacionais, visto
que há forte correlação entre os dados apresentados e ausência de outros fatores que
poderiam se mostrar expressivos. Como discutido, a precisão pode ser mascarada no caso
201
de desbalanceamento de classes, como é o caso deste conjunto de dados, dando preferência
a classe predominante, o que sugere a aplicação de outras métricas, como sugerido em
(ESPINDOLA, 2004).
A aplicação do algoritmo proposto a este conjunto demonstrou que este pode
apresentar problemas para lidar com classes desbalanceadas, apresentando uma precisão
mais alta que a especificidade. Isto faz com que seja interessante considerar, no futuro, a
aplicação de alguma técnica de compensação de desbalanceamente, como a sugerida em
(BATISTA et al., 2004).
O principal benefício da aplicação deste algoritmo então consiste na simplicidade
das regras obtidas que podem servir como guias simples para médicos que desejem
compreender o fenômeno subjacente à doença que aflige seus pacientes, o que não é
possível com os métodos tipo caixa preta já mencionados nesta seção.
Por último, porém não menos importante, este algoritmo é capaz de lidar com dados
categóricos de forma direta, sem a necessidade de convertê-los para um formato numérico
artificial.
No caso dos exemplos categóricos demonstrados nesta tese, o algoritmo aqui
proposto obteve desempenho superior a todos os métodos naïve, sendo também superior ao
especialista oncologista que analisou os dados do conjunto sobre câncer no seio.
Em ambas as aplicações, existe um método que tem um desempenho superior
àquele exibido pelo algoritmo aqui apresentado. Entretanto, o método ganhador não é
sempre o mesmo, apesar de ser claro que as máquinas de vetor de suporte têm um
desempenho superior ao algoritmo aqui proposto.
Entretanto, o algoritmo proposto nesta tese sempre apresenta um desempenho entre
bom e ótimo, o que permite concluir que ele é um classificador genérico eficiente e cujo
uso pode ser considerado em várias aplicações distintas. Ademais, ele é mais eficiente que a
maioria dos métodos existentes.
Outro ponto a ser considerado é a questão da usabilidade dos resultados. O método
que parece ser o melhor em termos de classificação, inclusive em situações em que é
necessária uma separação não linear, são as máquinas de vetor de suporte.
O problema deste método é que são necessárias transformações não lineares nos
dados originais e o resultado obtido é apresentado na forma de um hiperplano separador no
202
espaço transformado, que pode ainda estar baseado em variáveis que não tenham um forte
significado no processo formatório dos dados. Este tipo de resultado pode ser pouco
compreensível para o usuário final da informação, que tende a ser um leigo em termos de
matemática (um médico, um banqueiro, etc.).
Por outro lado, os resultados obtidos pelo algoritmo proposto, dado que usam uma
definição lingüística próxima àquela usada no cotidiano, criam uma compreensão do
fenômeno subjacente à divisão dos dados nos conjuntos propostos (dignos/indignos de
crédito, diabéticos ou não, etc.), podendo levar a uma maior usabilidade dos seus resultados
por parte do usuário final.
Uma conseqüência do trabalho realizado para esta tese foi a percepção de que é
necessária uma análise profunda sobre as pesquisas realizadas na aplicação dos mais
diversos algoritmos a problemas de classificação, em termos da necessidade de uma
avaliação coerente da aplicabilidade das pesquisas realizadas e da qualidade dos resultados
obtidos.
Quando preparando um trabalho sobre classificação, um pesquisador deve se
perguntar se os resultados obtidos são realmente significativos, não importando a
percentagem de acertos que o sistema em questão obtém. Isto é especialmente verdade
tendo em vista que determinados patamares de acerto podem ser mais significativos em um
problema do que em outro. Por exemplo, uma taxa de acerto em torno de 80% é péssima
para o conjunto da íris, mas muito boa para o conjunto da diabetes.
Nesta tese foi proposto um coeficiente de U-Theil modificado associado ao uso de
métodos naïve que embutem algum conhecimento e/ou análise dos dados. Esta métrica é
extremamente simples, porém é valiosa na avaliação do valor real da precisão obtida por
um método. Se esta métrica fosse aplicada à maioria dos trabalhos de classificação, a sua
real eficência seria descoberta, em termos relativos a previsores simples que não exigem
grandes esforços computacionais.
Esta métrica é apenas uma sugestão, não sendo o interesse final deste trabalho
sugeri-la como padrão-ouro da avaliação de métodos de classificação. KEOGH et al.
(2003) já apontaram a existência de um grande número de coeficientes de testes, muitos dos
quais necessitam de maiores avaliações e comparações para com outros mais antigos e
amplamente usados.
203
O coeficiente de U-Theil modificado foi usado nesta tese apenas como uma forma
simples de criar um padrão de comparação para com métodos naïve. Entretanto, sua
simplicidade e capacidade de fazer uma comparação direta fazem dele extremamente
atrativo para usos em trabalhos de classificação.
O uso deste coeficiente e a análise realizada nesta tese levam à conclusão de que
não é suficiente que os pesquisadores se atenham à apresentação de resultados absolutos ou
que comparem seus resultados apenas com artigos anteriores. Os conjuntos de dados sendo
analisados devem ser estudados de forma extensa e sua estrutura inerente deve ser
apresentada para o leitor.
Além disto, a área científica que gerou o conjunto de dados em questão deve ser
estudada para que o pesquisador tenha suficiente informação para compreender a validade e
aplicabilidade de seus estudos.
Não é razoável simplesmente obter um conjunto de dados e iniciar um estudo
diretamente, sem entender o contexto gerador dos números dentro deste conjunto. Por
exemplo, um pesquisador que queira trabalhar com o conjunto de dados do câncer deve
entender o que é esta doença e como as variáveis presentes no conjunto de dados afetam
seu desenvolvimento.
Este tipo de análise foi feito nesta tese e, por conseguinte, os resultados obtidos
ganharam uma significância maior. Com estes estudos, pôde-se entender certas limitações
inerentes aos conjunto da diabetes e do câncer, além de prover uma discussão saudável
sobre possíveis limitações de precisão no conjunto das írises, que é um representante
interessante de conjuntos de dados provenientes de meios ambientes reais.
Outro ponto a ressaltar é a questão de que os resultados apresentados por este
trabalho apresentam uma análise tentativa dos fenômenos subjacentes aos conjuntos de
dados. Isto faz com que, mesmo que a precisão obtida não seja extremamente alta, o
método aqui proposto sirva como uma ferramenta de extração de conhecimento e de apoio
para pesquisadores em áreas diversas de conhecimento.
204
Download

UM ALGORITMO HÍBRIDO PARA EXTRAÇÃO DE