考虑以下代码:
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);}
该类使用如下:
- 将某个实体类型的易于测量的特征建模为N个输入双精度数的数组。
- 将某个实体类型较难测量的特征建模为M个输出双精度数的数组。
- 对实体集合进行抽样,测量输入和输出。
- 然后将这些数据作为trainingSet传递给Predictor的构造函数,进行“学习”。
- 测量一个主题实体的输入并将其传递给predict函数。
- predict将根据训练示例返回对输出的猜测。
我的问题是,假设这个类需要被许多不同的问题/模型重复使用,而不需要为每个特定问题修改代码——哪种机器学习算法最适合实现这样一个通用的预测器?(如果你认为没有明显的最佳选择,那么有哪些流行的竞争算法,你如何在它们之间进行选择?)
回答:
嗯,如果没有对问题的总体了解,几乎不可能回答你的问题。你基本上是指定了机器学习的过程:获取输入,研究它,然后生成模型的一些参数,然后预测验证集的结果。根据问题本身,你提供的见解决定使用哪种算法。
通常,神经网络在许多不同领域都能产生良好的结果(那将是梯度下降学习规则算法)。在许多情况下,贝叶斯模型表现得非常好,基于案例的推理常用于离散的、重复的输入等。根据你问题的定义,由你来选择一个合适的算法。