嗨,我的问题有点长,请把它看完。
我正在做一个有30个参与者的项目。我们有两种类型的数据集(第一个数据集有30行和160列,第二个数据集有与outputs=y相同的30行和200列,这些输出是独立的),我想要做的是使用第一个数据集来预测第二个数据集outputs.As第一个数据集是矩形的,并且具有高维我已经使用了因子分析,现在有19个因子,覆盖了98%的方差。现在我想使用这19个因素来预测第二个数据集的输出。
我正在使用神经网络和反向传播,一切都进行得很好,我的结果真的很接近输出。
我的问题:
1-由于我的输入是因子(它们在-1和1之间),并且我的输出比例在4到10000和整数之间,我应该在运行神经网络之前仍然缩放它们吗?
2-我缩放了数据(包括输入和输出),然后用神经网络进行预测,然后我检查了MSE误差,它是如此之高,比如6000,而我的预测和实际输出是如此接近。但是如果我重新调整预测和输出,然后检查MSE,它接近于零。重新缩放然后检查MSE是否没有偏见?
3-我读到最好不要从一开始就缩放输出,但是如果我只缩放输入,我所有的预测都是1。不缩放输出是正确的吗?
4-如果我想绘制ROC曲线,我该怎么做呢?因为我的结果永远不会等于真实的输出?
感谢您阅读我的问题
发布于 2016-04-18 01:48:20
edit#1:有一本关于如何使用神经网络results http://www.lcc.uma.es/~jja/recidiva/048.pdf生成ROC曲线的出版物
1)您可以缩放您的值(例如,使用minmax )。但是只扩展你的训练数据集。保存缩放过程中使用的参数(在minmax中,它们将是数据缩放所依据的最小值和最大值)。只有这样,您才能使用从训练数据集获得的最小值和最大值来缩放测试数据集。请记住,使用测试数据集,您将尝试模拟对未见数据进行分类的过程。看不见的数据将使用测试数据集中的缩放参数进行缩放。
2)当谈到错误时,一定要提到错误是在哪个数据集上计算的。您可以在训练数据集上计算误差函数(实际上,有不同的误差函数,其中之一是均方误差,即MSE),并为测试数据集计算一个误差函数。
4)想想看:假设你用测试数据集训练一个网络,它在输出层只有一个神经元。然后,将其与测试数据集一起呈现。根据您在输出层中使用的传递函数(激活函数),您将获得每个样本的值。让我们假设您使用sigmoid传递函数,其中最大值和最小值分别为1和0。这意味着预测将被限制在1到0之间的值。
假设您的目标标签("truth")只包含离散值0和1(表示样本属于哪个类)。
targetLabels=[0 1 0 0 0 1 0 ];
NNprediction=[0.2 0.8 0.1 0.3 0.4 0.7 0.2];
你如何解释这一点?您可以应用硬限制函数,使NNprediction向量仅包含离散值0和1。假设您使用的阈值为0.5:
NNprediction_thresh_0.5 = [0 1 0 0 0 1 0];
vs.
targetLabels =[0 1 0 0 0 1 0];
有了这些信息,您可以计算假阳性、FN、TP和TN (以及一系列额外的派生指标,如真阳性率= TP/(TP+FN) )。
如果你有一条ROC曲线,显示假阴性率与真阳性率,这将是该图中的一个点。但是,如果改变硬限制函数中的阈值,则可以获得完整曲线所需的所有值。
合乎道理?看到一个进程对其他进程的依赖关系了吗?
https://stackoverflow.com/questions/35532249
复制相似问题