嗨,我的问题有点长,请看完,直到最后。
我正在开展一个有30名参与者的项目。我们有两种类型的数据集(第一个数据集有30行和160列,第二个数据集有相同的30行和200列作为输出= y,这些输出是独立的),我想要做的是使用第一个数据集和预测第二个数据集输出。第一个数据集是矩形类型,具有高维度我使用因子分析,现在有19个因子覆盖高达98%的方差。现在我想用这19个因子来预测第二组数据的输出。
我正在使用神经网络和反向传播,一切顺利,我的结果非常接近输出。
我的问题:
1-因为我的输入是因子(它们介于-1和1之间)并且我的输出比例介于4到10000之间并且是整数,我应该在运行神经网络之前对它们进行缩放吗?
2-I缩放数据(输入和输出)然后用神经网络预测,然后我检查MSE误差它是如此高,如6000,而我的预测和实际输出是如此接近彼此。但如果我重新调整预测和输出,那么检查MSE接近零。重新定标然后检查MSE是否不偏不倚?
3-我读到最好不从头开始缩放输出,但如果我只是缩放输入,那么我的所有预测都是1.不缩放输出是否正确?
4-如果我想绘制ROC曲线我该怎么做呢。因为我的结果永远不等于实际产出?
感谢您阅读我的问题
答案 0 :(得分:0)
[编辑#1]:有一篇关于如何使用神经网络结果生成ROC曲线的出版物 http://www.lcc.uma.es/~jja/recidiva/048.pdf
1)您可以缩放您的值(例如,使用minmax)。但只能扩展您的训练数据集。保存缩放过程中使用的参数(在minmax中,它们将是缩放数据的最小值和最大值)。只有这样,您才能使用从训练数据集中获得的最小值和最大值来缩放测试数据集。请记住,使用测试数据集,您试图模仿对看不见的数据进行分类的过程。使用测试数据集中的缩放参数缩放看不见的数据。
2)在谈论错误时,请提及计算错误的数据集。您可以在训练数据集上计算误差函数(实际上,存在不同的误差函数,其中之一,均方误差或MSE),并且一个用于测试数据集。
4)想一想:假设您使用测试数据集训练网络,并且在输出层中只有1个神经元。然后,您将其与测试数据集一起呈现。根据您在输出图层中使用的传递函数(激活函数),您将获得每个示例的值。假设您使用sigmoid传递函数,其中max和min值为1和0.这意味着预测将限制在1和0之间的值。
我们还要说你的目标标签(“真值”)只包含离散值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曲线显示假阴性率与真阳性率,则这将是图中的单个点。但是,如果更改硬限制功能中的阈值,则可以获得完整曲线所需的所有值。
有道理吗?查看一个进程对其他进程的依赖性?