如何指定重要属性?


15

假设一组由许多数据源组成的结构松散的数据(例如Web表/链接的打开数据)。数据后面没有通用的模式,每个数据源都可以使用同义词属性来描述值(例如“国籍”与“ bornIn”)。

我的目标是找到一些“重要”属性,以某种方式“定义”它们描述的实体。因此,当我为这样的属性找到相同的值时,我将知道这两个描述很可能是关于同一实体(例如同一个人)的。

例如,属性“ lastName”比属性“国籍”更具区分性。

我怎样才能(统计地)找到比其他更重要的属性?

一个简单的解决方案是获取每个属性值的平均IDF,并将其作为属性的“重要性”因素。一种类似的方法是计算每个属性出现多少个不同的值。

我已经在机器学习中看到了术语“特征”或“属性选择”,但是我不想丢弃其余的属性,我只是想给最重要的属性赋予更高的权重。

Answers:


16

一种可能的解决方案是计算与每个属性关联的信息增益

信息增益

最初,您拥有整个数据集,并计算每个项目的信息增益。具有最佳信息增益的项目是您应该用来对数据集进行分区的项目(考虑项目的值)。然后,对每个项目执行相同的计算(但选择的项目除外),并始终选择最能描述/区分数据集中条目的计算。

有一些可用于此类计算的实现。决策树通常基于具有最佳信息增益的特征来进行特征选择。您可以使用结果树结构查找这些重要项目。


这是熵吗?我很困惑。
瓦伦塔斯(Valentas)

这么晚才回复很抱歉。为了获取信息,以降低整体熵; 所以它们基本上是相同的概念。看看 “熵”和“信息增益”的定义。
鲁本斯

7

实际上,这里有多个问题要回答:

  1. 如何处理无模式/丢失/丢失的数据
  2. 如何给人贴标签(据我了解,不受监督)和创建标识符
  3. 如何训练系统,使其能够告诉您应该使用哪些属性来识别人员

如鲁本斯所提到的,如果您已经找到一种识别如何标记人物的方法,则可以使用决策树方法(特别是随机森林)基于信息获取来计算最重要的属性。

但是,如果您没有任何标签信息,则可以使用某些专家视图进行初步属性选择。之后,您可以进行非监督分类以检索标签。最后,您可以使用随机森林或其他方法(如贝叶斯信度网络)选择最重要的字段。

为了实现所有这些,您还需要完整的数据集。如果您的数据集比较松散,则必须手动或启发式地找到一种方法来耦合表示不同名称的相同属性。而且,您可以使用诸如期望最大化方法之类的插补技术来完成数据集。或者,您也可以使用贝叶斯网络,并可以保留缺少的字段。


2

有很多技术。如果您的信息系统附有决策属性或标签,我发现的最佳方法是使用基于粗糙集的属性约简。看看沉强和理查德·詹森(Richard Jensen)的快速简化算法。

如果您有未标记的数据,请检查主成分分析(PCA)


0

仅仅为了这个目的,在将近5年之后,我想我可能会分享我在博士学位中实际使用的解决这个问题的方法,这不是新事物,还是我的博士学位的贡献,以防它对其他人有所帮助。

我们用于选择重要属性的度量是support和之间的谐波均值(也称为F度量)discriminability

属性p的支持直观上是我们数据集中的实体包含该属性值的频率:

support(p) = |instances(p)|/ |D|, 

其中instances(p)是具有p值的实体集合,| D | 是数据集D中的实体数。

discriminability(p) = |values(p)| / |instances(p)|, 

其中values(p)是属性p在我们的数据集中可以具有的(不同,因为它是一个集合)值的集合。这由实际具有该属性值的实体的数量标准化。

换句话说,支持度量p出现在数据集中的频率,可辨别性表明该属性离成为“关键”有多接近。

有关更多详细信息,您可以阅读我的论文(第4.3.2节),或者可以在我们的EDBT 2019论文中找到一个较短的版本(第2节)。

谢谢大家的建设性回答!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.