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:
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:
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:
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:
Esta opção é utilizada para especificar ao programa o nome do arquivo.
Esta opção deve ser invocada quando um arquivo teste foi preparado.
Esta opção permite que o programa agrupe valores discretos, fazendo com que o número de subárvores para alguns nós diminua.
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.
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.
Esta opção invoca janelamento e especifica o número de árvores que irão crescer.
Além de invocar janelamento, esta opção especifica o número de casos a serem incluídos na 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.
O critério para selecionar divisões, descrito no capítulo 2, é alterado para o critério gain, um mais antigo.
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.
CF é o valor usado para simplificar regras em vez de árvores.
As últimas duas opções são:
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.
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
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
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:
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,
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: