【问题标题】:multivariate nonlinear regression多元非线性回归
【发布时间】:2013-03-24 20:33:53
【问题描述】:

我是机器学习的新手,我想实现多元非线性回归,但我似乎找不到任何好的 C++ 库 (例如:数据)

    y        x1         x2       x3          x4       x5         x6      
4.52e+005  8.32e+000 4.10e+001 8.801e+002 1.29e+002 3.22e+002 1.26e+002 
3.585e+005 8.30e+000 2.10e+001 7.099e+003 1.10e+003 2.40e+003 1.13e+003 
3.521e+005 7.25e+000 5.20e+001 1.467e+003 1.91e+002 4.96e+002 1.77e+002 
3.413e+005 5.64e+000 5.20e+001 1.274e+003 2.35e+002 5.58e+002 2.19e+002 
3.422e+005 3.84e+000 5.20e+001 1.627e+003 2.81e+002 5.65e+002 2.59e+002 

我需要非线性回归模型来预测给定输入变量的输出(x1,x2,x3,x4,x5,x6)

【问题讨论】:

  • 你用谷歌搜索了什么?
  • 您是否查看过作为 ROOT (root.cern.ch) 一部分的 TMVA (tmva.sourceforge.net)?
  • 您有五个数据点和六个变量。系统未指定。你怎么知道你需要一个非线性模型?
  • 这只是一个例子.. 它有超过 20000 个数据点

标签: c++ machine-learning regression


【解决方案1】:

我会对此尝试核岭回归和/或支持向量回归。它们中的任何一个都可能工作得很好。

dlib C++ library 具有这两种方法的易于使用的实现。有关详细信息,请参阅 support vector regressionkernel ridge regression 示例程序。请注意,这些示例仅显示了一个输入变量,但您需要做的就是将输入向量的维数更改为 1 以外的值。因此在示例中,这意味着您只需更改行

typedef matrix<double,1,1> sample_type;

typedef matrix<double,6,1> sample_type;

然后他们将处理 6 个输入变量。

【讨论】:

  • 示例中没有提到这一点,但您还应该确保您的 6 个输入已标准化,因此它们都相对在同一范围内。例如,如果您的输入在 0 和 1e5 之间变化,而其他输入在 0 和 1 之间,那么将会发生的情况是所有较小的变量将基本上被忽略。通常减去均值并除以标准差(这样每个变量的均值为 0,方差为 1)是一种很好的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-11-23
  • 2016-12-19
  • 1970-01-01
  • 2013-07-17
  • 2014-05-20
  • 2017-06-17
相关资源
最近更新 更多