Introduction ------------ This is an implementation of the LAESA fast NN classifier. The files in this directory/tgz are: README - this file classifier.h / classifier.c - general module for reading training and test data and invoke the NN classifier. It contains the main function. prototype-vector.h / prototype-vector.c - module that implements functions for dealing with prototypes, basically reads the files and implements the distance between prototypes. In this case, the prototype is the most common one, a vector of real numbers (along with its class), and the distance is the euclidean distance. prototype-strings.h / prototype-strings.c - module that implements functions for dealing with prototypes, basically reads the files and implements the distance between prototypes. In this case, the prototype is a string followed by a class, and the distance is the edit distance. NOTE: you should copy one of the pairs prototype-???.h/prototype-???.c to prototype.h/prototype.c in order for the makefile to generate the executable. LAESA.h / LAESA.c - implements the LAESA fast NN classifier. Makefile - generates the executable (classifier). data - directory with a pair of train and test sets for vectors and for strings. The string data has been obtained from the Chicken Pieces Silhouettes Database, see this paper for more details: G. Andreu, A. Crespo and J.M. Valiente, "Selecting the Toroidal Self-Organizing Feature Maps (TSOFM) Best Organized to Object Recognition". Proceedings of ICNNX97, vol. 2, pp. 1341--1346, Houston, Texas (USA). IEEE. June, 1997. More NN classifiers may be easilly added to the classifier module, and also another kind of prototypes (e.g. strings or trees) may be used instead without modifiying the other modules (only a complete recompilation is needed). About the LAESA algorithm ------------------------- The LAESA was developed by Luisa Micó, Jose Oncina and Enrique Vidal and was published in 1994 (see above). The implementation contained in the LAESA module is a simplyfied implementation which is described in: @article { author = "Moreno-Seco, F.; Micó, L.; Oncina, J.", title = "A modification of the LAESA algorithm for approximated k-NN classification", journal = "Pattern Recognition Letters", pages = "1145-1151", volume = "22", year = "2003" } The original version of LAESA is described in: @article { author = "Micó,L.;Oncina,J.;Vidal,E.", title = "A new version of the Nearest-Neighbour Approximating and Eliminating Search Algorithm (AESA) with linear preprocessing time and memory requirements", journal = "Pattern Recognition Letters", pages = "9-17", volume = "15", year = "1994" } About this implementation ------------------------- This implementation was developed by Francisco Moreno-Seco, Luisa Micó and Jose Oncina during the realization of the Ph.D. thesis of Francisco Moreno-Seco (paco@dlsi.ua.es). Please feel free to contact him if you have any question regarding the implementation. The implementation by default uses the LAESA classifier, but also k-LAESA is supported, just set the parameters -fromK and -toK (see the Usage function in classifier.c for a list of available parameters). Moreover, if you set the variable "ComputeKNN" to 0 and use a value of k>1, the classification rule will become the k-NSN rule (the default rule is the k-NN rule). For more details on the k-NSN rule see these papers (you can also see Francisco Moreno-Seco's PhD. thesis, in spanish): @inproceedings { author = "Moreno-Seco, F.; Micó, L.; Oncina, J", title = "A new classification rule based on nearest neighbour search", address = "Cambridge", booktitle = "Proceedings of the 17 International Conference on Pattern recognition 2004", pages = "408-411", year = "2004" } @article { author = "Moreno-Seco, F.;Micó, L.;Oncina j.", title = "Extending fast nearest neighbour search algorithms for approximate k-NN classification", journal = "Lecture Notes in Computer Science - Lecture Notes in Artificial Intelligence", pages = "589-597", volume = "2652", year = "2003" }