|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||
java.lang.Object
|
+--milk.classifiers.MIClassifier
|
+--milk.classifiers.MINND
0657.591B Dissertation Multiple-Instance Nearest Neighbour with Distribution learner .
It uses gradient descent to find the weight for each dimension of each
exeamplar from the starting point of 1.0. In order to
avoid overfitting, it uses mean-square function (i.e. the Euclidean
distance) to search for the weights.
It then uses the weights to cleanse the training data. After that it
searches for the weights again from the starting points of the weights
searched before.
Finally it uses the most updated weights to cleanse the test exemplar
and then finds the nearest neighbour of the test exemplar using
partly-weighted Kullback distance. But the variances in the Kullback
distance are the ones before cleansing.
Details see the 591 dissertation of Xin Xu.
| Field Summary | |
protected double[] |
m_Class
The class label of each exemplar |
protected int |
m_Dimension
The dimension of each exemplar, i.e. |
protected double[][] |
m_Mean
The mean for each attribute of each exemplar |
protected int |
m_Neighbour
The number of nearest neighbour for prediction |
protected int |
m_NumClasses
The number of class labels in the data |
protected double |
m_Rate
The learning rate in the gradient descent |
protected double[][] |
m_Variance
The variance for each attribute of each exemplar |
protected double[] |
m_Weights
The weight of each exemplar |
| Constructor Summary | |
MINND()
|
|
| Method Summary | |
void |
buildClassifier(Exemplars exs)
As normal Nearest Neighbour algorithm does, it's lazy and simply records the exemplar information (i.e. |
double |
classifyExemplar(Exemplar e)
Use Kullback Leibler distance to find the nearest neighbours of the given exemplar. |
Exemplar |
cleanse(Exemplar before)
Cleanse the given exemplar according to the valid and noise data statistics |
void |
findWeights(int row,
double[][] mean)
Use gradient descent to distort the MU parameter for the exemplar. |
java.lang.String[] |
getOptions()
Gets the current settings of the Classifier. |
double |
kullback(double[] mu1,
double[] mu2,
double[] var1,
double[] var2,
int pos)
This function calculates the Kullback Leibler distance between two normal distributions. |
java.util.Enumeration |
listOptions()
Returns an enumeration describing the available options Valid options are: |
static void |
main(java.lang.String[] args)
Main method for testing. |
Exemplar |
preprocess(Exemplars data,
int pos)
Pre-process the given exemplar according to the other exemplars in the given exemplars. |
void |
setOptions(java.lang.String[] options)
Parses a given list of options. |
double |
target(double[] x,
double[][] X,
int rowpos,
double[] Y)
Compute the target function to minimize in gradient descent The formula is: 1/2*sum[i=1..p](f(X, Xi)-var(Y, Yi))^2 |
| Methods inherited from class milk.classifiers.MIClassifier |
distributionForExemplar, forName, makeCopies |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Field Detail |
protected int m_Neighbour
protected double[][] m_Mean
protected double[][] m_Variance
protected int m_Dimension
protected double[] m_Class
protected int m_NumClasses
protected double[] m_Weights
protected double m_Rate
| Constructor Detail |
public MINND()
| Method Detail |
public void buildClassifier(Exemplars exs)
throws java.lang.Exception
buildClassifier in class MIClassifierexs - the training exemplars
if - the model cannot be built properly
java.lang.Exception - if the classifier has not been
generated successfully
public Exemplar preprocess(Exemplars data,
int pos)
throws java.lang.Exception
data - the whole exemplarspos - the position of given exemplar in data
if - the returned exemplar is wrong
java.lang.Exception
public void findWeights(int row,
double[][] mean)
row - the given row index
public double target(double[] x,
double[][] X,
int rowpos,
double[] Y)
where p is the number of exemplars and Y is the class label. In the case of X=MU, f() is the Euclidean distance between two exemplars together with the related weights and var() is sqrt(numDimension)*(Y-Yi) where Y-Yi is either 0 (when Y==Yi) or 1 (Y!=Yi)
x - the weights of the exemplar in questionrowpos - row index of x in XY - the observed class label
public double classifyExemplar(Exemplar e)
throws java.lang.Exception
classifyExemplar in class MIClassifiere - the instance to be classified
java.lang.Exception - if the exemplar could not be classified
successfully
public Exemplar cleanse(Exemplar before)
throws java.lang.Exception
before - the given exemplar
if - the returned exemplar is wrong
java.lang.Exception
public double kullback(double[] mu1,
double[] mu2,
double[] var1,
double[] var2,
int pos)
mu1 - mu of the first normal distributionmu2 - mu of the second normal distributionvar1 - variance(SIGMA^2) of the first normal distributionvar2 - variance(SIGMA^2) of the second normal distribution
public java.util.Enumeration listOptions()
-K number
Set number of nearest neighbour used for prediction
(Default: 1)
-S number
Set number of nearest neighbour instances used for cleansing the
training data
(Default: 1)
-E number
Set number of nearest neighbour exemplars used for cleansing the
testing data
(Default: 1)
listOptions in interface weka.core.OptionHandler
public void setOptions(java.lang.String[] options)
throws java.lang.Exception
setOptions in interface weka.core.OptionHandleroptions - the list of options as an array of strings
java.lang.Exception - if an option is not supportedpublic java.lang.String[] getOptions()
getOptions in interface weka.core.OptionHandlerpublic static void main(java.lang.String[] args)
args - the options for the classifier
|
||||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | |||||||||