这可能不是提出这个问题的合适地方,但我没有找到更好的地方去问这个问题。我有一个程序,例如有10个参数。每次运行它,都可能导致3个结果。 0,0.5或1.我不知道参数如何影响最后的结果。我需要一点一点地改进我的程序,所以它会得到更多的1而不是0。
答案 0 :(得分:3)
首先,只是为了使术语正确,这实际上是一个“搜索”问题,而不是“机器学习”问题(你试图找到一个非常好的解决方案,而不是试图识别输入与输出的关系。您的问题听起来像是经典的“功能优化”搜索问题。
有许多技术可以使用。正确的因素取决于几个不同的因素,但最大的问题是解决方案空间的大小和形状。最大的问题是“输出对输入的微小变化有多敏感?”如果你保持除了一个相同的所有输入并进行微小的改变,你是否会在输出上做出巨大的改变或只是一个小的改变?输入是否相互影响,尤其是复杂的方式?
解决方案空间越小越“平滑”(也就是说,对输入的微小变化越不敏感),你就越想要追求直接的统计技术,引导搜索,或者,如果你想要一些东西,更有趣的是,模拟退火。
解决方案空间越大越复杂,就越能引导您走向更复杂的统计技术或我最喜欢的算法类,这些算法是遗传算法,可以非常快速地搜索大型解决方案空间。
为了勾勒出如何将遗传算法应用于你的问题,让我们假设输入是相互独立的(我知道这是一种罕见的情况):
0011 1100 0100 ...etc...
0011 11...
答案 1 :(得分:1)
您是否只是尝试修改参数以使结果达到1?听起来这个程序是一个黑盒子,您可以在其中选择输入参数,然后查看结果。由于这种情况,我认为最好选择一系列输入参数,循环这些输入,并查看输出以尝试辨别模式。如果你可以自动化它,它会帮助很多。在运行数据之后,您可以检查以查看哪个参数可以为您提供哪些结果,或者您可以应用一些机器学习技术来确定哪些参数会导致哪些输出。
答案 2 :(得分:1)
正如拉里所说,看起来像一个组合搜索,解决方案将取决于问题的“拓扑结构”。 如果可以,尝试获取算法设计手册(S. Skiena),它有一章可以帮助确定解决这个问题的好方法......