============================================================================== FEATURE SELECTION IN STATISTICAL PATTERN RECOGNITION ============================================================================== This directory contains a collection of feature selection programs. The idea underlying feature selection is to obtain features which maximize the similarity of objects in the same class while maximizing the dissimilarity of objects in different classes. This can be achieved by selecting features which maximize some distance measures. In these programs, two different distance measures are used: 1) Mahalanobis distance (when the two covariance matrices are equal) 2) Bhattacharyya distance (when the two covariance matrices are not equal) If a program has "Jm" as a suffix, it simply indicates that the feature evaluation criterion chosen is the Mahalanobis distance measure (Jm). On the other hand, if a program has "Jb" as a suffix, it indicates that the Bhattacharyya distance (Jb) is chosen as the criterion function. Note that these programs are designed for selecting features between "two" classes. ============================================================================== Brief details of the programs ============================================================================== exhaustiveJm, exhaustiveJb : programs performing exhaustive search to obtain an optimal solution. It requires a lot of memory and computational time. bbJm, bbJb : A method known as the "branch and bound (bb)" method can be used to obtain an optimal solution provided that the monotonicity condition is satisfied. It also requires a lot of memory and computational time but much less than those of exhaustive search. sfsJm, sfsJb : Suboptimal solutions can be obtained using sequential forward selection (sfs) method. In this method, one feature at a time is added to the currently selected feature set. It suffers from the nesting effect, i.e. once features are included into the currently selected feature set it cannot be removed if it is later found to be superfluous. sbsJm, sbsJb : A counterpart to SFS method is known as "the sequential backward selection (sbs) method". In this case, one feature at a time is deleted from the set of available features. It also suffers from the nesting effect, i.e. once features are removed, they cannot be added to the currently selected feature set again. plmrJm, plmrJb : This "plus l minus r (plmr) method" can prevent nesting effect but it does not necessarily mean that the selected features are optimal. It is basically a combination of SFS and SBS. If the values of "l" is chosen to be greater than "r" then it is a bottom up process. On the other hand, if the values of "l" is chosen to be smaller than "r" then it is a top down process. sffsJm, sffsJb : This method is known as the "sequential forward floating selection (sffs) method". This method can prevent the nesting effect without having to decide the values of "l" and "r" as in the plmr method. sbfsJm, sbfsJb : This is a counterpart method to the SFFS method. It is known as the "sequential backward floating selection (sbfs) method". ============================================================================== INPUT FORMAT : (a) when the covariance matrices are not equal, the format of the input file is as follows: Number of total features (Header) Mean vector of class 1 Covariance matrix of class 1 Mean vector of class 2 Covariance matrix of class 2 (b) when the covariance matrices are equal, the format of the input file is as follows: Number of total features (Header) Mean vector of class 1 Mean vector of class 2 Common covariance matrix ============================================================================== BUGS : When running the branch and bound, segmentation faults may occasionally occur. These are due to the memory is not enough. ============================================================================== For more details : see TR 1/91 or Nam Choakjarenwanit's 1992 PhD thesis. ==============================================================================