比较树木变化的最佳技术/算法是什么?

数据挖掘 机器学习 分类
2021-09-24 12:29:06

我有一个想用机器学习解决的问题。我想使用某种分类来了解树数据结构中刚刚添加的更改是“好”还是“坏”。

假设我有这棵树:

        (A) 
        / \
       /   \
     (B)   (C)

我对其进行了更改(“好”的更改,因此算法应该将此更改与“好”的更改相关联)。更新的树将是这样的:

       (A)
       / \
      /   \
    (D)   (C)
    /
   /
 (B)

在另一个节点 (B) 上方添加某个节点 (D) 将被归类为“良好”更改。

所以当我让学习器拥有正确的数据时,算法应该能够知道,如果我在 B 类型的节点之上添加一个 D 类型的节点,这是一个“好”的变化。

我想使用保持树结构的 XML 文件,像朴素贝叶斯这样的简单分类器不起作用,因为它无法识别一个节点是否添加到另一个节点之上,它只能知道已经添加了一个节点。

我不知道应该如何使用哪种算法/技术,也不知道应该如何将数据传递给学习者,因为这种情况下的上下文很重要。

比较树木变化的最佳技术/算法是什么?

1个回答

大多数机器学习算法旨在处理表格格式的数据。这意味着,每个数据实例都包含在一行中,每一列的值是给定变量的特定实例的观察值。大多数 ML 算法设计用于处理此类数据的原因很少。一个重要的因素是结构非常简单,可以轻松完成各种操作。第二个原因是即使看起来像一个不灵活的结构,数据中的某种附加结构仍然可以用表格格式表示(使用冗余)。另一个原因是,设计用于特定数据结构的算法将受限于处理更小的问题集。

所以,主要的一点是“如果山不来穆罕默德,那么穆罕默德必须去山”(注意这里没有任何宗教相关的内容)。因此,您要做的是以表格格式自己制作特征。

我会给你一个例子,说明我是如何看待起点的。考虑一个实例在表中的一行。每一行都会发生变化一个变化有一个标签,它是因此,您可以添加一个用作目标功能的功能,称为class我们进一步注意到更改是节点的插入。如果您的更改是多种类型的,您可以添加一个名为operation-type的功能,该功能具有以下值:insertdeletechange等。现在,节点也有一个类型。您可以添加一个名为node-type的新功能,可以是AB等。您要做的就是通过注意对您或您的业务重要的内容来发明这些功能,并最终仅选择那些足够相关的功能。我真的希望它足够清楚。