关于ID3算法如何选择将节点分支到子树的最佳属性的一些问题

时间:2013-06-15 17:18:56

标签: algorithm machine-learning artificial-intelligence

我正在研究Universe exame的 ID3 algotithm ,我有一些问题需要了解如何选择最佳属性来创建在其根目录中具有较少属性的新子树(直到达到叶子的创造)

所以我将在老师的讲义中提出一个实际的例子,我希望有人可以给我一些实际的帮助来解决我的疑惑。

这是我要构建的最终决策树

enter image description here

这个决策树简单地说我是否必须等待,当我在餐厅时。 因此,例如:如果很多顾客顾客属性=很多)并且他们饥饿饥饿属性=是< / strong>)类型的菜肴是法语类型属性=法语)所以这意味着我会等待)。相反,如果没有顾客顾客属性=没有),我可以立即得出结论,我不必等待。

好的,所以使用决策树非常简单。

这是表示上一个决策树示例的的表(还有一些属性,但我认为这不是那么重要):

enter image description here

所以,如果我说错了,请更正我,这个表格为我提供了显示常见案例的 12个例子,ID3算法将使用它来构建我的决策树。

这是ID3算法的伪代码:

ID3 (Examples, Target_Attribute, Attributes)
    Create a root node for the tree
    If all examples are positive, Return the single-node tree Root, with label = +.
    If all examples are negative, Return the single-node tree Root, with label = -.
    If number of predicting attributes is empty, then Return the single node tree Root,
    with label = most common value of the target attribute in the examples.
    Otherwise Begin
        A ← The Attribute that best classifies examples.
        Decision Tree attribute for Root = A.
        For each possible value, v_i, of A,
            Add a new tree branch below Root, corresponding to the test A = v_i.
            Let Examples(v_i) be the subset of examples that have the value v_i for A
            If Examples(v_i) is empty
                Then below this new branch add a leaf node with label = most common target value in the examples
            Else below this new branch add the subtree ID3 (Examples(v_i), Target_Attribute, Attributes – {A})
    End
    Return Root

所以这个算法从创建一个根节点开始,在这个节点中,我把上一个表提供的所有的例子按照我要对事件进行分类的类进行划分。

所以,在这种情况下,我将之前的12个例子除以2个对应的类别:积极的例子(与情况有关:我会在餐厅等待)和负面例子(与情况有关:我不会在餐厅等候

因此,查看上一张表,我的决策树的根节点有以下情况:

+:X1,X3,X4,X6,X8,X12 (正面示例)

- :X2,X5,X7,X9,10,X11 (负面例子)

与这些示例相关的属性是上表中显示的属性: Fri,Hun,Pat,Price,Rain,Res,Type,Est

我觉得这些属性并非都在我的决策树中使用,因为我使用all来达到目标​​(结论)whitout。

现在我处于这样的情况:我将我的示例分为正面和负面情况,我必须选择第一个最佳属性(这与之前所有属性的相关性更高)。

在实践中,我必须执行第一步:

enter image description here

他选择顾客属性作为第一个分支步骤的最佳属性

此属性可以包含以下值:(餐厅没有顾客),部分(顾客很少),完整(餐厅满是顾客),所以我必须在3个子树中分支(并在相关案例的相关根节点标签中加入相关案例)

我的问题是:我如何选择最佳节点?

我知道我必须使用值:

enter image description here

用于计算所有属性的信息增益

enter image description here

在为所有属性执行此操作之后,我必须选择最佳属性具有信息增益高值

但我在上一个例子中发现了一些问题。有人可以告诉我如何将这些公式应用于我选择 Patrons属性为第一最佳属性的具体案例?

Tnx这么多

安德烈

1 个答案:

答案 0 :(得分:0)

看起来你采用了Wikipedia page on ID3中的符号,这并不是标准的机器学习符号。以下是它告诉你计算的内容:

  • 对于每个类,样本在类x中的概率p(x)。这只是x类中所考虑的集合的比例。
  • 整个训练集的熵H(S)。公式很简单。
  • 对于每个属性(变量,特征)A:
    • 在A。
    • 上拆分会产生的子集T集
    • T的每个元素t的熵H(t)(使用与之前相同的公式;可以缓存此值以避免重复计算)。
    • 信息增益IG(A),它是前一步骤的分裂的熵的函数。

如果您这样做,那么您可以衡量功能A上的分割质量。