Java 初学者使用 Encog 的 SVM

SVM using Encog in Java for beginners

我是 SVM 的初学者。有人可以帮助我从最基础的地方理解使用 Encog 的 SVM 的概念吗?这将有助于示例 Java 代码。

在 Encog 中,SVM 只是一种分类或回归模型,大部分情况下可以与其他模型类型互换使用。我修改了 Hello World XOR 例子来使用它,你可以看到下面的结果。

这是对他们的一个不错的介绍:http://webdoc.nyumc.org/nyumc/files/chibi/user-content/Final.pdf 这是一般建模的更基本的介绍,我为神经网络编写它,但它也适用于 SVM:http://www.heatonresearch.com/content/non-mathematical-introduction-using-neural-networks

package org.encog.examples.neural.xor;

import org.encog.Encog;
import org.encog.ml.data.MLData;
import org.encog.ml.data.MLDataPair;
import org.encog.ml.data.MLDataSet;
import org.encog.ml.data.basic.BasicMLDataSet;
import org.encog.ml.svm.SVM;
import org.encog.ml.svm.training.SVMTrain;

public class XORHelloWorld {

    /**
     * The input necessary for XOR.
     */
    public static double XOR_INPUT[][] = { { 0.0, 0.0 }, { 1.0, 0.0 },
            { 0.0, 1.0 }, { 1.0, 1.0 } };

    /**
     * The ideal data necessary for XOR.
     */
    public static double XOR_IDEAL[][] = { { 0.0 }, { 1.0 }, { 1.0 }, { 0.0 } };

    /**
     * The main method.
     * @param args No arguments are used.
     */
    public static void main(final String args[]) {

        // create a SVM for classification, change false to true for regression     
        SVM svm = new SVM(2,false);

        // create training data
        MLDataSet trainingSet = new BasicMLDataSet(XOR_INPUT, XOR_IDEAL);

        // train the SVM
        final SVMTrain train = new SVMTrain(svm, trainingSet);
        train.iteration();
        train.finishTraining();

        // test the SVM
        System.out.println("SVM Results:");
        for(MLDataPair pair: trainingSet ) {
            final MLData output = svm.compute(pair.getInput());
            System.out.println(pair.getInput().getData(0) + "," + pair.getInput().getData(1)
                    + ", actual=" + output.getData(0) + ",ideal=" + pair.getIdeal().getData(0));
        }

        Encog.getInstance().shutdown();
    }
}