如何过滤/排序/排序对象模型节点?

Posted

技术标签:

【中文标题】如何过滤/排序/排序对象模型节点?【英文标题】:How to filter/sort/rank object model nodes? 【发布时间】:2010-11-19 09:36:25 【问题描述】:

我有某种对象模型,我需要为某种属性过滤和排序它的节点。存在哪些类型的自动化系统来生成和选择与我想要的对象模型相关的属性? (我故意抽象而不具体)

我正在考虑一种类似于垃圾邮件过滤器或监督分类系统的系统,在给定示例数据集的情况下,它可以识别找到感兴趣节点的规则。但是,我正在寻找一个更通用的系统,因为它不需要任何有关对象模型的设计时信息。它应该作为电子邮件中的垃圾邮件过滤器、代码库中的错误查找器、新闻组中的兴趣过滤器或社交网站上的机器人帐户查找器中的平等工作。只要它能够通过反射探索对象模型并被赋予一组“有趣”的节点,它就应该能够找到能够找到更多类似它们的节点的规则。

【问题讨论】:

顺便说一句:如果不存在好的解决方案,我一点也不感到惊讶。 【参考方案1】:

极不可能有一个单一的自动分类系统可以满足您的所有要求。此外,我认为 bug finder 应用程序超出了此类系统的范围,因为在该领域中成功使用的方法主要围绕句法分析、数据流分析和其他针对软件错误问题高度定制的算法方法。尽管那里正在进行机器学习研究,但该领域的分类系统主要用于增强而不是替代分析方法(据我所知)。

对于大多数重要的分类问题,通常需要仔细选择和细化问题表示,以便通过机器学习获得有用且有效的结果。简单地使用现有的“原始”数据对象模型而不对状态空间进行某种定制转换往往会导致输入数据值分布的不完整覆盖和/或学习分类器的泛化能力差。此外,特定于正在使用的机器学习方法的其他参数可能需要反复试验才能获得给定问题的体面结果。并非所有方法都有这样的参数,但很多方法都有,例如神经网络、遗传算法、贝叶斯推理方法等。

您要求的是一种几乎通用的机器学习方法,这不是目前存在的东西。我能看到的最可行的替代方案是(1)找到一个不同问题的子集,这不是所需的能力/复杂程度,或者(2)创建一个不仅使用一种分类技术,而是使用一种分类技术的系统。有一个不同方法的工具箱,它会针对给定的问题自动测试,然后使用在监督学习机制下产生最佳分类结果的方法。然而,后者仍然是一个相当大的挑战,要有效地完成,它并没有消除如何表示/转换数据模型的状态空间的问题。

【讨论】:

最后一句“如何表示/转换数据模型的状态空间”的后半部分。实际上准确地描述了我想知道的解决方案的问题。 状态空间模型问题的一种可能性是扩展“工具箱”概念并具有自动测试出来的各种不同表示。这可能包括 (1) 无转换 [这可能适用于某些类型的离散值或文本数据],(2) 自然语言的概念集群或本体,(3) 数值数据的粗编码表示等。这些也将是通用方案,提供了以有用的方式划分状态空间以更容易学习模式的良好机会,但缺乏更多定制方法的能力。

以上是关于如何过滤/排序/排序对象模型节点?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Vue中对对象数组进行排序和过滤

通过模型关系列对分页器对象进行排序

在 django 中按模型字段的子字符串对对象进行排序

如何检索一组对象,按其他对象的字段过滤和排序,所需对象是外键?

C语言编程学习:八大排序之基数排序

按属性值排序对象