4

对于我在 AI 课上的一项作业,我们的任务是创建 Widrow Hoff delta 规则的感知器学习实现。我用java编写了这个实现:

以下 github 链接包含该项目: https ://github.com/dmcquillan314/CS440-Homework/tree/master/CS440-HW2-1

我遇到的问题不在于感知器的创建。那工作正常。

在训练感知器后的项目中,我将未分类的数据集应用于感知器,然后学习每个输入向量的分类。这也很好用。

我的问题是关于学习输入的哪个特征是最重要的。

例如,如果每个输入向量中的特征集是颜色、汽车型号和汽车品牌,我们想要分类哪个特征是最重要的。怎么会这样做。

我最初对此的理解使我相信计算相关系数是每个输入的特征值和生成的分类向量。然而,事实证明这是一个错误的假设。

还有其他方法可以学习最重要的特征吗?

编辑

样本权重向量:

(-752、4771、17714、762、6、676、3060、-2004、5459、9591.299、3832、14963、20912)

样本输入向量:

(55, 1, 2, 130, 262, 0, 0, 155, 0, 0, 1, 0, 3, 0)

(59, 1, 3, 126, 218, 1, 0, 134, 0, 2.2, 2, 1, 6, 1)

(45, 1, 2, 128, 308, 0, 2, 170, 0, 0, 1, 0, 3, 0)

(59, 1, 4, 110, 239, 0, 2, 142, 1, 1.2, 2, 1, 7, 1)

最后一个元素是分类。

当我找到一个答案时,我会在这里发布一个答案。到目前为止,我认为导师给出的答案是不准确的。

4

3 回答 3

3

通过计算学习模型对特征f的依赖程度来捕捉特征的重要性。

感知器是一个简单的前馈神经网络,对于神经网络(它是一个实值非线性函数),依赖性对应于输出函数对f的偏导数。

特征的相对重要性与其在训练感知器上的平均绝对权重成正比。对于一般的神经网络来说,这并不总是正确的。例如,这不一定适用于多层感知器。

有关更多详细信息(在此处键入确切的公式将导致符号混乱),请查看本文的第 2 节和第 3 节。我相信等式(8)(在第 3 节中)是您正在寻找的。

在那里,分数是多个学习者的总和。如果你的是单层感知器,那么学习的函数就是一个权重向量

w = ( w1 , w2 , ... wn )

那么,我一开始提到的平均绝对重量,简直就是绝对重量 | 无线| 第i个特征。这似乎太简单了,无法对特征的重要性进行排名,对吧?但是...如果您考虑一下,n 维输入x会转换为wx(向量点积)。也就是说,第i个权重wi完全控制输入沿向量空间的一维变化的程度。

顺便说一句,在大多数(如果不是全部)分类器中,特征权重本身就是衡量其重要性的指标。只是对于大多数其他分类器,权重是以更复杂的方式计算的。

于 2014-02-12T20:12:38.530 回答
1

事实证明这比我最初想象的要简单得多。答案/过程如下:

给定一组输入向量,如下所示:

[1,0,1,0], [0,1,0,1]

数据已经被限制在 0 和 1 之间以最小化方差。但是,就我的数据而言,我的数据更像以下内容:

[0,145,0,132],[0,176,0,140]

这会导致某些输入特征的方差更大,因此您将无法使用权​​重向量作为特征重要性的指标。因此,为了使权重向量成为重要性指标,我们首先通过除以特征最大值来规范化数据。

对于上面的集合,这将是:[0,176,0,140]

这将产生一组统一的特征向量,并且还将导致权重向量成为特征重要性的指标。

于 2014-03-14T19:39:13.697 回答
0

因为感知器学习,尤其是多层感知器网络,是一种黑盒算法,其中权重和激活部分受部分或几乎或全部特征的影响,我们还没有工具直接提取特征重要性,虽然它很容易让基于树的模型做到这一点。但是,我们可以使用此处介绍的 PERMUTATION IMPORTANCE 方法:https ://towardsdatascience.com/feature-importance-with-neural-network-346eb6205743

于 2019-12-22T21:39:03.280 回答