WAAMD 2007 III Workshop em Algoritmos e Aplicações de Mineração de Dados Uma análise de algoritmos para extração de regras de associação usando Análise Formal de Conceitos Renato Vimieiro1 e Newton José Vieira1 1 Departamento de Ciência da Computação Universidade Federal de Minas Gerais {vimieiro,nvieira}@dcc.ufmg.br Abstract. This paper aims at presenting a performance evaluation of four representative algorithms based on FCA for extracting association rules. The situations where each algorithm is less or more adequate will be discussed here. Resumo. Este artigo apresenta uma avaliação de desempenho de quatro algoritmos representativos baseados em AFC para extração de regras de associação. As situações em que cada algoritmo é mais, ou menos, adequado são discutidas aqui. 1. Introdução Este trabalho apresenta uma avaliação de desempenho de quatro algoritmos representativos baseados em Análise Formal de Conceitos (AFC) para extração de regras de associação. A extração de regras de associação é um importante problema da área de mineração de dados que trata da descoberta de relacionamentos significativos, de natureza probabilística, entre itens de grandes bases de dados [Agrawal and Srikant 1994]. Já a AFC, é um arcabouço formal, baseado na teoria de reticulados [Davey and Priestley 2001], para a análise de dados [Ganter and Wille 1999]. A aplicação de AFC na extração de regras de associação é, de certa forma, natural, visto que, ao organizar os itens de dados em um reticulado, a AFC obtém uma malha de relacionamentos que pode servir de base para a mineração de associações significativas. Os quatro algoritmos avaliados são: AClose, Titanic, Frequent Next Neighbours (FNN) e Galicia. O AClose, proposto por Pasquier et al. [Pasquier et al. 1999], baseiase no tradicional algoritmo para extração de regras de associação Apriori de Agrawal e Srikant [Agrawal and Srikant 1994]. O Titanic [Stumme et al. 2002], também tem inspiração no Apriori, porém o método difere do AClose por construir explicitamente reticulados conceituais. O FNN, proposto por Carpineto e Romano [Carpineto and Romano 2004], utiliza reticulados como guias para a extração de regras. O quarto algoritmo, Galicia, proposto por Valtchev et al. [Valtchev et al. 2002], é um método incremental que também usa reticulados, mas como forma de encontrar conjuntos de itens freqüentes. Os algoritmos foram implementados e submetidos a bases de dados sintéticas. As bases de dados foram geradas para avaliar a influência do tamanho (número de tuplas) e da densidade no tempo de execução dos algoritmos. Os experimentos realizados revelam comportamentos característicos para cada classe de algoritmo. Aqueles baseados no Apriori mostraram-se mais sensíveis a variações na densidade das bases de dados. À medida que a densidade aumenta, os tempos de execução dos algoritmos também aumentam. Já para os algoritmos que usam diretamente 31 WAAMD 2007 III Workshop em Algoritmos e Aplicações de Mineração de Dados Tabela 1. Exemplo de contexto formal Animais peixe sapo homem macaco coruja tubarão aquático terrestre branquias pulmões pêlo pena mamífero razão × × × × × × × × × × × × × × × × × × × × o reticulado, esse comportamento não foi observado; o aumento da densidade não resultou no aumento do tempo de execução. Contudo, eles mostraram-se sensíveis ao aumento do tamanho da base de dados. O aumento do tamanho da base resultou no aumento do tempo de execução desses algoritmos. Neste trabalho, as situações em que cada algoritmo adequa-se melhor serão discutidas. O trabalho está organizado da seguinte forma: a próxima seção apresenta conceitos básicos sobre AFC. A Seção 3 apresenta algumas definições sobre regras de associação e mostra como a AFC pode ser usada para extração das mesmas. A Seção 4 apresenta os resultados das comparações dos algoritmos. Finalmente, a Seção 5 apresenta as conclusões e limites do trabalho e indica pesquisas futuras. 2. Análise formal de conceitos A AFC é um método proposto para a análise de dados estruturados como conceitos formais, entidades matemáticas que formalizam, simplificadamente, a concepção abstrata de conceito como manifestação do pensamento humano. Ela baseia-se na teoria de reticulados para construir hierarquias de conceitos, fundamentando-se em três entidades básicas: contextos formais, conceitos formais e reticulados conceituais. Contextos formais são triplas (G, M, I) em que G é um conjunto de objetos, M é um conjunto de atributos e I é uma relação binária, I ⊆ G × M , chamada relação de incidência. A relação I indica se um objeto g ∈ G possui um atributo m ∈ M (gIm ou (g, m) ∈ I). Normalmente, contextos formais são representados por tabelas cujas linhas representam objetos, colunas representam atributos e as interseções entre linhas e colunas indicam se objetos possuem ou não determinados atributos. A Tabela 1 apresenta um exemplo de contexto formal. Nela, os objetos são animais, os atributos são características dos animais e a relação de incidência indica, para cada animal, as características que ele possui. Por exemplo, o fato de que o animal homem possui a característica razão é indicado pelo sinal × na interseção entre a linha representando o homem e a coluna representando a razão. Seja (G, M, I) um contexto formal e sejam A ⊆ G e B ⊆ M conjuntos de objetos e de atributos, respectivamente. Definem-se as seguintes funções, chamadas operadores de derivação: A↑ = {m ∈ M | ∀g ∈ A gIm}, B ↓ = {g ∈ G | ∀m ∈ B gIm} A função ↑, aplicada a um conjunto de objetos A, retorna o conjunto dos atributos comuns aos objetos de A. Similarmente, a função ↓, aplicada a um conjunto de atributos B, retorna o conjunto de objetos que possui os atributos de B em comum. Assim, para o exemplo da Tabela 1, tem-se: {sapo, macaco}↑ = {terrestre, pulmões} e {terrestre, pulmões}↓ = {sapo, homem, macaco, coruja}. As funções ↑ e ↓ recebem a mesma notação (·)0 , por motivo de conveniência, como é comum em textos sobre AFC. 32 WAAMD 2007 III Workshop em Algoritmos e Aplicações de Mineração de Dados Figura 1. Diagrama de linha do contexto formal da Tabela 1. A partir de contextos formais, pode-se extrair conceitos formais. Um conceito formal é constituído por um conjunto de objetos denominado extensão, e por um conjunto de atributos denominado intensão. Todo objeto da extensão possui todos os atributos da intensão e todo atributo da intensão é comum a todos os objetos da extensão. Ou seja, um conceito formal é um par (A, B), em que A ⊆ G e B ⊆ M , tal que A0 = B e B 0 = A; A é a extensão e B a intensão do conceito. O par ({homem, macaco}, {terrestre, pulmões, pêlo, mamífero}) é um exemplo de conceito formal obtido do contexto formal da Tabela 1. Os conceitos formais podem ser ordenados criando-se um reticulado conceitual. Os conceitos são ordenados pela inclusão de conjuntos sobre as extensões e pela ordem inversa de inclusão sobre as intensões. Sejam (A1 , B1 ), (A2 , B2 ) dois conceitos formais. Então (A1 , B1 ) ≤ (A2 , B2 ) se, e somente se, A1 ⊆ A2 e B2 ⊆ B1 [Ganter and Wille 1999]. Um reticulado conceitual pode ser representado graficamente através de um diagrama de linhas. Os conceitos formais são representados no diagrama através de círculos, sendo sua extensão desenhada abaixo e sua intensão acima do círculo. A relação de ordem estabelecida entre os conceitos formais é explicitada apenas para conceitos formais vizinhos imediatos, por meio de uma linha conectando os círculos que os representam. A Figura 1 apresenta o diagrama de linhas dos conceitos do contexto formal da Tabela 1. A extensão e intensão dos conceitos formais são exibidas de forma reduzida. Nesse caso, um objeto g é desenhado somente na extensão do menor conceito formal (A, B) tal que g ∈ A. Similarmente, um atributo m é desenhado na intensão do maior conceito formal (A, B) tal que m ∈ B. O reticulado conceitual torna explicítos os relacionamentos entre atributos, fornecendo uma base para extração de regras em geral e, em particular, de regras de associação. Exemplificando, dos conceitos formais com rótulo pêlo e mamífero, e terrestre e pulmões no reticulado conceitual da Figura 1, pode-se extrair a seguinte regra, dentre outras: para 50% dos animais, se um animal tem o atributo terrestre, então ele tem pêlo. Observe que nem todo animal terrestre possui pêlo; a coruja, por exemplo, é terrestre e não possui pêlos. Regras desse tipo ilustram regras de associação que são definidas na próxima seção. 3. Regras de associação e AFC Regras de associação são relacionamentos entre atributos, válidos para grupos de objetos em uma base de dados. Considerando uma base de dados representada por um contexto formal, pode-se enunciar formalmente regras de associação como quadrúplas (A, B, s, c) em que A é um conjunto de atributos, chamado de antecedente da regra, B é um conjunto de atributos, chamado de conseqüente da regra, s ∈ [0, 1] é o suporte e c ∈ [0, 1] é a confiança da regra. O suporte de uma regra de associação revela a probabilidade dos 33 WAAMD 2007 III Workshop em Algoritmos e Aplicações de Mineração de Dados objetos da base de dados possuírem os atributos envolvidos na regra. Já a confiança revela a proporção de objetos que possuem os atributos do antecedente e do conseqüente. Normalmente, a regra (A, B, s, c) é exibida por meio da notação A → B(s,c) . Sejam (G, M, I) um contexto formal e A → B(s,c) uma regra de associação em que A, B ⊆ M . O suporte s e a confiança c da regra são obtidos assim: s= |(A ∪ B)0 | , |G| c= |(A ∪ B)0 | |A0 | É comum, ao extrair regras de associação de uma base de dados, definir o suporte mínimo e a confiança mínima das regras a serem extraídas. Esses parâmetros funcionam como uma espécie de filtro e o usuário é quem os define. O problema da extração de regras de associação é dividido em duas etapas: (1) descobrir conjuntos de atributos freqüentes, daqui para frente denominados conjuntos de itens freqüentes, como na literatura relativa a regras de associação, e (2) extrair regras com confiança mínima a partir de cada conjunto de itens freqüente. Os algoritmos baseados em AFC são úteis principalmente na primeira etapa. A primeira etapa da extração de regras de associação consiste em descobrir, em um contexto formal (G, M, I), o conjunto CIF = {X ⊆ M |s(X) ≥ supmin}. A função s : ℘(M ) → [0, 1] dá o suporte de cada conjunto de atributos; ou seja, s(X) = |X 0 |/|G|. O parâmetro supmin é o suporte mínimo. Este problema é computacionalmente caro, já que o espaço de soluções é o conjunto de todos os subconjuntos de atributos de M . Felizmente, o espaço de busca pode ser reduzido, pois, segundo Agrawal et al. [Agrawal and Srikant 1994], os conjuntos de itens freqüentes podem ser obtidos dos conjuntos de itens freqüentes máximos. Um conceito formal (X, Y ) é freqüente, se s(Y ) ≥ supmin. Como o suporte de um conjunto de atributos é dado em função do número de objetos que possuem os atributos do conjunto, o suporte de Y é |X|/|G|. Portanto, (X, Y ) é freqüente, se |X|/|G| ≥ supmin. O conjunto de conceitos formais freqüentes é definido por: CCF = {(X, Y ) ∈ B(G, M, I)|s(Y ) ≥ supmin} em que B(G, M, I) é o reticulado conceitual em questão. Definido o conjunto dos conceitos formais freqüentes, pode-se definir o conjunto dos conceitos formais freqüentes mínimos, como: CCF M = {(X, Y ) ∈ CCF | ∀(X1 , Y1 ) ∈ CCF [(X1 , Y1 ) ≤ (X, Y ) → (X1 , Y1 ) = (X, Y )]}. Este conjunto é importante, pois dá origem ao conjunto das máximas intensões devido à relação de ordem definida sobre os conceitos formais. O conjunto das máximas intensões é, por sua vez, importante, pois ele é igual à família dos conjuntos de itens freqüentes máximos [Pasquier et al. 1999]. Como o conjunto das intensões máximas é igual à família dos conjuntos de itens freqüentes máximos, o reticulado conceitual pode ser usado para a identificação de conjuntos de itens freqüentes. 4. Comparando os algoritmos Nesta seção, será discutido o uso de quatro algoritmos baseados em AFC para extração de regras: AClose, Titanic, Frequent Next Neighbours e Galicia. 34 WAAMD 2007 III Workshop em Algoritmos e Aplicações de Mineração de Dados O AClose, proposto por Pasquier et al. [Pasquier et al. 1999], foi o primeiro algoritmo baseado em AFC para extração de regras de associação. Ele foi inspirado no Apriori [Agrawal and Srikant 1994]. O AClose identifica itens freqüentes através de conceitos freqüentes. Ele encontra os conceitos freqüentes gradualmente, usando a idéia de geradores. Esses geradores são os menores conjuntos de atributos que dão origem a uma intensão através da aplicação da composição dos operadores de derivação (·)00 . Por exemplo, o conjunto de atributos {aquático} na Tabela 1 é um gerador para a intensão do conceito formal ({peixe, sapo, tubarão}, {aquático, branquias}). Durante a i-ésima etapa, o AClose avalia os geradores com i atributos e determina suas intensões. Ele armazena apenas as intensões freqüentes. Para descobrir os geradores de tamanho i + 1, o AClose usa apenas as intensões freqüentes. O algoritmo repete esse ciclo (encontrar intensões e geradores de tamanho i + 1) até que não haja mais geradores a serem avaliados. O Titanic foi proposto por Stumme et al. [Stumme et al. 2002] e também foi inspirado no Apriori, porém sua abordagem é distinta. Ele constrói um reticulado iceberg, que é um reticulado conceitual dos conceitos freqüentes, para encontrar os conjuntos de itens freqüentes. A construção do reticulado iceberg baseia-se nas idéias de geradores usados pelo Apriori e AClose. No entanto, ao invés de aplicar os operadores de derivação para obter uma intensão, o Titanic usa uma função de peso cuja aplicação é computacionalmente mais barata que a aplicação dos operadores de derivação. Outra diferença apresentada pelo Titanic é que ele particiona o conjunto de geradores em classes de equivalência nas quais todos os elementos de uma classe dão origem a uma mesma intensão. Isso evita que dois geradores sejam avaliados para a computação de uma mesma intensão. O Frequent Next Neighbours(FNN), proposto por Carpineto e Romano [Carpineto and Romano 2004], assemelha-se ao Titanic, por construir um reticulado conceitual de conceitos freqüentes. A construção do reticulado conceitual, entretanto, é feita através de uma adaptação do algoritmo de Bordat [Bordat 1986]. O algoritmo encontra os conceitos formais por níveis, sendo que, em cada nível, apenas os conceitos freqüentes são armazenados e usados para encontrar os conceitos freqüentes do próximo nível. Tendo encontrado o reticulado conceitual dos conceitos freqüentes, o algoritmo executa uma busca em largura no reticulado conceitual à procura das regras de associação, iniciando pelo maior conceito do reticulado. As regras são geradas considerando-se apenas um conceito e seus vizinhos imediatos. O Galicia foi proposto por Valtchev et al. [Valtchev et al. 2002]. Assim como o Titanic e o FNN, o Galicia constrói um reticulado conceitual para identificar os conjuntos de itens freqüentes. Contudo, ele constrói o reticulado de forma incremental. Inicialmente, considera-se um contexto formal sem objetos, mas com o conjunto de atributos definido. O conjunto de atributos de cada objeto, por si só, é uma intensão de um conceito formal. Assim, a cada iteração, o algoritmo simula a inclusão de um novo objeto ao contexto e verifica as modificações necessárias para que a estrutura do reticulado seja preservada. Ao contrário dos demais, o Galicia armazena todos os conceitos formais, mesmo os não-freqüentes, pois, após sucessivas inclusões de objetos, alguns conceitos freqüentes podem tornar-se não-freqüentes e vice-versa. Os algoritmos foram escritos em Java e executados em uma máquina virtual Java, versão 1.4.2 para Windows XP, em um computador Pentium 3 com 440MB de memória principal. Não houve qualquer providência para eliminar os overheads desse sistema 35 WAAMD 2007 III Workshop em Algoritmos e Aplicações de Mineração de Dados Tabela 2. Contextos formais usadas para avaliar os algoritmos. ID Contexto # Objetos # Atributos |I| Média de atributos/objeto Densidade (%) 1 M15T3I4D1K 1000 15 3747 3 24,98 2 M15T5I4D1K 1000 15 4935 5 32,90 3 M15T6I4D1K 1000 15 5497 6 36,65 4 M15T8I4D1K 1000 15 6788 8 45,25 5 M10T5I4D10K 10000 10 52899 5 52,90 6 M7T3I2D50K 50000 7 152259 3 43,50 7 T5I4D0.1K 100 10 545 5 54,50 8 T5I4D0.5K 500 10 2676 5 53,52 9 T5I4D1K 1000 10 5286 5 52,86 específico (como, por exemplo, o relativo a coleta de lixo) em nenhum dos quatro algoritmos. No entanto, o fato de que foram escritos na mesma linguagem e executados na mesma plataforma contribui positivamente para que a avaliação relativa dos algoritmos seja significativa. Os testes foram feitos usando bases de dados sintéticas. As bases foram geradas variando-se a densidade dos contextos1 entre 20% e 70% e o número de objetos entre 100 e 1000, além de outras duas bases com 10K e 50K objetos. A Tabela 2 apresenta as características das bases usadas nos testes. As bases de 2 a 4 na Tabela 2 foram geradas para representar bases com diferentes densidades. As bases sintéticas 5 e 6 foram geradas para verificar o comportamento dos algoritmos com bases grandes (com muitos objetos). Já as bases de 7 a 9 foram geradas para avaliar o comportamento do Galicia com bases de diferentes tamanhos. Uma ressalva em relação à comparação dos algoritmos é que o Galicia não foi analisado com os mesmos contextos que os demais. Por ser incremetal, quando o número de objetos no contexto é grande, o desempenho do Galicia é extremamente ineficiente comparado aos demais. Esse problema já era esperado e fora apontado por Valtchev et al. ao introduzir o algoritmo [Valtchev et al. 2002]; segundo os autores, o algoritmo é indicado apenas quando ocorrem pequenas modificações na base de dados. Assim, optouse por avaliar o algoritmo apenas para verificar seu comportamento com contextos com de diferentes tamanhos e densidades. Os tempos de execução dos algoritmos variando-se a densidade dos contextos são apresentados na Figura 2. O teste, nesse caso, foi feito mantendo-se o suporte mínimo em 2% e confiança mínima em 50%. Constata-se, analisando-se a figura, que os algoritmos baseados no Apriori tiveram o desempenho degradado à medida que a densidade dos contextos aumentou. No entanto, esse comportamento não foi observado com o FNN que manteve seu tempo de execução praticamente constante com a variação de densidade. A degradação do desempenho dos algoritmos Titanic e AClose e a manutenção do tempo de execução do FNN são explicadas por dois motivos: o Apriori é indicado para bases de dados esparsas, logo, o aumento da densidade prejudica seu desempenho. Como o Titanic e o AClose baseiam-se no Apriori, seus desempenhos também degradam-se com o aumento da densidade. O segundo motivo é que o pior caso para a construção de reticulados ocorre quando o contexto é equivalente a (G, G, 6=) que possui densidade por volta de 75%. As Figuras 3 e 4 exibem os testes para os contextos 5 e 6. Mais uma vez, fixou-se a confiança das regras em 50% e variou-se o suporte. Os tempos de execução do FNN, que até então mostravam-se superiores aos dos outros, não mantiveram os bons resultados 1A densidade de um contexto (G, M, I) é a razão |I|/|G| × |M |. 36 WAAMD 2007 III Workshop em Algoritmos e Aplicações de Mineração de Dados Figura 2. Desempenho dos algoritmos variando-se a densidade. Figura 3. Desempenho dos algoritmos variando-se o suporte para o contexto 5. Figura 4. Desempenho dos algoritmos variando-se o suporte para o contexto 6. e foram consideravelmente altos. O fato do FNN ter aumentado seu tempo de execução para contextos com muitos objetos é explicado pela construção do reticulado. O custo de aplicação dos operadores de derivação é considerável quando o número de objetos é alto. Como o AClose não constrói o reticulado e o Titanic evita o uso dos operadores de derivação para construí-lo, eles tiveram tempos de execução superiores ao FNN. Figura 5. Desempenho do Galicia variando-se o número de objetos. Figura 6. Desempenho do Galicia variando-se a densidade. Como mencionado, o Galicia foi avaliado separadamente para verificar seu comportamento diante de contextos com diferentes quantidades de objetos e diferentes densidades. Dessa forma, os testes do Galicia serviram como uma simulação para a inclusão de novos objetos à base em situações que podem ocorrer no cotidiano. Os tempos de execução são mostrados nas Figuras 5 e 6. A Figura 5 mostra o resultado dos teste em que simulou-se a inclusão de diferentes quantidades de objetos. Como era esperado, o tempo de execução do algoritmo aumenta proporcionalmente com o aumento do número de objetos a serem incluídos. A Figura 6 exibe o resultado dos testes em que variou-se a densidade dos contextos. Analisando-se a figura, observa-se que o tempo de execução aumentou com o aumento da densidade do contexto, ocorrendo um pico no tempo de execução quando a densidade do contexto ficou próximo a 55%. No entanto, a partir desse ponto, o tempo de execução começou a decrescer com o aumento da densidade. Um fato que, em princípio, é estranho, ocorre devido a características do algoritmo. A cada passo, o algoritmo inclui um objeto ao reticulado, executando as operações necessárias para preservar a estrutura do reticulado. À medida que a densidade do contexto aumenta, a probabilidade de ocorrência de objetos semelhantes, ou até mesmo idênticos, no contexto também aumenta. A inclusão de objetos requer menos operações para atualizar o reticulado. Portanto, o tempo de execução do Galicia para contextos mais densos tende a ser menor. 37 WAAMD 2007 III Workshop em Algoritmos e Aplicações de Mineração de Dados 5. Conclusão A avaliação dos algoritmos baseados em AFC para extração de regras de associação mostrou que eles são uma boa alternativa para extração de regras. Os algoritmos mostraram-se adequados a situações distintas. Em resumo, os algoritmos que usam diretamente reticulados para extração de regras mostraram-se mais eficazes para contextos com alta densidade. Enquanto os algoritmos baseados no Apriori mostraram-se mais eficazes para contextos esparsos com muitos objetos. Existe, ainda, a situação em que o algoritmo é adequado para pequenas atualizações, como o Galicia. Este trabalho tenta suprir deficiências constatadas na literatura no que diz respeito à definição de critérios para escolha de bases de dados para comparação de métodos baseados em AFC para extração de regras de associação. No entanto, este trabalho ainda apresenta deficiências que deverão ser sanadas em trabalhos futuros. O primeiro ponto a ser considerado é a escolha da linguagem de programação para implementação dos algoritmos. Em trabalhos futuros, deve-se considerar implementações ótimas (ou as melhores possíveis) dos métodos. Assim, deve-se fazer análises de estruturas de dados eficientes para implementação dos algoritmos. Esse ponto é crucial já que a maioria dos autores, ao apresentarem seus algoritmos, não discutem aspectos de implementação. O segundo ponto é a escolha de bases de dados mais realistas. As bases de dados têm grande influência no desempenho dos algoritmos. Dessa forma, a escolha de bases de dados que retratem com maior confiança situações reais é extremamente importante. O terceiro e último ponto diz respeito à comparação dos algoritmos baseados em AFC com algoritmos tradicionais para extração de regras de associação. Esses pontos serão considerados em trabalhos futuros e, portanto, será possível fazer análises mais conclusivas sobre a adequação de cada método a cada situação real. Referências Agrawal, R. and Srikant, R. (1994). Fast algorithms for mining association rules. In Proceedings of the 20th Very Large Data Bases Conference, pages 487–499. Bordat, J. P. (1986). Calcul pratique du treillis de Galois d’une correspondance. Mathématiques et Sciences Humaines, (96):31–47. Carpineto, C. and Romano, G. (2004). Concept Data Analysis: Theory and Applications. John Wiley & Sons, England. Davey, B. A. and Priestley, H. A. (2001). Introduction to Lattices and Order. Cambridge Mathematical Textbooks, England, 2nd edition. Ganter, B. and Wille, R. (1999). Formal Concept Analysis: Mathematical Foundations. Springer-Verlag. Pasquier, N., Bastide, Y., Taouil, R., and Lakhal, L. (1999). Efficient mining of association rules using closed itemset lattices. Information Systems, 24(1):25–46. Stumme, G., Taouil, R., Bastide, Y., Pasquier, N., and Lakhal, L. (2002). Computing iceberg concept lattices with TITANIC. Data Knowledge Engineering, 42(2):189–222. Valtchev, P., Missaoui, R., Godin, R., and Meridji, M. (2002). Generating frequent itemsets incrementally: two novel approaches based on Galois lattice theory. Journal of Experimental and Theoretical Artificial Intelligence, 14(2–3):115–142. 38