Документация все еще составляется после того, как проект принял новый унифицированный API обучения, который теперь является общим для всех моделей машинного обучения. Большая его часть была обновлена только вчера, но некоторые части, возможно, все еще требуют внимания.
Отвечая на ваш первоначальный вопрос, вы можете найти пример полиномиальной регрессии SV ниже. Допустим, у нас есть двумерные входные векторы, и мы хотели бы изучить отображение этих векторов в одно скалярное значение.
// Declare a very simple regression problem
// with only 2 input variables (x and y):
double[][] inputs =
{
new[] { 3.0, 1.0 },
new[] { 7.0, 1.0 },
new[] { 3.0, 1.0 },
new[] { 3.0, 2.0 },
new[] { 6.0, 1.0 },
};
double[] outputs =
{
65.3,
94.9,
65.3,
66.4,
87.5,
};
Для примера мы установим для параметра «Сложность машины» очень высокое значение, заставив алгоритм обучения находить решения с жестким запасом, которые в противном случае не очень хорошо обобщались бы. При обучении реальным задачам оставьте для свойств UseKernelEstimation и UseComplexityHeuristic значение true или выполните поиск по сетке, чтобы найти их оптимальные параметры:
// Create a LibSVM-based support vector regression algorithm
var teacher = new FanChenLinSupportVectorRegression<Polynomial>()
{
Tolerance = 1e-5,
// UseKernelEstimation = true,
// UseComplexityHeuristic = true
Complexity = 10000,
Kernel = new Polynomial(degree: 1) // you can change the degree
};
Теперь, когда мы создали алгоритм обучения, мы можем использовать его для обучения модели SVM на данных:
// Use the algorithm to learn the machine
var svm = teacher.Learn(inputs, outputs);
И, наконец, мы можем получить ответы машины для набора входных данных и проверить, насколько хорошими были значения, предсказанные машиной, по сравнению с ожидаемой достоверностью:
// Get machine's predictions for inputs
double[] prediction = svm.Score(inputs);
// Compute the error in the prediction (should be 0.0)
double error = new SquareLoss(outputs).Loss(prediction);
person
Cesar
schedule
08.07.2017