Construção da árvore: todas as instâncias de treinamento estão na raiz da árvore. As instâncias são particionadas recursivamente, com base em seus valores de atributos;
Poda da árvore: são identificados e removidos ramos que possam representar outliers e ruídos para a árvore.
O algoritmo IBk pertencente ao WEKA é a implementação do classificador KNN (classificador vizinho mais próximo) (OVER e HART, 1967). A classificação de cada elemento no espaço é feita de acordo com a distância entre os k objetos mais próximos do elementos. Isso é possível pois é realizado um treinamento com uma base teste e com uma base de treinamento. Normalmente a métrica utilizada para calcular a distância entre os objetos é a distância euclidiana, vista na Equação 5, sendo n o número de dimensões, i a coordenada atual calculada, x_{i} e y_{i} os valores das coordenadas dos dois pontos.
Uma decisão importante é a escolha do número k de vizinhos, como visto na Figura 1, pois se o k for um número pequeno pode não considerar elementos próximos e importantes na classificação. Por outro lado, se k for um número grande, pode haver problemas em definir qual grupo o elemento pertence, pois a comparação é feita com diversos vizinhos diferentes, além de possuir um custo computacional maior.
O algoritmo IB1 é um caso específico do algoritmo IBk, no qual o valor de k = 1, mas a classificação sendo feita da mesma forma do IBk.
O classificador K* é baseado em instâncias. As classes das instâncias que pertencem a parte de teste são classificadas baseando-se em classes das instâncias que pertencem à parte de treinamento que são similares à elas, com alguma função de similaridade. O principal diferencial do classificador K* é que, diferentemente de outros classificadores baseados em instâncias, ele utiliza uma função de distância baseada em entropia (CLEARY e TRIGG, 1995), isto é, a distância entre instâncias é definida pela complexidade de transformar uma instância em outra. Tanto atributos reais quanto atributos simbólicos podem ser utilizados juntos no algoritmo. O cálculo dessa complexidade é feito em duas etapas:
Para a transformação de uma instância à outra é feita uma sequência finita de transformações, começando em uma e terminando em outra.
Também foi coletado os resultados dos erros médios de cada classificador em cada topN. Os resultados podem ser vistos na Tabela 5 e graficamente na Figura 3.
Para selecionar o modelo e a quantidade de atributos ideal a ser utilizado, foram observados o classificador com a maior taxa de acurácia juntamente com o menor valor de erro médio. Levando em conta estes quesitos, o modelo escolhido foi com topN = 20, com o classificador K*, que possui taxa de acurácia de 100% e erro médio de valor 0.
Os nomes dos genes que foram escolhidos do melhor conjunto de treinamento foram no total 84, que podem ser vistos na Tabela 6.
A partir destes genes escolhidos, foram extraídos estes mesmos genes do conjunto de teste. O conjunto de teste possui 23 instâncias, não-rotuladas, que utilizaremos para fazer as predições de suas instâncias. O conjunto de testes foi convertido para que os genes ficassem nas colunas e as instâncias ficassem nas linhas e, na última coluna, foi acrescentada um atributo de classe, sendo preenchido com o carácter ‘?’.
Renomeando o melhor documento de treinamento, o topN = 20 com 84 genes e 69 instâncias, ele foi chamado de pp5i_train.bestN.csv, juntamente com o seu arquivo correspondente arff. O seu correspondente de conjunto de teste foi renomeado para pp5i_test.bestN.csv, com a mesma quantidade de genes e 23 instâncias. O conjunto de testes foi convertido para o formato de arff, com exatamente o mesmo cabeçalho utilizado na base de treinamento, com a diferença de que no atributo classes eram preenchidos de ‘?’.
Utilizando este arquivo escolhido de treinamento, juntamente com o seu respectivo conjunto de testes, e foi gerado as predições das classes com o classificador K*. O resultado das predições de cada instância do conjunto de testes obtido pode ser visto na Tabela 7. Cada instância possui sua respectiva classe predita.
Por fim, foi gerado um arquivo ARFF das predições e elas foram coletadas em um arquivo csv chamado predictionClass.
O projeto prático proporcionou a aplicação de técnicas tanto vistas em aulas quanto técnicas utilizadas em atividades que não puderam ser estudadas em aula, como o algoritmo K*, abrangendo a maioria dos temas estudados durante o quadrimestre, desde o pré-processamento de dados, até a seleção de atributos, classificação e predição de classes em conjuntos de testes.
Também foi importante a utilização de ferramentas práticas para a tarefa de classificação, como a ferramenta WEKA, além das implementações de algoritmos para o auxílio do projeto. É importante notar um resultado interessante na classificação dos conjuntos de treinamento, mesmo que classificadores como o IBk com k = 2, com topN = 20, tenha dado 100% de acurácia, seu erro médio ainda era maior do que o resultado do K*, com acurácia também de 100% para o topN = 20, mas com erro de valor 0. Comparando com outros algoritmos, seus valores de erros são em geral menores, possuindo também bons resultados de acurácia, mostrando o potencial do classificador.