3

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

因此,在我的数据库中,我有许多事件,每个事件都包含许多可能的结果。

我将为 gp 提供一组与每个事件中的每个结果相关的输入变量。

我的问题是-gp中的适应度函数应该是什么????

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

在你开始之前 - 我知道这些不是真实的概率,而且这种方法不起作用!我只是把它放在这里,以帮助您了解我想要实现的目标。

谁能给我一些关于如何估计每个结果的概率的指示?(另外,请注意我的数学不是很好)

非常感谢

4

2 回答 2

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 并创建此类集合。该软件是开源的。

于 2012-10-31T09:41:02.007 回答
0

人工智能就是复杂的算法。想想看,不利的一面是,这些算法经常变成黑匣子。因此,与 NN 和 GA 等算法相反的是,它们本质上是不透明的。如果您想让汽车自动驾驶,这就是您想要的。另一方面,这意味着您需要工具来查看黑匣子。

What I'm saying is that GA is probably not what you want to solve your problem. If you want to solve AI types of problems, you first have to know how to use standard techniques, such as regression, LDA etc.

So, combining NN and GA is usually a bad sign, because you are stacking one black box on another. I believe this is bad design. An NN and GA are nothing else than non-linear optimizers. I would suggest to you to look at principal component analysis (PDA), SVD and linear classifiers first (see wikipedia). If you figure out to solve simple statistical problems move on to more complex ones. Check out the great textbook by Russell/Norvig, read some of their source code.

To answer the questions one really has to look at the dataset extensively. If you are working on a small problem, define the probabilities etc., and you might get an answer here. Perhaps check out Bayesian statistics as well. This will get you started I believe.

于 2012-10-31T11:53:38.087 回答