Guia para usar o sistema

Neste capítulo serão apresentados todos os comandos e suas opções, juntamente com alguns exemplos para facilitar a compreensão. Apesar de existirem muitas opções, poucas delas serão realmente utilizadas pelo usuário normal.

Arquivos

Nome dos arquivos

O programa não impõe nenhuma restrição quanto ao nome dos arquivos, ficando somente a critério do sistema operacional que se esta usando.

Arquivo .names

Este arquivo é onde estarão definidos os nomes das classes, dos atributos e do valor dos atributos. Cada nome consiste de uma string de caracteres de qualquer tamanho, com as seguintes restrições:

  • Não pode ser apenas um único caracter '?'.

  • Se os caracteres ',' , ' : ' , ' | ' e ' \ ' , fizerem parte do nome, estes caracteres devem ser antecedidos por uma barra invertida ' \ ' , pois, estes caracteres tem significado especial para o programa.

  • O nome pode ser composto por espaços em branco, mas, no caso de vários espaços, eles serão substituídos por apenas um.

  • Um ponto pode aparecer no nome, desde que não seguido por espaço em branco.

    No arquivo, a definição das classes deve aparecer em primeiro lugar, separadas por virgula ' , ' e ao final desta definição um ponto. Depois, deve-se definir o nome dos atributos e seus valores. Cada nome é seguido por ':' e da especificação do seu tipo, finalizado por um ponto. Existem quatro tipos de especificações para um atributo:

  • ignore: faz com que o valor para este atributo seja ignorado.

  • continuous: indica que o atributo é composto por valores numéricos inteiros ou ponto flutuante.

  • discrete N: indica que o atributo é composto por N valores discretos, sem que seja necessários especificá-los.

  • uma lista de valores separados por virgula: indica que os valores são discretos, especificando cada um.

    Um exemplo de definição de um arquivo .names é apresentado na figura 9-1.

    Arquivo .data

    Este é um arquivo onde serão descritos os casos de treinamento que serão usados na construção da árvore de decisão ou na geração das regras. Neste arquivo estão definidos o valor dos atributos para cada caso, sendo que cada valor é separado por virgula e no final da definição acrescenta-se um ponto.

    O nome dos valores, para atributos discretos, obedecem as mesmas regras apresentadas anteriormente para o arquivo .names. Os valores dos atributos continuous podem ser apresentados na forma inteira, ponto fixo ou ponto flutuante. Os atributos com valores desconhecidos ou irrelevantes são especificados por '?'. E, como no arquivo .names, a '|' é utilizada par colocar comentários no arquivo. Um exemplo de um arquivo .data é apresentado na figura 9-2.

    Arquivo com extensão .test

    Este arquivo é onde ficarão os casos reservados para teste do classificador. Não é obrigatória a existência deste arquivo, e, para que este teste seja executado será necessário acrescentar a opção -u. O formato deste arquivo é o mesmo do .data.

    Arquivos gerados pelo sistema

    Os programas geram vários arquivos com conteúdos identificados pelas suas extensões, que podem ser:

  • unpruned, contém uma ou mais árvores de decisão não simplificada, geradas pelo c4.5. Este arquivo é utilizado pelo c4.5rules.

  • tree, contém uma árvore de decisão simplificada, gerada pelo c4.5.Se mais de uma árvore for gerada usando janelamento, este arquivo contém a melhor. Este arquivo é utilizado pelo programa consult.

  • rules, contém o conjunto de regras gerado pelo c4.5rules. Este arquivo é utilizado pelo programa consultr.

  • toi[+identificador] e roi[+identificador], i variando de 0 até um número qualguer; saídas geradas por programas em diferentes seções do script xval.sh quando este é executado.

  • tres[+identificador] e rres[+identificador]; resumo contendo os resultados da cross-validation para árvores e regras.

    Restrições quanto ao tamanho

    O programa não impõe limites quanto ao número de classes, atributos, valores de atributos, ou número de casos no arquivo de dados e testes. Estas restrições são de acordo com o compilador e o sistema operacional. As classes, atributos e o número de valores por atributo são representados por short int e, na maioria das implementações do C, isto permite mais de 16000 de cada. O número de casos de treinamento e de testes são representados por full int, normalmente permitindo 10^9 de cada. O programa ainda fica restrito a capacidade de alocação de memória oferecida pelo sistema operacional.

    Rodando os programas

    Todos os programas permitem que opções sejam invocadas por linha de comando. Todas estas opções serão apresentadas aqui com uma pequena explicação e o default para cada opção.

    Indução com árvores de decisão

    O comando utilizado para gerar uma árvore de decisão é o c4.5, que possui os várias opções que podem aparecer em qualquer ordem:

  • -f arquivo (default: DF)

    Esta opção é utilizada para especificar ao programa o nome do arquivo.

  • -u (default: não será feito teste)

    Esta opção deve ser invocada quando um arquivo teste foi preparado.

  • -s (default: sem agrupamento)

    Esta opção permite que o programa agrupe valores discretos, fazendo com que o número de subárvores para alguns nós diminua.

  • -m (default: 2)

  • -c CF (default: 25%)

    Este valor afeta a simplificação da árvore de decisão, discutido no capítulo 4. Quando menor este valor, maior será a simplificação da árvore de decisão. O valor default funciona aparentemente bem, mas, no caso de haver grandes diferenças na taxa de erro para os casos testes e a taxa estimada, pode-se diminuir ou aumentar CF tentando aproxima-los.

  • -v nível (default: nível 0)

    O programa pode mostrar o que está ocorrendo durante a execução do algoritmo. Quanto mais alto o nível, mais informação é apresentada. No nível 0 nenhuma informação é apresentada. O nível máximo é o 5.

  • -t n (default: 10)

    Esta opção invoca janelamento e especifica o número de árvores que irão crescer.

  • -w tamanho (default: varia de acordo com o tamanho do arquivo)

    Além de invocar janelamento, esta opção especifica o número de casos a serem incluídos na janela inicial.

  • -i incremento (default: 20% da janela inicial)

    Esta opção invoca janelamento e especifica o número máximo de casos que podem ser incluídos na janela a cada iteração. Qualquer que seja o valor desta opção, pelo menos metade dos casos de treinamento mal classificados serão incluídos na janela.

  • -g (default: critério gain ratio)

    O critério para selecionar divisões, descrito no capítulo 2, é alterado para o critério gain, um mais antigo.

  • -p (default: limiar rigoroso)

    Esta opção deve ser invocada quando se desejar que os testes do tipo A>Z e A <=Z sejam suavizados, como descrito no capítulo 8, definindo se pontos subsidiários Z- e Z+.

    Indução com regras

    O programa de indução com regras, c4.5rules, só pode ser chamado quando a árvore de decisão para o conjunto de casos ao qual se deseja trabalhar já estiver sido construída pelo programa c4.5. As primeiras quatro opções para o c4.5rules tem o mesmo significado que no c4.5.

  • -f arquivo (default: DF)

  • -u (default: não será feito teste)

  • -v nível (default: nível 0)

  • -c CF (default: 25%)

    CF é o valor usado para simplificar regras em vez de árvores.

    As últimas duas opções são:

  • -F confiabilidade (default: sem teste de importância)

    Se esta opção é utilizada, o teste de importância de cada condição no lado esquerdo da regra é checado usando teste "exato" de Fisher; cada condição deve ser julgada importante para o nível de confiabilidade especificado. Isto geralmente terá o efeito de produzir regras mais pequenas que o método de simplificação padrão, com algum risco de super generalização para tarefas com poucos dados.

  • -r redundância (default: 1.0)

    O número de bits necessários para codificar um conjunto de regras, como apresentado no capítulo 5, pode ser aumentado substancialmente pela presença de atributos irrelevantes ou redundantes. Esta opção pode ser usada para especificar um fator de redundância aproximado quando o usuário tem razão para acreditar que existem muitos atributos redundantes. Uma redundância de 2.5, significa que existem 2.5 vezes mais atributos do que o necessário.

    Interpretadores de modelos de classificação interativos

    Estes programas, consult para árvore de decisão e consultr para regras, são idênticos em relação a entrada de dados, portanto, serão tratados juntos. Estes programas só podem ser utilizados depois do modelo apropriado Ter sido criado pelo c4.5 e c4.5rules, e são invocados da seguinte forma

    consult [-f arquivo] [-t]

    consultr [-f arquivo] [-t]

    onde, -f é usado para especificar o nome do arquivo e -t se o usuário desejar ver a árvore de decisão ou conjunto de regras impressos na tela antes de iniciar a interação.

    A interação com o usuário se dá através de prompts que consistem do nome de um atributo seguido por ': '. Se o atributo for discreto o usuário pode responder com

  • '?' , indicando que o valor do atributo é desconhecido;

  • um valor;

  • um conjunto de possíveis valores na forma

    v1:p1, v2:p2, v3:p3, ..., vn:pn.

    onde, vi's são possíveis valores e pi's as probabilidades correspondentes a estes valores. Se os vi's não cobrem todos os valores possíveis para o atributo e a soma dos pi's for menor que 1, a probabilidade que falta para completar 1 é dividida entres os outros valores.

    No caso de valores continuous as respostas podem ser

  • '?', indicando que o valor do atributo é desconhecido;

  • um número;

  • um intervalo consistindo de dois números separados por um hifém. O valor assim especificado será tratado como sendo distribuído uniformemente dentro do intervalo.

    Cada resposta deve ser seguida por enter e no caso de ter sido feita uma entrada incorreta o programa irá fornecer uma mensagem de erro e apresentar o prompt para o atributo novamente.

    Depois do programa ter recebido toda informação necessária para fazer a classificação do caso ele apresenta a sua conclusão, de acordo com o capítulo 8, seguida pelo prompt

    Retry, new case or quit [r, n, q]:

    As respostas possíveis para este prompt são:

  • q, o programa termina;

  • n, quando se deseja entrar com um novo casos;

  • r, quando se deseja reavaliar o caso. A cada prompt o valor fornecido anteriormente será apresentado entre colchetes, possibilitando ao usuário continuar com o mesmo valor, para isso apenas pressionando enter, ou entrar com um novo valor.

    Conduzindo experimentos

    Um bom modo de se realizar experimentos é dividir o conjunto de casos em um conjunto de treinamento e um de testes, daí, construir o modelo usando os casos de treinamento e usar os testes para avaliar a sua performance. Mas, quando o conjunto de casos é pequeno, esta avaliação não vai ser eficiente, pois, é necessário em número razoável de casos teste para se medir a performance do modelo e mesmo o conjunto de dados sendo grande ainda pode se ter grandes variações na performance do modelo dependendo das divisões feitas no conjunto de casos.

    Uma estimativa mais precisa pode ser conseguida usando se cross-validation. Neste processo os dados disponíveis são divididos em N blocos, fazendo com que o número de casos e a distribuição das classes, dentro de cada bloco, seja o mais uniforme possível. A partir destes blocos são então construídos N modelos de classificação, sendo que cada modelo utiliza N-1 blocos na usa construção e o bloco que não foi utilizado é usado para teste. A media da taxa de erro para cada um dos N casos testes é uma boa predição para a taxa de erro para um modelo construído de todo o conjunto de casos.

    Para facilitar esta tarefa, o usuário conta com um script chamado xval.sh. O comando para executar o script é

    Xval.sh arquivo N [opções] [+identificador]

    onde,

  • arquivo, é o nome do arquivo sem a extensão. O script busca pelos arquivos com extensões .names , .data e .test. Se encontrar um arquivo .test,, o script une o arquivo com o .data antes de dividir os blocos.

  • N, é o número de blocos a ser utilizado, este nunca deve exceder o número de casos disponíveis.

  • [opções], se elas aparecerem, serão aplicadas aos programas c4.5 e c4.5rules.

  • [identificador], é opcional e serve para ser usado como rótulo, facilitando o reconhecimento da saída gerada por esta cross-validation.

    O script divide os caso em N blocos e a partir destes blocos são então construídos N modelos de classificação, sendo que cada modelo utiliza N-1 blocos na usa construção e o bloco que não foi utilizado é usado para teste. O resultado resumido destes testes para árvore de decisão será colocado no arquivo .tres[+identificador] e o das regras em rres[+identificador]. Nos arquivos arquivo.toi[+identificador] e arquivo.roi[+identificador] estarão contidas as saídas dos programas c4.5 e c4.5rules para a i-ésima das N rodadas.

    Por exemplo, se temos um arquivo arq.data e desejamos vazer uma cross-validation, com agrupamento de valores e um fator de redundância de 2.5 na geração do conjunto de regras. O comando seria

    xval.sh arq 10 -s -r 2.5 +teste

    que irá gerar as seguintes saídas:

  • A saída individual para cada sequência para o c4.5 estará nos arquivos arq.toi+teste, i variando de 0 a 9, e um resumo de tudo em arq.tres+teste.

  • A saída individual para cada sequência para o c4.5rules estará nos arquivos arq.roi+teste, i variando de 0 a 9, e um resumo de tudo em arq.rres+teste.

  • Quando é chamado uma cross-validation com 10 blocos para o arquivo labor-negotiation, o sumário para as regras, contido no arquivo labor-negotiation.rres, é apresentado na figura 9-3. Para a primeira seqüência ocorreram 3 erros nos casos de treinamento e 1 nos teste, depois é apresentado o mesmo para as outras N-1 seqüência e ao final a média para os casos de treinamento e para os casos teste. O último sendo a estimativa da cross-validation no caso das regras terem sido construídas a partir de todos os casos.