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

3

我正在学习用于大学考试的ID3算法,但是我对如何选择最佳属性以创建具有较少属性的新子树(直到创建叶子)仍有些困惑。

因此,我将介绍一些我在老师讲课笔记中发现的实际例子,并希望有人能够给我提供一些实际帮助来解决我的疑问。

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

enter image description here

这个决策树简单地说明当我在餐厅时是否需要等待。

例如:如果有许多顾客顾客属性=many),他们饥饿饥饿属性=yes)并且所选烹饪类型为法国菜类型属性=French),则意味着我需要等待。而如果没有顾客顾客属性=no),则可以立即得出结论,我不必等待。

好的,因此使用决策树非常简单。

这是表示前面决策树示例的的表格(还有一些其他属性,但我认为这不是很重要):

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
        AThe 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 我认为这些属性并没有全部用于我的决策树,因为我可以不使用所有属性来达到目标(结论)。
现在,我已将示例分为正案例和负案例,并且我必须选择最佳的第一个属性(即先前属性中最相关的属性)。
实际上,我必须执行以下第一步:
他选择了patrons属性作为此第一个分支步骤的最佳属性
此属性可以具有以下值:None (餐厅没有顾客),Some (有少数顾客),Full (餐厅客满),因此我必须在3个子树中进行分支(并将相关的情况放入这些树的相关根节点标签中)。
我的问题是: 如何选择最佳节点? 我知道我必须使用值:
用于计算所有属性的信息增益
并在对所有属性执行此操作后,我必须选择 信息增益 最高的那个属性作为 最佳属性。但是,我在将这些公式应用于我将首先选择Patrons属性的最佳属性的具体案例时遇到一些问题。请问有人能向我展示如何在具体案例中应用这些公式吗?
非常感谢。
安德里亚。

你试过在纸上计算吗? - Fred Foo
@larsmans 我试着去做,但我觉得我有些困惑。所以,关于我的先前示例,为了计算信息增益,我首先要计算熵。因此,我的S集是由提供的12个示例组成的域,而X是类的集合(因此我认为X仅包含2个正面和负面示例的类,对吗? 我发现有些问题无法理解p(x)到底是什么。在维基百科上说它是:“类x中元素数量与集合S中元素数量的比例”。那么p(x) = 2/12 = 0.16?对吗? - AndreaNobili
啊,这是维基百科上的符号表示法。有点令人困惑。等一下。 - Fred Foo
当我们有一些具有离散数值的属性,例如年龄或血压时,如何选择最佳属性? - Mona Jalal
1个回答

0

看起来你从ID3的维基百科页面中获取了符号,但这并不是标准的机器学习符号。以下是它告诉你要计算的内容:

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

如果你这样做,那么你就有了一个衡量特征A分裂质量的指标。


我还是有些困惑...但是如何将它应用到我的具体例子中呢?我需要计算p(x),其中x是属于等待或不等待的类(是这样吗?)。为了计算我的具体例子的值,我该怎么做呢?感谢您的时间和帮助。 - AndreaNobili

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接