• Sonuç bulunamadı

İnsana Özgü Dil (Anthropomorphism) ve Canlılık (Animism)

4. SONUÇ VE TARTIŞMA

4.2. İnsana Özgü Dil (Anthropomorphism) ve Canlılık (Animism)

Esta seção apresenta alguns algoritmos de aprendizado para domínios de dados esta- cionários, notados como algoritmos estáticos, e aplicáveis a domínios cuja distribuição dos dados de teste não se diferem da distribuição dos dados de treino. Considere a seguinte notação, seja o conjunto de treinamento X = {x1, x2, . . . , xN}, com N instâncias, onde

a i-ésima instância é representada por xi = (xi1, xi2, . . . , xip, yi), sendo p o número de

atributos e um rótulo de classe associado, yi, pertencentes a uma das classes do conjunto

Ω = 1, . . . , ωµ}. Uma instância não rotulada para ser classificada é representada por z = (z1, . . . , zp); a classe atribuída por um classificador ao exemplo de dado não rotulado z é representado por ϕ(z).

No que segue são apresentados alguns algoritmos de aprendizado bem conhecidos para a construção de um classificador, sendo que alguns deles serão utilizados como compara- tivos para o algoritmo KAOG, apresentado no Cápitulo 3.

2.3.3.1 Aprendizado Bayesiano

Métodos de aprendizado Bayesiano permitem uma abordagem probabilística para in- ferência. Baseiam-se na idéia de que o problema em questão é governado por uma dis- tribuição de probabilidade e que decisões ótimas podem ser tomadas considerando essas probabilidades junto ao dado observado. Esta abordagem baseia-se em quantificar os benefícios entre as várias decisões de classificação usando probabilidade e o custo envol- vendo tal decisão.

De acordo com Mitchell (1997), o aprendizado bayesiano tem, ao menos, duas carac- terísticas interessantes. A primeira, algoritmos de aprendizado Bayesiano, além de serem práticos, permitem calcular explicitamente a probabilidade de uma dada hipótese. A segunda razão, é que, o aprendizado Bayesiano provê base para o entendimento de out- ros métodos de classificação que não lidam com probabilidades diretamente. Dentre as principais características do aprendizado bayesiano, pode-se destacar: 1) cada novo dado classificado pode incrementar ou decrementar a probabilidade estimada de uma hipótese estar correta; 2) o conhecimento armazenado no conjunto de treinamento pode ser com- binado com novas instâncias para determinar a probabilidade final de uma hipótese; 3) métodos Bayesianos permitem uma predição probabilística das hipóteses; 4) novas hipóte- ses podem ser classificadas por meio da combinação de múltiplas hipóteses, ponderadas pelas respectivas probabilidades.

Para a apresentação do teorema de Bayes, considere P (h) a probabilidade de que a hipótese h ocorra, também é chamado de probabilidade a priori de h e reflete algum conhecimento prévio sobre a chance de h ser a hipótese correta. Se não houver nenhum conhecimento prévio sobre as hipóteses, todas as hipóteses recebem a mesma probabili- dade a priori. De modo similar P (X) denota a probabilidade a priori de que o conjunto

X seja observado. A probabilidade P (X|h) denota a probabilidade de que X ocorra

dado a hipótese h seja verificada. No caso do aprendizado de máquina o que interessa é P (h|X), ou seja, a probabilidade de h ocorrer dado X, chamado de probabilidade a

posteriori de h. O aprendizado Bayseano é baseado no teorema de Bayes, e fornece uma

maneira de calcular a probabilidade a posteriori P (h|X) dado as probabilidades P (h),

P (X) e P (X|h), a relação entre as probabilidades é mostrada na Equação (2.19). P (h|X) = P (X|h)P (h)

P (X) (2.19)

A equação de Bayes mostra que, observando o conjunto X, pode-se converter a proba- bilidade a priori P (h), em uma probabilidade a posteriori P (h|X), que é a probabilidade de ocorrer h dado o conjunto de treinamento X. A classificação aplica o teorema de Bayes a tarefas de aprendizado nas quais a função alvo pode assumir qualquer valor dentro de um conjunto finito Ω. Dado um conjunto de treinamento, a abordagem do algoritmo Naive Bayes para a classificação de um nova instância z é atribuir o valor mais provável

de Bayes, como mostra a Equação (2.20). ϕ(z) = arg max ωj∈Ω P (ωj|z1, z2, . . . , zp)P (ωj) P (z1, z2, . . . , zp) (2.20) Uma maneira de estimar ambos os termos da Equação (2.20) baseia-se no conjunto de treinamento. Por exemplo P (ωj) pode ser estimado contando a frequência de exem-

plos de classe ωj no conjunto de treinamento. Entretanto, estimar os diferentes termos P (z1, z2, . . . , zp) dessa maneira, não é viável a menos que o conjunto de dados seja muito

grande. O problema é que o número desses termos é igual ao número de instâncias pos- síveis vezes o número de classes.

A classificação baseia-se na simples suposição de que os valores dos atributos são condicionalmente independentes, dado o valor da classe. Em outras palavras, dado uma classe para a instância z, a probabilidade de ocorrer a conjunção z1, z2, . . . , zp é dada pelo

produto das probabilidades individuais dos atributos P (z1, z2, . . . , zp|ωj) = ∏iP (zi, ωj).

Substituindo na Equação (2.20), pode-se estimar ϕ(z) de acordo com a Equação (2.21).

ϕ(z) = arg max ωj∈Ω P (ωj) ∏ i P (zi, ωj) (2.21)

No qual ϕ(z) denota a classe resultante da classificação. O método de aprendizado Bayesiano envolve estimar as varias probabilidades P (X) e P (h|X), baseadas na frequên- cia no conjunto de treinamento. Uma diferença interessante entre o aprendizado Bayesiano comparado a outras técnicas, é que, neste não há busca explicita no espaço de hipóteses. Ao invés disso, as hipóteses são formadas simplesmente contanto a frequência de dados no conjunto de treinamento. A principal desvantagem do aprendizado Bayesiano é que assume-se que o problema seja definido em termos probabilísticos, e que todos os valores probabilísticos relevantes são conhecidos.

2.3.3.2 O método dos vizinhos mais próximos - KNN

O método dos K vizinhos mais próximos (K Nearest Neighbors (KNN)) é um método de aprendizado de máquina baseado em instância, uma vez que consiste simplesmente em armazenar o conjunto de treinamento em questão. Quando uma nova instância precisa ser classificada, um conjunto de instâncias similares é recuperado da memória e usado na classificação da nova instância. Esse tipo de classificador é baseado em memória, e não requer treinamento de um classificador. Dado uma entrada de teste z, encontram-se os K vizinhos mais próximos, ou seja as K instâncias mais próximas, segundo alguma medida de distâncias, em relação à z, e então, a classificação é feita usando o critério de maioria dos votos entre os K vizinhos. O conceito de proximidade implica o uso de uma medida de distância, o exemplo trivial é a distância Euclidiana, dentre outras possibilidades estão a distância Manhattan e a distância tangente (Duda et al., 2001).

O algoritmo KNN calcula as distâncias entre o exemplo a ser classificado z e todas as instâncias, xi, pertencente ao conjunto rotulado X. Em seguida, as K instâncias

mais próximas à z são selecionadas, de modo que a classe atribuída a z, será a classe mais comum entre as K instâncias selecionadas. Quando K é um valor par pode ocorrer empate na classificação da nova instância, nestes casos Hastie et al. (2009) sugerem resolver o impasses de maneira aleatória. Esta decisão, por mais curiosa que pareça, faz sentido pelo fato de que outro tipo de decisão pode favorecer outro valor de K. Por exemplo, se o critério de decisão em caso de empate fosse optar pela classe do vizinho mais próximo, toda vez que houvesse empate seria como usar K = 1. O processo de classificação feito pelo KNN pode ser escrito como na Equação (2.22).

ϕ(z) ={ωj| max ωj∈Ω

∀xi∈Λz,K

δωj,yi} (2.22)

Na equação, Λz,K corresponde à K-vizinhança do exemplo z definida pelos seus K

vizinhos mais próximos, δij é o delta de Kronecker, no qual δij = 1, se i = j, e δij = 0,

caso contrário. Note que a classe do novo elemento, segundo a classificação pelo KNN, pode mudar várias vezes conforme o valor de K aumenta.

Apesar de sua simplicidade, o algoritmo KNN tem sido utilizado com sucesso em diver- sos problemas de classificação incluindo reconhecimento de escrita manual (Simard et al., 1993), classificação de imagens de satélite (Michie et al., 1994), etc. O KNN geralmente é aplicado com sucesso onde cada classe do conjunto rotulado possui vários dos padrões possíveis, e a borda de decisão é muito irregular. Um dos principais problemas associado ao método KNN, é justamente a escolha do seu único parâmetro K. A melhor escolha para K depende do dado em questão. Geralmente, valores pequenos para K produzem bordas de decisão irregulares, como mostra a Figura 2.6(a), tendendo a distinguir todo dado individualmente em regiões de ruído, o que compromete a generalização. Já valores altos para K reduzem o efeito de ruídos na classificação, mas tornam a borda de decisão entre as classes, menos distintas e mais suaves, como mostrado na Figura 2.6(b). A es- colha de K, na maioria das vezes é feita através de tentativa e erro ou através de alguma heurística como validação cruzada.

À primeira vista o desempenho assintótico do método dos vizinhos mais próximos parece ser muito bom, considerando a simplicidade da regra. Uma explicação heurística para isto deve-se ao fato de que a variável associada à classe da instância a ser classifi- cada, z, é uma variável randômica. A probabilidade de que ϕ(z) = ωi é simplesmente a

probabilidade a-posteriori P (ωi|z). E se z for muito próximo de xi, pode-se assumir que P (ωi|xi)≈ P (ωi|z). Assumindo que existe um número ilimitado de dados de treinamento, xi será muito próximo do exemplo z. Se a atribuição das classes nos dados de treinamento

foi feita de maneira correta então o valor de z é o valor que maximiza a probabilidade

a-posteriori P (ωi|z).

KNN com peso Uma das variações naturais do KNN, o algoritmo KNN com peso,

consiste em priorizar a ordem de vizinhança entre os K vizinhos mais próximos do exemplo de dado a ser classificado, i.e. quanto menor a distância do novo dado para um vizinho,

Figura 2.6: Superfícies de decisão para o método KNN, para os valores de K, (a) K = 1 e (b) K = 15 (Hastie et al., 2009).

maior será a influência deste na classificação. Dessa forma a regra de classificação depende do inverso da distância, como mostra a Equação (2.23).

ϕ(z) =j| max ωj∈Ω∀xi∈Λz,K δωj,yi 1 d(xi, z)} (2.23) Outras formas de peso podem ser usadas, como 1/d(xi, z)2, que intenssifica o peso da

distância. Note que ao inserir o peso baseado na distância, o aumento significativo no número de vizinhos tem pouca influência na classificação, pois instâncias rotuladas longe do exemplo a ser classificado contribui muito pouco para a decisão final.

KNN baseado em protótipo O algoritmo KNN pode ser adaptado para atuar como um método baseado em protótipo. Métodos baseados em protótipo representam o conjunto de treinamento por meio de um conjunto de pontos no espaço de atributos. Em geral, esses pontos, chamados protótipos, não são pontos do conjunto de treinamento - com exceção do caso do 1NN, onde cada instância do conjunto de treinamento pode ser visto como um protótipo. A grande vantagem desse tipo de método é a redução no espaço de busca, no entanto, para isso é necessário um método para definir os protótipos, algumas opções incluem métodos de agrupamentos como k-means (MacQueen, 1967), (Lloyd, 1982), e de quantização (Kohonen, 1989).

Uma vez definidos, cada protótipo tem uma classe associada e, em geral, cada classe têm um mesmo número de protótipos. Dado um novo exemplo a ser classificado, verifica- se a distância deste aos protótipos e a classificação é feita de acordo com a distância do protótipo mais próximo. Apesar de certas vantagens, o KNN baseado em protótipos ainda depende do parâmetro que controla o número de protótipos que deverão ser encontrados para cada classe. Há também a possibilidade de utilizar outros valores de K que não um, no entanto, esta possibilidade leva em conta dois parâmetros similares que só aumentará

o número de modelos a ser testado na fase de seleção de modelos, sem grandes vantagens no desempenho do algoritmo.

2.3.3.3 Árvores de decisão

As árvores de decisão enquadram-se na categoria dos métodos não métricos. Isto implica que este tipo de abordagem lida naturalmente com atributos nominais (Quinlan, 1986), todavia permitem variações que possibilitam lidar com atributos numéricos. Alguns dos principais métodos de indução de árvores de decisão são, o C4.5 (Quinlan, 1993), CART (Breiman et al., 1984), BOAT (Gehrke et al., 1999) e RainForest (Gehrke et al., 2000).

A indução de uma árvore de decisão a partir de um conjunto de treinamento utiliza a abordagem dividir para conquistar. Por se tratar de uma estrutura em árvore, o processo de criação é naturalmente definido de maneira recursiva. Portanto, dado um conjunto de instâncias rotuladas, cria-se um nó e verifica-se se este nó será folha ou nó intermediário. No primeiro caso interrompe-se o crescimento da subárvore e o nó folha representa a classe de maior ocorrência no nó. No segundo caso, a subárvore continua sendo expandida, o que implica em selecionar um atributo e um limiar (threshold), deste atributo, que dividirá novamente o conjunto usado na criação do nó corrente para continuar a crescer a árvore. Um ponto importante nesse tipo de método é saber quando parar de crescer a árvore ou parar de dividir os nós. Esta decisão implica no critério usado pelo algoritmo para decidir se, a partir do nó corrente, continua dividindo ou se torna o nó folha. Intuitivamente, um nó é definido como folha se toda instância do subconjunto possui uma mesma classe, que será a classe que o nó folha representará. Este caso, no entanto, seria o caso ideal onde o subconjunto em questão é puro. No caso geral, entretanto, para se gerar subconjuntos puros pode ser necessário muitas iterações e ocasionar o crescimento demasiado da árvore. O problema em gerar árvores grandes, como adverte o princípio de Occam (Mitchell, 1997), é que estas árvores geralmente apresentam características indesejadas, tais como, aumento no tempo de classificação, superadaptação e, por consequência, perda de generalização bem como dificuldade de entendimento e visualização humana.

Com o fim de evitar esses problemas, é necessário aceitar alguma mistura entre classes nos subconjuntos dos nós folha. Uma maneira usada pelo C4.5 (Quinlan, 1996) é somar os erros apresentados pelos nós filhos e verificar se esta soma é maior que o erro em classificar todas as instâncias do nó em questão como a classe mais frequente. No caso positivo o nó em questão é tornado folha e as suas subárvores são removidas (o que é chamada de pré-poda). Outro artifício para evitar o crescimento desnecessário da árvore é o uso do parâmetro m, que indica o número mínimo de instâncias de treinamento em um subconjunto necessário para que o respectivo nó ainda possa ser dividido.

Quando decide-se pela divisão de um determinado nó, a seleção de um atributo para a divisão em um determinado nó é feita por meio de alguma medida para quantificar a pureza desse atributo, a medida mais utilizada é a entropia (ou impureza de informação),

definida na Equação (2.24).

Ent(XT) =

ωj

P (ωj)log2P (ωj) (2.24)

Na equação, Ent(XT) é a entropia do conjunto XT, sendo este o conjunto de dados do

nó T . O cálculo da entropia considera as probabilidades das classes, P (ωj), que podem

ser definidas como a porcentagem de instâncias do conjunto X pertencentes às classes

ωj ∈ {ω1, . . . , ωµ}. A entropia mede a impureza do conjunto, variando no intervalo [0, 1],

onde 0 indica conjunto com apenas uma classe e 1 com igual número para todas as classe. A partir da entropia, pode-se definir o ganho de informação, como na Equação (2.25).

ganho = Ent(X)−

B

k=1

PkEnt(Xk) (2.25)

Na equação, Pk = |Xk|/|X| é a fração de instâncias de X direcionadas ao filho k, na

equação B refere-se ao grau da árvore, B = 2 no caso de árvore binária. O maior ganho de infromação representa a melhor divisão do conjunto em questão, pois como o primeiro termo é constante para cada nó, a divisão que resulta no menor valor para a somatória é a divisão que resulta em conjuntos mais puros.

Ocasionalmente, parar de crescer a árvore pode resultar no chamado efeito horizonte, que informalmente significa deixar de explorar todo o espaço de dados. Ao parar de particionar algum nó, as subárvores que resultariam desta divisão, nunca serão geradas, e o espaço de dados que estas subárvore explorariam não será visitado. Este efeito pode ocorrer quando a condição de parada de particionamento está mal ajustada ou a condição de parada é atingida mais cedo por conta do desempenho global da árvore. A saída para esse tipo de problema é a poda (ou pós-poda), onde se cresce a árvore ao máximo, i.e. até todas as folhas representarem conjuntos de uma só classe, então aplica-se a poda. A poda é regulada pelo parâmetro fator de confiança cf, para o qual, maior valor implica em poda mais agressiva. Apesar de existir duas possibilidades, pré-poda e pós-poda, a seleção de modelos em árvore de decisão deve considerar ambas, inclusive usando as duas juntas através da variação dos parâmetros m e cf.

A classificação de uma nova instância começa no nó raiz, onde se verifica um deter- minado valor de atributo da nova instância. Cada nó filho corresponde a um possível (e mutuamente exclusivas) caminho à verificação do atributo abordado no nó pai. O pro- cesso de classificação é feito percorrendo-se a árvore, de forma descendente, de acordo com as verificações corretas até atingir um nó folha que, por definição, determina uma classe sem exigir teste.

2.3.3.4 Redes neurais

As redes neurais artificiais podem ser vistas como um sistema de processamento par- alelo e distribuído que consiste de um grande número de processadores (neurônios) simples

e massivamente conectados. As redes neurais proporcionam uma abordagem robusta na resolução de vários tipos de problemas, incluindo aproximação de funções, tomada de de- cisão, classificação, controle, etc. (Haykin, 2008). Definida de maneira simplista, uma rede neural é uma rede com processadores simples (cada um deles tendo, possivelmente, uma pequena quantidade de memória local) conectados por meio de canais de comunicação (conexões) aos quais usualmente estão associados valores (pesos) numéricos. De acordo com Palma Neto e Nicoletti (2005), uma rede neural pode então ser caracterizada,

• por seus processadores, chamados neurônios;

• pela função de ativação que representa o estado do neurônio;

• pelo padrão de conexão existente entre os neurônios, arquitetura da rede;

• por seu algoritmo de treinamento (também chamado de algoritmo de aprendizado).

O algoritmo de treinamento de uma rede é um conjunto de regras por meio das quais os pesos das conexões são ajustados usando um conjunto de treinamento. A arquitetura de uma rede neural pode ser caracterizada pelos neurônios que a compõe, pelo padrão de conexão entre eles e pela organização desses neurônios em camadas (quando for o caso). A arquitetura da rede é uma das maiores responsáveis pelo seu desempenho e, por essa razão, seu principal parâmetro. A definição da arquitetura da rede não é tarefa trivial, dentre as maneiras de se obter a melhor arquitetura para uma determinada tarefa pode-se catego- rizar os métodos em manuais e automáticos. No primeiro grupo, encaixa-se talvez o mais usado e menos eficiente deles, o método de tentativa e erro além dos métodos de seleção de modelos citados na Seção 2.3.2. A definição automática da arquitetura por sua vez pode ser dividida em dois grupos, métodos evolucionários e não evolucionários. Nos métodos evolucionários a estrutura da rede é obtida por meio de metodologias evolutivas, como algoritmos genéticos e busca estocástica baseada em populações, etc. (Schaffer et al., 1992), (Yao, 1999). Já nos métodos não evolucionários compreende todos os outros méto- dos que constroem a rede por meios que não são evolucionários. Dentre as abordagens de métodos não evolucionários estão os algoritmos neurais construtivos (Parekh et al., 2000), (Nicoletti e Bertini Jr., 2007), (Franco et al., 2009) que constroem a rede ao longo do treinamento. Este tipo rede tem sido usada com sucesso em aplicações de diagnósti- cos médicos (Figueira et al., 2006) a filtro de sinais (Giordano et al., 2008). Outra cat- egoria de método não evolucionários são os métodos baseados em poda (Reed, 1993), (Lahnajärvi et al., 2002), a qual pode ser vista como uma abordagem contrária ao méto- dos construtivos, uma vez que o aprendizado é iniciado com uma rede bastante grande e por meio da poda de neurônios ajusta-se a rede ao problema em questão.

O desempenho da rede é consequência direta da arquitetura da rede treinada por um algoritmo de aprendizado, dessa forma pode-se dizer que arquitetura e algoritmo de aprendizado tenha um papel fundamental no aprendizado da rede.

O Perceptron (Rosenblatt, 1958) é um algoritmo básico para o aprendizado de um vetor de pesos w (de um único neurônio), também usado na definição de uma função linear discriminante. O Perceptron pode ser visto como um separador linear que pode ser treinado para classificar conjuntos de vetores como pertencentes a uma, de duas regiões separadas por um hiperplano. A regra de atualização do vetor de pesos utiliza somente reforço negativo, sempre que uma instância xi é classificado incorretamente, o vetor de

pesos w é atualizado de acordo com a Equação (2.26).

w = w− η(d − o)xi (2.26)

Na qual d é a saída desejada, ou seja a classe correta no contexto de classificação; o é a saída do neurônio em questão. No entanto um único neurônio treinado com o Percep- tron somente é capaz de distinguir entre classes linearmente separaveis. Para representar funções não lineares é necessário uma rede com vários neurônios dispostos em camadas com a restrição de que as saídas dos neurônio sejam uma função não linear de suas en- tradas (Mitchell, 1997). Uma possível solução é utilizar a função sigmóide como função de ativação para o Perceptron, como mostrado na Equação (2.27).

F (net) = 1

1 + e−net (2.27)

Na equação, net corresponde ao potencial de ativação do neurônio, ou seja net = wx.

Note que os valores de F , variam de 0 a 1, aumentando monotonicamente com relação à entrada. Uma propriedade interessante da função sigmóide é o fato de que sua derivada pode ser facilmente expressa em termos de sua saída, como mostra a Equação (2.28).

F′(net) = dF (net)

dnet = F (net)(1− F (net)) (2.28)

Outras funções facilmente deriváveis podem ser usadas ao invés da função sigmóide, por exemplo, a tangente hiperbólica. Dada uma rede multicamadas formada por um número fixo de neurônios com este tipo de função de ativação e interconexões, é pos- sível utilizar o algoritmo backpropagation para o ajuste dos pesos. O algoritmo baseia-se