本期作者:Muhammad Ryan
本期编译:Peter
正文
如果你看到这个题目,可能会马上回答
主成分分析(PCA),因为冗余的输入是无用的。
没错,但这不是今天的重点。我们想知道的是输入特征对神经网络的预测计算有多重要。例如,通过学习时间、年龄、身高和缺席人数等几个预测因素来预测谁会通过考试。直觉上,决定学生是否通过考试的最重要的因素是学习时间。
在一个简单的线性回归中,我们可以通过看它的线性方程的权重来测量它。当然,假设预测器(X)已经标准化(X ')所以数据的量纲是相同的。
你可以在这两个函数中选择一个来归一化你的预测器。为了理解为什么只有使用权重我们才能衡量一个预测器相对于其他预测器的重要性,这里有一个例子。假设我们有一个线性方程。
我们把所有的x用5代替:
这是它贡献的部分,直观上来说,如果这个部分很大,当输入出错时,输出就会出错。例如,当我把x3从5换成1,我们得到:
如果把x2换成1,得到的是:
这里我们可以看到,由于权重的不同,x2值的变化比x3值的变化影响更大。这很明显,但我想强调的是,除了权重之外,我们可以从输出值与参考值的偏差来看我们的输入有多重要。
在神经网络中,输入的权重不是直接连接到输出层,而是连接到隐藏层。此外,与线性回归不同,神经网络是非线性的。为了看到输入的显著水平,我们寻找我们之前找到的第二个参数,如果我们随机改变输入值,它与神经网络输出值的偏差有多大。这里我们使用的参考值是原始错误值。为什么我称之为“original”。
让我们来看看真实的数据和真实的神经网络。预测学生在考试中的表现。
数据下载地址:https://archive.ics.uci.edu/ml/datasets/student+performance
下面是逐步来实现到在神经网络中输入显著水平:
1、使用下面的代码构建、训练和保存神经网络。在训练神经网络之后,我们不会直接使用它来预测,而是将训练过的模型保存到一个文件中。我们为什么要这么做?因为我们需要一个稳定的模型(记住,每次对模型进行训练,每次得到的权重和偏差都会不同)来计算每个输入的显著水平。
2、加载模型并计算其误差:
3、为随机改变每个输入值。我们将随机生成0到1之间的数字,替换测试数据测中的归一化输入参数,并立即将修改后的输入数据应用到刚刚加载的神经网络中。为什么在0和1之间随机生成值呢?因为我们在上面一段使用了第二个归一化函数(使用最大值和最小值)来归一化我们的输入。对每个归一化输入进行迭代,随机改变其值,反复进行,得到大量的样本,从而得到误差的平均值和标准差。这样可以消除偶然因素(记住,我们随机产生值)。
代码输出示例:
4、解释结果。我们得到了一些有趣的结果。首先是第二行,从随机输入值结果中得到的误差变化较小。这表明,参数“出行时间”对学生期末考试的成绩根本没有影响。在最后一行(G2)中,我们得到了一个非常高的误差。这说明第二阶段考试的成绩与期末考试成绩高度相关。从这个结果中,我们得到了输入的显著水平,即G2、G1、考试不及格、空闲时间、缺勤、学习时间和上学时间。另一个有趣的结果是学习时间对期末考试的价值没有明显的影响。这个结果非常违反直觉。在现实生活研究中,必须进一步研究。
这就是一种简单的方法来测量神经网络输入的显著水平。该技术可应用于神经网络、支持向量机和随机森林等其他机器学习算法。
来源:https://medium.com/datadriveninvestor/a-simple-way-to-know-how-important-your-input-is-in-neural-network-86cbae0d3689
领取专属 10元无门槛券
私享最新 技术干货