【问题标题】:General Machine Learning Algorithm, Training Set -> "Predictor" [closed]通用机器学习算法,训练集->“预测器”[关闭]
【发布时间】:2012-03-27 20:08:33
【问题描述】:

考虑以下代码:

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 将根据训练示例返回对输出的猜测。

我的问题是,假设这个类必须被许多不同的问题/模型重用,而无需修改每个特定问题的代码 - 哪种机器学习算法最适合实现这样的通用预测器? (如果您认为没有明确的最佳算法,那么有哪些流行的竞争算法以及您如何在它们之间进行选择?)

【问题讨论】:

  • “没有关于实体和模型性质的进一步具体信息”,这个问题完全不可能回答。
  • 我已经改写了这个问题,以使其更清楚。我对上述“问题类别”的通用机器学习算法感兴趣。
  • 在这样的公式中——大多数 ML 算法

标签: c++ machine-learning


【解决方案1】:

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

【讨论】:

  • 线性回归适用于输入和输出之间存在线性关系的回归问题。 OP 甚至没有说明他们是在做回归还是分类。在后一种情况下,应用不同的算法。
  • @larsmans 甚至在问题编辑之前,很明显这不是分类问题;方法 predict() 接受输入数组(易于测量的参数)并返回输出数组(在样本中代价高昂的可测量),它是连续的。他想使用相同的训练集预测一组实体,这对于参数和预测的性能通常不是一个好主意,因此我建议将执行拆分为多个预测器实例。
【解决方案2】:

好吧,如果没有问题的一般知识,几乎不可能回答您的问题。你基本上指定了机器学习的过程:接受输入,研究它,生成模型的一些参数,然后预测验证集的结果。这是您根据问题本身提供的关于使用哪种算法的见解。

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-11
    • 2017-06-25
    • 2020-06-15
    • 2020-02-03
    • 2017-11-12
    • 2020-02-21
    • 2020-07-01
    • 2011-02-15
    相关资源
    最近更新 更多