我想使用遗传程序(gp)来估计'事件'的“结果”概率。为了训练我正在使用遗传算法。
因此,在我的数据库中,我有很多事件,每个事件都包含许多可能的结果。
我将给gp一组输入变量,这些变量与每个事件中的每个结果相关。
我的问题是 - 健身功能在gp中应该是什么?????
例如,现在我给gp一组输入数据(结果输入变量)和一组目标数据(如果结果DID发生,则为1,如果结果未发生,则为0,健身功能为输出和目标的均方误差)。然后,我为每个结果取每个输出的总和,并将每个输出除以总和(给出概率)。但是,我确信这不是正确的做法。
为清楚起见,这就是我目前的做法:
我想估计事件中发生5种不同结果的概率:
Outcome 1 - inputs = [0.1, 0.2, 0.1, 0.4]
Outcome 1 - inputs = [0.1, 0.3, 0.1, 0.3]
Outcome 1 - inputs = [0.5, 0.6, 0.2, 0.1]
Outcome 1 - inputs = [0.9, 0.2, 0.1, 0.3]
Outcome 1 - inputs = [0.9, 0.2, 0.9, 0.2]
然后我将计算每个输入的gp输出:
Outcome 1 - output = 0.1
Outcome 1 - output = 0.7
Outcome 1 - output = 0.2
Outcome 1 - output = 0.4
Outcome 1 - output = 0.4
此次活动中每项结果的输出总和为:1.80。然后我会通过将输出除以总和来计算每个结果的“概率”:
Outcome 1 - p = 0.055
Outcome 1 - p = 0.388
Outcome 1 - p = 0.111
Outcome 1 - p = 0.222
Outcome 1 - p = 0.222
在你开始之前 - 我知道这些不是真正的概率,而且这种方法不起作用!!我只是把它放在这里帮助你理解我想要实现的目标。
任何人都可以给我一些关于如何估算每种结果概率的指示吗? (另外,请注意我的数学不是很好)
非常感谢
答案 0 :(得分:2)
我理解你问题的第一部分:你所描述的是一个分类问题。您正在学习您的输入是否与观察结果(1)或未观察到(0)有关。
虽然第二部分有困难。如果我理解正确的话,你会将原始GP输出用于某一行输入(例如0.7)并将其视为概率。你说这显然不起作用。在GP中,您可以通过引入分割您的类的阈值来进行分类。如果它大于0.3,结果应为1,如果它小于它应该为0.这个阈值不一定是0.5(再次它只是一个数字,而不是概率)。
我认为如果您想获得概率,您应该尝试学习多个模型,这些模型都可以很好地解释您的分类问题。我不认为你有一个完美的模型可以完美地解释你的数据,如果你不想要一个概率。您可以将这些模型组合在一起(创建一个整体),并且对于每个结果,您可以观察预测的模型数量1和预测的模型数量。预测1的模型数除以模型数可以解释为概率将会观察到这一结果。如果模型都同样好,那么你可以忘记它们之间的权衡,如果它们的质量不同,你当然可以将它们考虑在你的决定中。训练集质量较差的模型不太可能有助于做出良好的估计。
总而言之,您应尝试应用GP,例如10次然后使用训练集上的所有10个模型来计算他们的估计值(0或1)。但是,不要强迫自己只使用GP,有许多分类算法可以产生良好的效果。
作为旁注,我是一个名为HeuristicLab的软件开发团队的一员,该软件在Windows下运行,您可以使用它运行GP并创建此类集合。该软件是开源的。
答案 1 :(得分:0)
AI是关于复杂算法的。想想看,它的缺点往往是这些算法变成了黑盒子。因此,对于算法,例如NN和GA,它们本身就是不透明的。如果你想要开车自己,这就是你想要的。另一方面,这意味着您需要工具来查看黑匣子。
我所说的是GA可能不是你想解决问题的方法。如果你想解决AI类型的问题,首先你必须知道如何使用标准技术,如回归,LDA等。
因此,结合NN和GA通常是一个不好的迹象,因为你在另一个上堆叠了一个黑盒子。我相信这是糟糕的设计。 NN和GA只不过是非线性优化器。我建议你先看主成分分析(PDA),SVD和线性分类器(见维基百科)。如果你想要解决简单的统计问题,那就转向更复杂的问题。查看Russell / Norvig的优秀教科书,阅读他们的一些源代码。
要回答问题,我们必须广泛地查看数据集。如果您正在处理一个小问题,请定义概率等,您可能会在这里得到答案。也许查看贝叶斯统计数据。这会让你开始我相信。