问题标签 [decision-tree]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
expert-system - 构建决策树系统以帮助规范系统
我正在寻找一种方法来构建一个可以帮助我们的销售团队指定产品的系统。理想的系统会提出一些在所有产品中都很常见的基本问题。然后,进一步的问题将从这些答案中分支出来。据我所知,这本质上是一个我被要求构建的大型决策树/专家系统。
我想知道是否有人有构建这样一个系统的经验,可以提供一些参考或推荐一个框架/软件来支持这样一个系统?
java - 生成和可视化决策树
我想知道是否有人能够提供以下帮助或建议;我必须能够从数据源中获取数据,并且能够将这些数据可视化为网页上的决策树。这将是一个对最终用户无缝的单一过程。
这将使用 JSP 和 Java servlet 来完成,但我关心的是底层产品。我正在考虑将数据传递给 Weka 分类器,然后使用它创建的 .dot 文件做一些事情,即将它提供给 GraphViz 或尝试使用 Google Visualization API 来呈现交互式显示。
但是,谁能告诉我这是否是一种可行的方法或建议替代方案?
谢谢
马丁奥谢。
machine-learning - 使用熵的加权决策树
我正在使用互信息增益作为分裂函数来构建二分类树。但由于训练数据偏向少数类,建议通过逆类频率对每个训练示例进行加权。
如何加权训练数据?在计算估计熵的概率时,我是否采用加权平均值?
编辑:我想要一个带有权重的熵的表达式。
matlab - 在庞大的数据集上学习决策树
我正在尝试使用 MATLAB 从巨大的(即不能存储在内存中的)数据集构建二元分类决策树。本质上,我正在做的是:
- 收集所有数据
- 在数据上尝试n 个决策函数
- 选择最佳决策函数来分离数据中的类
- 将原始数据集拆分为 2
- 在拆分上递归
数据有k个属性和一个分类,所以它被存储为一个包含大量行和k+1列的矩阵。决策函数是布尔值,作用于将每一行分配给左子树或右子树的属性。
现在我正在考虑将文件中的数据存储在可以保存在内存中的块中,并为每一行分配一个 ID,以便通过顺序读取所有文件来决定拆分,并且未来的拆分由 ID 号标识。
有谁知道如何以更好的方式做到这一点?
编辑:行数 m 约为 5e8 而 k 约为 500
algorithm - 如何编写程序来生成排序决策树?
在课堂上,我们得到了一个简单的决策树,用于对 3 个元素(a、b、c)进行排序。
(来源:brpreiss.com)
看着这个,对我来说很有意义。我能够跟随它。
但是,我现在必须为 4 个元素(a、b、c、d)制作一个决策树,并且叶子的数量刚刚上升到 24 个。
我正在努力以一种有条不紊的方式接近决策树,这有助于我跟踪我想在每个分支上比较的元素。
什么是构建更大决策树的有条不紊的方法?如果我知道怎么做,我什至愿意编写一个程序来吐出可能的叶子结构。
java - 在java中制作决策树的最佳学习算法?
我有一个数据集,其中包含年龄、城市、儿童年龄等信息以及结果(确认、接受)。
为了帮助对“工作流程”进行建模,我想根据以前的数据集自动创建一个决策树。
我看了一下http://en.wikipedia.org/wiki/Decision_tree_learning,我知道问题显然并不明显。
我只想就这个主题的一些算法或一些库提供建议,这些建议可以帮助我构建基于样本的决策树。
user-interface - 需要对评估布尔逻辑树的指导
我似乎无法找到正确方向的指针,我什至不确定我应该研究哪些术语,但无数小时的谷歌搜索似乎让我在转圈,所以希望 Stack 的集体智慧蜂巢溢出可以提供帮助。
问题是,我需要一种方法来过滤我只能称之为复合逻辑树的数据。目前,该系统实现了一个简单的 AND 过滤系统。例如,假设我们有一个人的数据集。您添加了一堆过滤器,以便显示 (Sex = 女性) AND (Age > 23) AND (Age < 30) AND (Status = Single) 的所有人。很简单,遍历每个项目,仅当每个条件都为真时才添加到有效的项目集合中。
我遇到的问题是如何处理用户能够构建涉及的复杂查询和的和或的?我正在考虑类似于树的东西,其中每个节点代表和表达式将其子节点评估为真或假。一个简单的例子是 - 过滤到 ((Sex == Male AND Age == 25) OR (Sex == Female AND Status == Single)) AND IQ > 120。抱歉,我想不出更好的例子此时此刻。但是您将如何表示这种类型的表达式树,并根据这些过滤器评估集合中的项目。有哪些参考资料会有所帮助?见鬼,什么该死的谷歌搜索可能会导致积极的方向?!
感谢任何可以提供任何帮助的人。
这是使用人员数据集的树形复合查询示例
- 查询 - 显示性别为男性且眼睛为绿色或性别为女性、眼睛为蓝色或状态为单身的所有人。以 Paren 形式(性别 == 男性 && 眼睛 == 绿色)|| (性别==女性&&(眼睛==蓝色||状态==单身))
所以以树的形式我在思考
我相信解决方案是在数据结构中表示每个节点,例如
因此,对于给定的节点,如果您是 AND 节点,则评估子节点,如果您的表达式结果为 true,并且您的所有 AND 子节点评估为 true,或者任何 OR 子节点评估为 true 并递归,则返回 true。
似乎满足了我可以提出的所有概念条件,但一旦我实现它,我们就会满足。稍后我将在其工作时发布真实代码和图片,以帮助其他人更好地描述此问题。
algorithm - TicTacToe AI 做出错误的决定
一点背景知识:作为在 C++ 中学习多节点树的一种方法,我决定生成所有可能的井字棋棋盘并将它们存储在树中,这样从一个节点开始的分支都是可以从该节点跟随的所有棋盘,并且一个节点是一次跟随的棋盘。在那之后,我认为用那棵树作为决策树来编写一个 AI 来玩井字游戏会很有趣。
TTT 是一个可以解决的问题,完美的玩家永远不会输,所以在我第一次尝试 AI 时,它似乎是一个简单的 AI 编码。
现在,当我第一次实现 AI 时,我返回并在生成时为每个节点添加了两个字段:X 将获胜的次数和 O 将在该节点下的所有子节点中获胜的次数。我认为最好的解决方案是让我的 AI 在每一步中选择并沿着获胜次数最多的子树向下走。然后我发现虽然它在大多数情况下都表现完美,但我找到了可以击败它的方法。这不是我的代码有问题,只是我让 AI 选择路径的方式有问题。
然后我决定让它选择计算机获得最大胜利或人类损失最大的树,以较大者为准。这使它表现更好,但仍然不完美。我仍然可以击败它。
所以我有两个想法,我希望输入哪个更好:
1)我可以分配值 1 表示胜利,0 表示平局,-1 表示失败,而不是最大化胜利或失败。然后选择具有最高值的树将是最好的移动,因为下一个节点不能是导致损失的移动。这是板生成中的一个简单更改,但它保留了相同的搜索空间和内存使用。或者...
2) 在棋盘生成过程中,如果有一个棋盘使得 X 或 O 在下一步中获胜,则只会生成阻止该获胜的子棋子。不会考虑其他子节点,然后生成将照常进行。它缩小了树的大小,但是我必须实现一个算法来确定是否有单步获胜,我认为这只能在线性时间内完成(我认为让棋盘生成速度慢很多?)
哪个更好,或者有更好的解决方案?
matlab - Matlab中的决策树
我在 Matlab 中看到了帮助,但他们提供了一个示例,但没有解释如何在“classregtree”函数中使用参数。任何帮助解释“classregtree”及其参数的使用将不胜感激。
python - 具有数值的 ID3 决策树
我正在寻找 Python 或任何将验证和测试文件作为输入并返回预测的语言中的 ID3 决策树实现。
我找到了这个和这个,但我无法将它们调整为数值,例如Iris dataset。
你知道任何可以从控制台运行的 ID3 树实现或任何用 Python 编写的实现吗?或者任何如何将其与数值一起使用的建议都会很棒。