3

我想用遗传程序(gp)来估计'事件'的'结果'的概率。为了训练nn我正在使用遗传算法。使用遗传程序来估计概率

所以,在我的数据库我有很多的活动,包含多种可能的结果每一个事件。

我会给GP一组涉及到每个事件每个结果输入变量。

我的问题是 - 应该适应度函数是在GP是什么????

例如,现在我给gp一组输入数据(结果输入变量)和一组目标数据(如果结果DID发生则为1,如果结果DID不发生则为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

我不明白你描述的问题。你的数据集究竟是怎样的?它是如何产生的?你究竟想要估计什么? – ziggystar

+0

我正在尝试估计事件中发生结果的概率。一个事件可以是任何事情(例如一场比赛),结果可以是任何事情(例如跑步者)。 gp的输入将是与每个参赛者相关的变量,并且我试图估计每个参赛者赢得比赛的概率。 – Sherlock

+0

因此,你的'事件'不是[概率意义上的'事件'](http://en.wikipedia.org/wiki/Event_%28probability_theory%29),而是“事情发生”常见含义的事件?这很混乱。那么你是否试图估计某个事件给定结果的条件概率? – ziggystar

回答

2

我明白你的问题的第一部分:你描述的是一个分类问题。如果您的输入与是否观察到结果有关(1)或不是(0),那么您正在学习。

有与第二部分,虽然困难。如果我正确地理解了你,你可以将原始的GP输出作为一行输入(例如0.7),并将其视为一个概率。你说这显然不起作用。在GP中,您可以通过引入划分课程的阈值来进行分类。如果它大于0.3,那么结果应该是1,如果它更小,它应该是0.这个阈值不一定是0.5(再次,它只是一个数字,而不是概率)。

我认为,如果你想获得你应该尝试学习多种型号,所有解释你的分类问题很好的概率。我不指望你有一个完美的模型来完美地解释你的数据,如果你不想要一个概率。您可以将这些模型打包在一起(创建一个集合),并且对于每个结果,您可以观察预测了多少个模型1和预测了多少个模型0.预测1除以模型数量的模型的数量可以被解释为概率这一结果将得到遵守。如果模型都一样好,那么你可以忘记它们之间的权衡,如果它们的质量不同,当然你可以将这些考虑在你的决定中。训练集中质量较低的模型不太可能为良好的估计做出贡献。

因此总的来说,你应该尝试应用GP例如10次​​,然后使用训练集上的所有10个模型来计算它们的估计值(0或1)。但是,不要强迫自己只有GP,有很多分类算法可以给出好的结果。

作为旁注,我是一个名为HeuristicLab的软件的开发团队的一部分,该软件在Windows下运行,您可以运行GP并创建这样的合奏。该软件是开源的。

0

AI是关于复杂算法的。想想看,它的缺点经常是这些算法变成黑盒子。因此,算法的反面,如NN和GA,它们本质上是不透明的。如果你想拥有一辆汽车,那就是你想要的。另一方面,这意味着,你需要工具来查看黑匣子。

我在说的是,GA可能不是你想解决你的问题。如果你想解决AI类型的问题,你首先必须知道如何使用标准技术,如回归,LDA等。

所以,结合NN和GA通常是一个坏迹象,因为你堆叠一个黑色在另一个盒子。我相信这是糟糕的设计。 NN和GA无非是非线性优化器。我建议你首先看一下主成分分析(PDA),SVD和线性分类器(见维基百科)。如果你想解决简单的统计问题,可以转向更复杂的问题。查看Russell/Norvig的优秀教科书,阅读他们的一些源代码。

为了回答这个问题,我们必须广泛地查看数据集。如果你正在处理一个小问题,定义概率等等,你可能会在这里得到答案。也许检查贝叶斯统计数据。这会让你开始我相信。

+0

我不知道你在哪里得到GA是不透明的想法。神经网络是不透明的,遗传算法是处理神经网络不透明性的有效和广泛使用的方法。 –