问题标签 [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.

0 投票
4 回答
4455 浏览

artificial-intelligence - 构建决策树时的终止标准

我正在为决策树编写自己的代码。我需要决定何时终止树构建过程。我可以考虑限制树的高度,但这似乎微不足道。谁能给我一个关于如何实现我的终止功能的更好的想法。

在我的树构建算法中。

0 投票
1 回答
1603 浏览

algorithm - 快速排序决策树

我刚刚花了几个小时试图在一组元素上表示快速排序算法的决策树(我还搜索了网络)。我想知道每个节点实际代表什么。是两组之间的比较(由对Partition的调用产生)吗?还是只是集合中两个元素之间的比较?我希望我的问题足够清楚。

0 投票
4 回答
2695 浏览

artificial-intelligence - 决策树修剪的效果

我想知道我是否从训练和验证集中建立了一个像 ID3 这样的决策树 A,但 A 是未修剪的。同时,我在 ID3 中也有另一个决策树 B,它是从相同的训练和验证集生成的,但是 B 被修剪了。现在我在未来的未标记测试集上同时测试 A 和 B,是否总是修剪后的树会表现得更好?欢迎任何想法,谢谢。

0 投票
1 回答
1330 浏览

c++ - 带有修剪的 C++ 决策树

你能给我推荐一个支持连续特征和修剪的好决策树 C++ 类(它非常重要)吗?我使用 9 个功能编写了一个简单的分类器(两个类)。我最近一直在使用 Waffles,但看起来树过拟合了,所以我的 Precision 大约是 82%,但 Recall 大约是 51%,这是不可接受的。华夫饼没有能力修剪决策树,而且我的时间不多了:)

0 投票
1 回答
1118 浏览

algorithm - 决策树学习算法

我想先说这是一项家庭作业。

我得到一组 Q 二进制输入变量,这些变量将用于对 Y 的输出进行分类,Y 也是二进制的。

问题的第一部分是:我最多需要多少个例子来列举 Q 的所有可能组合?我目前认为,因为它最多要求我需要 Q ,因为 Q-1 之前的所有值都可能相同,例如 1 并且 Q 处的项目是 0 。

问题的第二部分是:树最多可以有多少个叶子节点给Z个例子?
我目前的回答是,树最多有 2 个叶节点,一个代表真,一个代表假,因为它处理二进制输入和二进制输出。

这是检查这个问题的正确方法还是我过于深入地概括我的答案?

编辑

在查看了 Cameron 的回复后,我现在将我的第一个答案转换为 2^Q,并以他的 Q = 3 示例为基础,我将得到 2^3 或 8 (2*2*2)。如果这是不正确的想法,请纠正。

编辑#2

问题的第二部分似乎应该是 (2^Q) * Z 或提供一个示例:(2^3) * 3) 或 8*3 = 24 个叶节点。回顾一下,如果我有 3 个二进制输入,我最初会采用 2^3 并得到 8,现在我想查看 3 个示例。因此我应该得到 8*3 或 24。

编辑#3

事后看来,无论我使用多少示例,叶节点的数量都不应增加,因为它是基于每棵树的。

0 投票
2 回答
664 浏览

artificial-intelligence - 关于决策树的问题

在研究了一段时间的决策树之后,我注意到有一种叫做 boosting 的小技术。我看到在正常情况下,它会提高决策树的准确性。

所以我只是想知道,为什么我们不简单地将这种提升合并到我们构建的每个决策树中呢?由于目前我们将提升作为一项单独的技术,所以我思考:使用提升比仅使用单个决策树有什么缺点吗?

感谢您在这里帮助我!

0 投票
1 回答
1226 浏览

tree - 信息增益决策树

如果我在相同数量的节点上有两个决策树,哪个被认为更好?树 1:(F 为假,T 为真)

替代文字

意思是第一个更宽,但第二个更深。

0 投票
3 回答
13807 浏览

java - Decision trees and rule engines (Drools)

In the application that I'm working on right now, I need to periodically check eligibility of tens of thousands of objects for some kind of a service. The decision diagram itself is in the following form, just way larger: Decision diagram

In each of the end nodes (circles), I need to run an action (change an object's field, log information etc). I tried using Drool Expert framework, but in that case I'd need to write a long rule for every path in the diagram leading to an end node. Drools Flow doesn't seem to be built for such a use case either - I take an object and then, depending on the decisions along the way, I end up in one of the end nodes; and then again for another object. Or is it? Could you give me some examples/links to such solutions?

UPDATE:

Drools Flow calls might look like this:

That is: I'd take an Application object, start a new process for it, when the process is finished (the final, action node would modify the application somehow), I'd remove the object from working memory and repeat the process for a new App object. What do you think about this solution?

SOLUTION:
I've ended up using Drools Flow and it has been working quite fine. My decision process isn't as straightforward as Drools Expert asks for and depending on where in the decision tree the process is it needs to load lists of objects from the database, transform them, make decisions, log everything etc. I use a Process object that is passed to the process as a parameter and stores all my global variables (for the process) and some convenience methods that are repeated at different points in the tree (as writing Java code in the Script Task nodes isn't very convenient itself). I also ended up using Java to make decisions (and not mvel or rules) - it's faster and I'd say easier to control. All objects that I work with are passed as parameters and used as normal Java variables in the code.

0 投票
1 回答
10659 浏览

java - 流口水:插入逻辑和撤回

这是对我之前的问题的跟进。我有一个如下形式的决策树:决策树图

我想将其转换为 Drools Expert 中的规则。insertLogical提出使用. Drools 文档说明了这一点insertLogical

insertLogical(new Something()); 与插入类似,但当没有更多事实支持当前触发规则的真实性时,对象将自动收回。

这些对象被收回的事实很有用(因为我将在内存中拥有数以万计的对象,每个对象都会创建一堆)。还有一个方法retract(object),它从工作内存中删除一个对象。当我到达一个结束节点并删除(retract)将到达那里的基础对象(遵循决策树)时,它是否也删除了在遍历期间创建的所有这些临时对象?insertLogical

0 投票
4 回答
7123 浏览

machine-learning - 决策树学习和杂质

杂质的测定方法有以下三种:

熵

基尼指数

分类错误

每种方法有什么区别和合适的用例?