1. Introdução

Weka é um software livre do tipo open source para mineração de dados, desenvolvido em Java, dentro das especificações da GPL (General Public License) que ao longo dos últimos anos se consolidou como a ferramenta de mineração de dados mais utilizada em ambiente acadêmico.

Embora a ferramenta possua como ponto forte a mineração de classificadores em bases de dados, também pode ser utilizada para executar outras tarefas, especialmente a mineração de regras de associação. Curiosamente, é muito difícil encontrar artigos com exemplos de utilização da Weka no data mining de regras de associação. Esta situação serviu de motivação para a produção deste artigo, que mostra o passo-a-passo para a execução do data mining de regras de associação na Weka. O artigo é destinado a pessoas que já possuem alguma experiência no uso da ferramenta (quem já utilizou a Weka para executar algoritmos de classificação, por exemplo) e conhecem os conceitos básicos sobre regras de associação (algoritmo Apriori, medidas de interesse, etc.).

O restante do artigo está dividido da seguinte forma. A Seção 2 apresenta um exemplo possível de formatação de uma base de dados do tipo "market basket data" para mineração na Weka. A seguir, na Seção 3, apresenta-se a forma de configurar os parâmetros de entrada e executar a mineração das regras de associação. As conclusões são apresentadas na Seção 4.

2. Formatação da Base de Dados

A ferramenta Weka trabalha com arquivos de entrada no formato ARFF, que corresponde a um arquivo texto contendo um conjunto de observações, precedido por um pequeno cabeçalho. O cabeçalho é utilizado para fornecer informações a respeito dos campos que compõem o conjunto de observações.

É importante observar que o formato ARFF foi originalmente proposto para a mineração de classificadores; no entanto, ele pode ser "adaptado" para a mineração de regras de associação. Essa adaptação resulta em uma base de dados com uma estrutura um pouco esquisita, porém capaz de ser manipulada pela ferramenta. A seguir apresenta-se um exemplo de base de dados ARFF contendo 9 transações e envolvendo 6 itens.



@relation "Transacoes"

@attribute I1 {y, n}
@attribute I2 {y, n}
@attribute I3 {y, n}
@attribute I4 {y, n}
@attribute I5 {y, n}
@attribute I6 {y, n}
 
@data
y,y,?,?,y,?
?,y,?,y,?,?
?,y,y,?,?,?
y,y,?,y,?,?
y,?,y,?,?,?
?,y,y,?,?,?
y,?,y,?,?,?
y,y,y,?,y,?
y,y,y,?,?,?

    Observe que a base possui duas características:
  • (1) Especificação dos itens do domínio no cabeçalho: todos os itens que compõem a base precisam ser especificados no cabeçalho do arquivo ARFF. Cada item é tratado como um atributo distinto. Eles devem ser configurados como sendo do tipo categórico, suportando apenas dois valores (ex: {y,n} ou {yes,no}). Em nosso exemplo, a base possui 6 itens distintos: I1, I2, I3, I4, I5 e I6.
    Veja que essa formatação não é muito prática, pois se estivesse sendo realizada a mineração de uma base contendo 1000 itens (ex: 1000 produtos de um supermercado, algo bastante comum), seria preciso montar um cabeçalho com 1000 linhas.
  • (2) Indicação de itens ausentes: este é o detalhe mais importante. Na formatação das transações foi usado um macete: os itens ausentes são representados com “?”. Observando a base exemplo, tem-se que a primeira transação contém os itens I1, I2 e I5 (representados por "y") e não possui os itens I3, I4 e I6 (a ausência dos itens é representada por "?"). Por sua vez, a segunda transação possui os itens I2 e I4.
    Se o " ? " não for utilizado, a Weka acaba minerando regras envolvendo itens ausentes, o que é bastante inconveniente. Um exemplo: {caviar = 'n' } => {feijão = 'n'}, regra que poderia ser interpretada como "quem não compra caviar, também não compra feijão". Para uma base de dados real, milhares de regras inúteis deste tipo acabariam sendo geradas.

3. Mineração de Regras de Associação na Weka

A seguir apresenta-se o passo-a-passo para a mineração de regras de associação na Weka, a partir da base de dados exemplo.

PASSO 1: digite as informações da base mostrada na Figura 1 e salve com a extensão .ARFF (exemplo: “transacoes.arff”). Após abrir a Weka, clique no botão “Open file...” para importar a base.

PASSO 2: mude a caixa de seleção que mostra o atributo classe e selecione a opção “No class” (destacado na figura abaixo). Isso é feito porque na mineração de regras transacionais não existe o conceito de atributo classe (conceito associado à tarefa de classificação).

Selecione a opção NO CLASS

PASSO 3: clique na aba "Associate". Efetue duplo clique onde está escrito “Apriori” para poder configurar os parâmetros do algoritmo

Clique duplo em Apriori

PASSO 4: a janela de configuração irá abrir. Para executar o exemplo, você poderá configurar os parâmetros de acordo com o que está indicado na figura abaixo.

Configurar os parâmetros

Uma breve orientação sobre a configuração destes parâmetros é apresentada a seguir. Dentro da ferramenta Weka, você pode utilizar o botão “More” para visualizar uma janela de ajuda com mais informações sobre os parâmetros.

    Parâmetros principais:
  • lowerBoundMinSupport: suporte mínimo.
  • upperBoundMinSupport: limite superior para o suporte.
  • delta: reduz o suporte iterativamente por este valor, partindo do limite superior até que o limite inferior seja alcançado.
  • metricType: é um parâmetro muito importante. Trata-se da especificação da medida de interesse que irá determinar a validade da regra. O conjunto de resultados minerados será ordenado de acordo com essa medida. No exemplo, foi selecionada a medida conhecida como confiança, mas a Weka permite a escolhida outras medidas: lift, conviction e leverage (que levam em conta a correlação entre os itens da base).
  • minMetric: valor mínimo para a métrica selecionada em metricType.
  • numRules: número máximo de regras que serão mostradas na tela de resultados.
  • outputItemSets: se configurado como TRUE, na saída, além de exibir as regras mineradas, exibirá também os itemsets frequentes.
    Outros parâmetros:
  • car: pode ser mantido com valor "false".
  • classIndex: será ignorado pelo algoritmo de mineração, pois a base não possui atributo classe.
  • removeAllMissingColumns: pode ser mantido com valor "false".
  • verbose: pode ser mantido com valor "false".

PASSO 5: clique no botão “OK”. A seguir clique em “Start”. As regras de associação serão mineradas e exibidas na tela de resultados.

Clique em Start

4. Conclusões

Este artigo apresentou um roteiro para a mineração de regras de associação na popular ferramenta Weka. Uma característica atraente da ferramenta é a sua simplicidade. A configuração dos parâmetros e a execução do algoritmo de mineração são feitas através de uma interface agradável e intuitiva.

Como principal característica negativa, encontra-se o fato de a base de dados a ser minerada precisar estar estruturada em um formato que não é muito prático (o que pode inviabilizar o uso da ferramenta em algumas aplicações reais). É preciso especificar todos os itens do domínio na seção de cabeçalho e indicar os itens ausentes em cada transação com o uso do símbolo "?".