通用机器学习算法,训练集 - > “预测”

时间:2012-03-10 20:28:16

标签: c++ machine-learning

请考虑以下代码:

struct TrainingExample
{
    array<double, N> input;
    array<double, M> output;
};

struct Predictor
{
    Predictor(const vector<TrainingExample>& trainingSet);

    array<double, M> predict(const array<double, N>& input);
}

该类使用如下:

  1. 将实体类型的一些易于测量的特征建模为N 输入双精度数组。
  2. 更难以模拟实体类型的特征来测量M 输出双倍。
  3. 对实体范围进行抽样,同时测量输入输出
  4. 然后将此数据作为 trainingSet 传递给 Predictor 的构造函数,然后“研究”它。
  5. 衡量主题实体的输入并将其传递给预测功能
  6. Predict将根据训练示例返回输出的猜测。
  7. 我的问题是,假设这个类必须被许多不同的问题/模型重用而不修改每个特定问题的代码 - 哪种机器学习算法最好实现这样一个通用的预测器? (如果您认为没有明确的最佳算法,那么一些流行的竞争算法以及如何在它们之间进行选择?)

2 个答案:

答案 0 :(得分:3)

嗯,如果没有对问题的一般了解,几乎不可能回答你的问题。您基本上指定了机器学习的过程:获取输入,研究它,并生成模型的一些参数,然后预测验证集的结果。根据问题本身提供的洞察力是关于使用哪个算法。

通常神经网络在许多不同的领域产生良好的结果(这将是梯度体面学习规则算法)。在许多情况下,贝叶斯模型表现非常好,基于案例的推理通常用于离散,重复输入等。您可以根据问题的定义选择一个

答案 1 :(得分:0)

如果我理解输出数组是什么(一组预测值),线性回归或其任何变化(如贝叶斯回归)都适合您的方法。您应该将训练样本分成两个不同的集合,一个用于实际训练预测器的训练集和一个用于测试参数性能的测试集。 为每个输出值设置不同的预测变量实例也是一个很好的举措。