我对高估/低估这些术语感到困惑.我完全了解A*算法是如何工作的,但我不确定具有高估或低估的启发式算法的效果.
当你采用直接鸟瞰线的平方时,是否会被高估?为什么它会使算法不正确?所有节点都使用相同的启发式方法.
当你采用直接鸟瞰线的平方根时会被低估吗?为什么算法仍然正确?
我找不到一篇解释得很好而且清晰的文章,所以我希望这里的人有一个很好的描述.
给出一组非常类似于Motley Fool CAPS系统的数据,其中个人用户输入各种股票的买入和卖出建议.我想这样做是显示每个建议,我想一些如何率(1-5)是否是很好的预测<5>(即相关系数= 1)未来股价(或EPS或其他)的或者是一个可怕的预测者(即相关系数= -1)或介于两者之间的某个地方.
每个推荐都标记给特定用户,以便可以随时跟踪.我还可以根据sp500价格等因素跟踪市场方向(看涨/看跌).我认为在模型中有意义的组件将是:
user
direction (long/short)
market direction
sector of stock
Run Code Online (Sandbox Code Playgroud)
我们的想法是,一些用户在牛市中比熊市更好(反之亦然),有些用户在空头方面比在多头方面更好 - 然后是上述组合.我可以自动标记市场方向和行业(基于当时的市场和推荐的股权).
我的想法是,我可以提供一系列屏幕,并允许我通过显示特定时间段内的可用数据绝对值,市场和扇区输出性能来对每个单独的推荐进行排名.我会按照详细的清单对股票进行排名,以便排名尽可能客观.我的假设是单个用户的权利不超过57% - 但谁知道.
我可以加载系统并说"让我们将推荐排名为90天前的股票价值预测"; 这将代表一组非常明确的排名.
现在这里是关键 - 我想创建某种机器学习算法,可以在一系列时间内识别模式,以便当推荐流入应用程序时,我们保持该库存的排名(即类似于相关系数).该建议的可能性(除了过去的一系列建议)将影响价格.
现在这里是超级难题.我从未参加过AI课程/阅读AI书籍/从不介意机器学习.所以我想寻找指导 - 我可以适应的类似系统的样本或描述.寻找信息或任何一般帮助的地方.或者甚至推动我朝着正确的方向开始......
我的希望是与F#来实现这一点,并能够给我的朋友有一个新的技能在F#设置与机器学习的实现和潜在的东西(应用程序/源)我可以包括在高科技投资组合或博客空间留下深刻的印象;
提前感谢您的任何建议.
f# finance artificial-intelligence classification machine-learning
假设你有一个2D网格的单元格,其中一些是用墙填充的.角色可以从一个正方形到任何与其一步水平或垂直的正方形,但不能穿过墙壁.
给定起始位置和结束位置,我们可以通过使用具有可允许启发式的A*算法找到从起始位置到结束位置的最短路径.在目前的设置中,曼哈顿距离是可以接受的,因为它永远不会高估到目的地的距离.
现在假设除了墙壁之外,世界上还有成对的传送器.踏上传送器会立即将角色传送到链接的传送器.传送器的存在打破了上面给出的允许启发式,因为通过使用传送器来减少距离,可能比通过最佳曼哈顿距离步行更快地到达目的地.例如,考虑这个线性世界,其中传送器标记为T,开始位置标记为S,结束位置标记为E:
T . S . . . . . . . . . . . . . E . T
Run Code Online (Sandbox Code Playgroud)
在这里,最好的路线是步行到左边的传送器,然后向左走两步.
我的问题是:在带有传送器的网格世界中,A*的一个很好的可接受的启发式算法是什么?
谢谢!
algorithm artificial-intelligence heuristics a-star path-finding
内核技巧将非线性问题映射为线性问题.
我的问题是:
1.线性问题和非线性问题的主要区别是什么?这两类问题背后的直觉是什么?内核技巧如何帮助在非线性问题上使用线性分类器?
2.为什么点数产品在这两种情况下如此重要?
谢谢.
language-agnostic algorithm math artificial-intelligence machine-learning
有很多国际象棋AI,显然有些足以击败一些世界上最伟大的球员.
我听说很多尝试都是为棋盘游戏Go编写成功的AI ,但到目前为止,没有人想到超出一般的业余水平.
可能是在Go中任何给定时间以数学方式计算最优运动的任务是NP完全问题吗?
如何衡量用Java编写的代码的速度?
我计划开发软件,使用所有目前可用的AI和ML算法解决数独,并将时间与简单的蛮力方法进行比较.我需要测量每种算法的时间,我想问一下最好的方法是什么?非常重要的是,无论CPU电源/内存如何,程序都必须适用于任何机器.
谢谢.
我可能有兴趣使用分层时间记忆模型来解决我正在研究的研究问题.
有没有任何开源库?虽然C++,Java或Haskell是首选,但我对语言非常开放.如果是的话,有没有人对他们有任何经验?
open-source artificial-intelligence nupic hierarchical-temporal-memory
假设我们以半结构化格式给出数据作为树.例如,树可以形成为有效的XML文档或有效的JSON文档.你能想象它是一个口齿不清状S-表达或(G)的代数数据类型在Haskell或者Ocaml.
我们在树结构中给出了大量的"文档".我们的目标是聚类相似的文档.通过聚类,我们指的是将文档划分为j个组的方法,使得每个元素中的元素看起来彼此相似.
我确信有些论文描述了方法,但由于我在AI/Clustering/MachineLearning领域并不为人所知,我想问一下谁在寻找什么以及在哪里挖掘.
我目前的做法是这样的:
但肯定有更好的方法.我的方法的一个弱点是它只会相似 - 聚类具有顶部结构的树木彼此非常相似.如果相似性存在,但发生在树的更远处,那么我的方法可能不会很好地工作.
我想也有全文搜索的解决方案,但我确实想利用数据中存在的半结构.
如建议的那样,需要在文档之间定义距离函数.如果没有此功能,我们就无法应用聚类算法.
实际上,问题可能在于该距离函数及其示例.我希望文档中根目录附近的元素相同,以便彼此靠近聚类.我们去的树越往下越重要.
我想从程序中聚集堆栈跟踪.这些是格式良好的树结构,其中靠近根的函数是失败的内部函数.我需要在堆栈跟踪之间有一个合适的距离函数,这可能是因为代码中发生了同样的事件.
language-agnostic algorithm artificial-intelligence cluster-analysis
我无法理解反向传播算法.我阅读了很多并搜索了很多,但我无法理解为什么我的神经网络不起作用.我想确认我正在以正确的方式做所有事情.
这里是我的神经网络,当它被初始化,当输入的第一线[1,1]和输出[0]设置(因为你可以看到,我试图做XOR神经网络):

我有3层:输入,隐藏和输出.第一层(输入)和隐藏层包含2个神经元,其中每个神经元有2个突触.最后一层(输出)也包含一个神经元,也有2个突触.
突触包含一个权重,它是前一个delta(在开头,它是0).连接到突触的输出可以与与synapse关联的sourceNeuron或者在input数组中找到,如果没有sourceNeuron(如在输入层中).
Layer.java类包含一个神经元列表.在我的NeuralNetwork.java中,我初始化神经网络,然后在我的训练集中循环.在每次迭代中,我替换输入和输出值,并调用对当前组在我的BP算法火车和(现在的1000倍历元)的算法运行一定数目的时间.
我使用的激活功能是sigmoid.
训练集和验证集是(input1,input2,output):
1,1,0
0,1,1
1,0,1
0,0,0
Run Code Online (Sandbox Code Playgroud)
这是我的Neuron.java实现:
public class Neuron {
private IActivation activation;
private ArrayList<Synapse> synapses; // Inputs
private double output; // Output
private double errorToPropagate;
public Neuron(IActivation activation) {
this.activation = activation;
this.synapses = new ArrayList<Synapse>();
this.output = 0;
this.errorToPropagate = 0;
}
public void updateOutput(double[] inputs) {
double sumWeights = this.calculateSumWeights(inputs);
this.output = this.activation.activate(sumWeights);
}
public double calculateSumWeights(double[] inputs) {
double sumWeights = 0;
int …Run Code Online (Sandbox Code Playgroud) java algorithm artificial-intelligence backpropagation neural-network
我现在正在对语义Web和代表个人与组织之间关系的复杂数据模型进行大量研究.我知道一些语义本体,虽然如果不制作图表,我从未理解它的用途.
我在大学维基上看到,质疑本体的语言是SPARQL(告诉我,如果我错了).
但最近我看到一家创建了语义本体的公司把它放在GraphQL的形式中,我不知道(https://diffuseur.datatourisme.gouv.fr/graphql/voyager/).
在我看来,语义本体是为了更好地查找信息,例如制作聊天机器人(这是我想要做的),但是在这里他们将语义本体转换为API,是不是?要创建GraphQL,我应该首先构建一个语义本体吗?
你能不能向我解释一下这一切之间的区别,老实说这对我来说有点模糊.
semantic-web artificial-intelligence ontology sparql graphql
algorithm ×5
a-star ×2
java ×2
baduk ×1
benchmarking ×1
f# ×1
finance ×1
graph ×1
graphql ×1
heuristics ×1
hierarchical-temporal-memory ×1
math ×1
np-complete ×1
nupic ×1
ontology ×1
open-source ×1
path-finding ×1
search ×1
semantic-web ×1
sparql ×1