Accord.Net 中的多项式支持向量回归
Polynomial Support Vector Regression in Accord.Net
我正在尝试学习该框架 (Accord),但文档中经常带有损坏的代码片段。
我想要类似于 .
的东西
我尝试了不同的方法,但似乎没有任何效果。有人有有效的非线性支持向量回归示例吗?
我也尝试了 the official example,但似乎也不起作用。
项目采用新的统一学习 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);
我正在尝试学习该框架 (Accord),但文档中经常带有损坏的代码片段。
我想要类似于
我尝试了不同的方法,但似乎没有任何效果。有人有有效的非线性支持向量回归示例吗?
我也尝试了 the official example,但似乎也不起作用。
项目采用新的统一学习 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);