Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/csharp-4.0/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Artificial intelligence 利用遗传规划估计概率_Artificial Intelligence_Probability_Genetic Algorithm_Genetic Programming - Fatal编程技术网

Artificial intelligence 利用遗传规划估计概率

Artificial intelligence 利用遗传规划估计概率,artificial-intelligence,probability,genetic-algorithm,genetic-programming,Artificial Intelligence,Probability,Genetic Algorithm,Genetic Programming,我想用遗传程序(gp)来估计“事件”的“结果”概率。为了训练神经网络,我使用了遗传算法 因此,在我的数据库中有许多事件,每个事件都包含许多可能的结果 我将给gp一组与每个事件的每个结果相关的输入变量 我的问题是-gp中的适应度函数应该是什么 例如,现在我给gp一组输入数据(结果输入变量)和一组目标数据(1如果结果发生,0如果结果没有发生,适应度函数是输出和目标的均方误差)。然后,我取每个结果的每个输出的总和,并将每个输出除以总和(给出概率)。然而,我确信这不是正确的做法 为清楚起见,我目前的做法

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

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

我将给gp一组与每个事件的每个结果相关的输入变量

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

例如,现在我给gp一组输入数据(结果输入变量)和一组目标数据(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 
在你开始之前-我知道这些不是真实的概率,而且这种方法不起作用!!我把这个放在这里是为了帮助你理解我想要实现的目标

有谁能给我一些建议,告诉我如何估计每个结果的概率?(另外,请注意我的数学不是很好)


非常感谢

我理解你问题的第一部分:你所描述的是一个分类问题。您正在学习您的输入是否与是否观察到结果(1)相关(0)

不过,第二部分有一些困难。如果我理解正确,您可以获取某一行输入的原始GP输出(例如0.7),并将其视为概率。你说这显然不管用。在GP中,您可以通过引入分割类的阈值来进行分类。如果大于0.3,则结果应为1;如果小于0,则结果应为0。这个阈值不一定是0.5(同样,它只是一个数字,而不是一个概率)

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

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


作为旁注,我是一个软件开发团队的成员,该软件在Windows下运行,您可以使用它运行GP并创建这样的集成。该软件是开源的。

人工智能是关于复杂算法的。想想看,缺点往往是,这些算法会变成黑匣子。因此,诸如NN和GA等算法的反面是,它们本质上是不透明的。如果你想让汽车自动驾驶,那就是你想要的。另一方面,这意味着您需要工具来查看黑盒

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

所以,将NN和GA结合起来通常是一个不好的迹象,因为你将一个黑盒子堆叠在另一个黑盒子上。我认为这是一个糟糕的设计。NN和GA只不过是非线性优化器。我建议你先看看主成分分析(PDA)、SVD和线性分类器(见维基百科)。如果你想办法解决简单的统计问题,那就转到更复杂的问题上去。查看Russell/Norvig编写的优秀教科书,阅读他们的一些源代码


要回答这些问题,我们确实需要广泛地查看数据集。如果您正在处理一个小问题,请定义概率等,您可能会在这里得到答案。也许还可以看看贝叶斯统计。我相信这会让你开始的。

我不理解你所描述的问题。您的数据集到底是什么样子的?它是如何产生的?你到底想估计什么?我想估计一个事件发生的概率。一个事件可以是任何事情(例如一场比赛),一个结果可以是任何事情(例如一名跑步者)。gp的输入将是与每个跑步者相关的变量,我试图估计每个跑步者赢得比赛的概率。因此,您的
事件
不是一个事件,而是一个通常意义上的“发生了什么事情”的事件?这很令人困惑。那么,你是在试图估计给定事件的特定结果的条件概率吗?是的,你是正确的。为我使用术语道歉——就像我说的,我的数学一点也不好。你应该调查一下。不过,请注意:这是一个巨大的话题。同时也要把手头的问题正式化。你会注意到这是一个非常普遍的问题,有无数不同的方法来处理它。我不知道你从哪里得到这个想法