我正在寻找一种合适的机器方法来优化大约五个程序参数。我目前拥有一个不断增长的过去结果表。
在这种情况下,哪种机器学习方法会比较合适?
编辑:
训练数据是一个简单的表格:
时间 | P1 | P2 | P3 | P4 | 耗时
大约有20万行,并且还在稳步增长。优化目标是最小化“耗时”,虽然耗时还受其他因素影响,但参数是每个样本中影响最大的因素。
我正在寻找推荐的神经网络类型(或其他方法)。我考虑过反向传播或者可能是粒子群优化,但我缺乏经验(只编写过遗传算法),不知道该从哪里开始。
回答:
是的,这很有帮助。请注意,StackOverflow被定义为一个用于特定问题的平台。然而,我认为这个问题足够简单明了。
我不知道这是否有帮助;我试图从简单开始。
你有足够大的数据库来构建预测模型;我建议从逻辑回归开始,看看它在预测自身训练数据时的表现如何。你有可以用这种模型“播种”学习的人工神经网络软件吗?这将让你同时获得两者的优势。
如果新数据最终会超过初始数据(例如,至少增长10倍),那么我建议使用神经网络,即使你必须从头开始。输出是否连续依赖于每个输入?换句话说,任何输入的微小变化是否只会导致输出的微小变化——还是在某些数据值处有大的跳跃?如果变化是连续的,那么你考虑的反向传播应该是最佳选择。
你有计算方法的选择吗?经典的梯度下降是开始的地方。如果它对实际数据不够灵活,那么你可以尝试转向逻辑或高斯方法。
你已经决定了训练的误差函数(成本函数)吗?最小二乘是一个经典的选择,但合适的函数取决于你期望的训练“形状”:你是否需要非常精确地拟合“正常”情况?你是否需要一个特别平滑的超平面?你能容忍对异常值的偏差更大吗?
幸运的是,你有大量数据对应于少数输入;这给你提供了很多好的实验空间。不要害怕在早期实验中添加额外的项。例如,你可以在梯度下降中为每个变量加载很多变化:x, x^2, x^3, sqrt(x), ln(x), Atan(x)等。