A computer-implemented method of identifying a biomarker signature for distinguishing the presence and absence of a disease in the source of a sample executed by a processor, comprising: (a) receiving a training data set representative of gene expression data, and a training class set, the training class set identifying a class associated with each of the elements in the training data set, the elements of the training class set corresponding to known class identifiers of a disease status; (b) receiving a test data set; (c) generating a first classifier for the training data set by applying a first machine learning technique to the training data set and the training class set, (d) generating a first test class set by classifying the elements in the test data set according to the first classifier, (e) transforming the training data set by subtracting from each of the elements in the training data set an amount corresponding to a centre of a set of training class centroids, wherein each training class centroid is representative of a centre of a subset of elements in the training data set, (f) for each of a plurality of iterations: (i) transforming the test data set by subtracting from each of the elements in the test data set an amount corresponding to a centre of a set of test class centroids, wherein each test class centroid is representative of a centre of a subset of elements in the test data set, (ii) generating a second test class set by classifying the elements in the transformed test data set according to a second classifier, wherein the second classifier is generated by applying a second machine learning technique to the transformed training data set and the training class set; (iii) when at least a predetermined number of elements of the first test class set differ from the corresponding elements of the second test class set in at least a predetermined number of elements, storing the second class set as the first class set and storing the transformed test data set as the test data set and return to step (i); otherwise, outputting the second classifier as a biomarker signature for distinguishing the presence and absence of a disease in the source of a sample. (a) receiving a training data set representative of gene expression data, and a training class set, the training class set identifying a class associated with each of the elements in the training data set, the elements of the training class set corresponding to known class identifiers of a disease status; (b) receiving a test data set; (c) generating a first classifier for the training data set by applying a first machine learning technique to the training data set and the training class set, (d) generating a first test class set by classifying the elements in the test data set according to the first classifier, (e) transforming the training data set by subtracting from each of the elements in the training data set an amount corresponding to a centre of a set of training class centroids, wherein each training class centroid is representative of a centre of a subset of elements in the training data set, (f) for each of a plurality of iterations: (i) transforming the test data set by subtracting from each of the elements in the test data set an amount corresponding to a centre of a set of test class centroids, wherein each test class centroid is representative of a centre of a subset of elements in the test data set, (ii) generating a second test class set by classifying the elements in the transformed test data set according to a second classifier, wherein the second classifier is generated by applying a second machine learning technique to the transformed training data set and the training class set; (iii) when at least a predetermined number of elements of the first test class set differ from the corresponding elements of the second test class set in at least a predetermined number of elements, storing the second class set as the first class set and storing the transformed test data set as the test data set and return to step (i); otherwise, outputting the second classifier as a biomarker signature for distinguishing the presence and absence of a disease in the source of a sample. (i) transforming the test data set by subtracting from each of the elements in the test data set an amount corresponding to a centre of a set of test class centroids, wherein each test class centroid is representative of a centre of a subset of elements in the test data set, (ii) generating a second test class set by classifying the elements in the transformed test data set according to a second classifier, wherein the second classifier is generated by applying a second machine learning technique to the transformed training data set and the training class set; (iii) when at least a predetermined number of elements of the first test class set differ from the corresponding elements of the second test class set in at least a predetermined number of elements, storing the second class set as the first class set and storing the transformed test data set as the test data set and return to step (i); otherwise, outputting the second classifier as a biomarker signature for distinguishing the presence and absence of a disease in the source of a sample.