如何指定重要属性?

数据挖掘 机器学习 统计数据 特征选择
2021-10-03 01:32:03

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

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

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

我如何(从统计上)找到比其他属性更重要的属性?

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

我在机器学习中看到过术语特征或属性选择,但我不想丢弃剩余的属性,我只想对最重要的属性赋予更高的权重。

4个回答

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

一世(F)=-一世=1F一世lG2F一世

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

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

其实这里要回答的问题不止一个:

  1. 如何处理无模式/松散/缺失的数据
  2. 如何标记一个人(据我所知,无人监督)并创建一个标识符
  3. 如何训练您的系统,以便它可以告诉您应该使用哪些属性来识别此人

正如鲁本斯所提到的,如果您已经找到了一种方法来识别如何标记一个人,那么您可以使用决策树方法,特别是随机森林来根据信息增益计算最重要的属性。

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

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

那里有很多技术。如果您的信息系统附加了决策属性或标签,我发现最好的方法是使用基于粗糙集的属性约简。查看 Qiang Shen 和 Richard Jensen 的快速缩减算法。

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

仅仅为了它,在将近 5 年后,我想我可能会分享我在博士期间实际使用的东西来解决这个问题,这不是新的,或者我的博士的贡献,以防它帮助别人。

我们用于选择重要属性的度量是 和 之间的调和平均值(也称为 F 度量supportdiscriminability

对属性 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 节)中找到更短的版本。

谢谢大家的建设性回答!