在我的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)
最后一个元素是分类。
当我找到答案时,我会在这里发布。目前,我认为教师给出的答案是不准确的。
回答:
这比我最初想象的要简单得多。答案/过程如下:
给定一组输入向量,如下所示:
[1,0,1,0], [0,1,0,1]
数据已经限制在0到1之间以最小化方差。然而,在我的数据中,更像是以下情况:
[0,145,0,132],[0,176,0,140]
这导致某些输入特征的方差要大得多,因此你将无法使用权重向量作为特征重要性的指示器。因此,为了使权重向量成为重要性的指示器,我们必须首先通过除以特征最大值来归一化数据。
对于上述集合,将是:[0,176,0,140]
这将产生一组统一的特征向量,并且权重向量也将成为特征重要性的指示器。