我正在尝试用neuralnet包构建一个神经网络,但遇到了一些问题。我已经成功地使用了nnet包,但使用neuralnet包就没那么顺利了。我已经阅读了整个文档包,但找不到解决方案,或者我可能找不到它。
我使用的训练命令是
nn<-neuralnet(V15 ~ V1 + V2 + V3 + V4 + V5 + V6 + V7 + V8 + V9 + V10 + V11 + V12 + V13 + V14,data=test.matrix,lifesign="full",lifesign.step=100,hidden=8) 和预测
result<- compute(nn,data.matrix)$net.result训练所需的时间要比nnet训练长得多。我尝试使用与nnet相同的算法(反向传播而不是重新静默反向传播),但什么也没有改变,也改变了激活函数(和linear.output=F)以及几乎所有其他东西,结果并没有改善。预测值都是一样的。我不明白为什么nnet能为我工作,而neuralnet不能。
我真的需要一些帮助,我(缺乏)对这两件事(神经网络和R)的理解可能是原因,但找不到原因。
我的数据集来自UCI。我想使用神经网络进行二进制分类。数据示例如下:
25,Private,226802,11th,7,Never-married,Machine-op-inspct,Own-child,Black,Male,0,0,40,United-States,<=50K.
38,Private,89814,HS-grad,9,Married-civ-spouse,Farming-fishing,Husband,White,Male,0,0,50,United-States,<=50K.
28,Local-gov,336951,Assoc-acdm,12,Married-civ-spouse,Protective-serv,Husband,White,Male,0,0,40,United-States,>50K.
44,Private,160323,Some-college,10,Married-civ-spouse,Machine-op-inspct,Husband,Black,Male,7688,0,40,United-States,>50K.
18,?,103497,Some-college,10,Never-married,NA,Own-child,White,Female,0,0,30,United-States,<=50K.
34,Private,198693,10th,6,Never-married,Other-service,Not-in-family,White,Male,0,0,30,United-States,<=50K.
29,?,227026,HS-grad,9,Never-married,?,Unmarried,Black,Male,0,0,40,United-States,<=50K.
63,Self-emp-not-inc,104626,Prof-school,15,Married-civ-spouse,Prof-specialty,Husband,White,Male,3103,0,32,United-States,>50K.
24,Private,369667,Some-college,10,Never-married,Other-service,Unmarried,White,Female,0,0,40,United-States,<=50K.
55,Private,104996,7th-8th,4,Married-civ-spouse,Craft-repair,Husband,White,Male,0,0,10,United-States,<=50K.
65,Private,184454,HS-grad,9,Married-civ-spouse,Machine-op-inspct,Husband,White,Male,6418,0,40,United-States,>50K.
36,Federal-gov,212465,Bachelors,13,Married-civ-spouse,Adm-clerical,Husband,White,Male,0,0,40,United-States,<=50K.
26,Private,82091,HS-grad,9,Never-married,Adm-clerical,Not-in-family,White,Female,0,0,39,United-States,<=50K.转换为矩阵,其中因子为数值:
V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15
39 7 77516 10 13 5 1 2 5 2 2174 0 40 39 0
50 6 83311 10 13 3 4 1 5 2 0 0 13 39 0
38 4 215646 12 9 1 6 2 5 2 0 0 40 39 0
53 4 234721 2 7 3 6 1 3 2 0 0 40 39 0
28 4 338409 10 13 3 10 6 3 1 0 0 40 5 0
37 4 284582 13 14 3 4 6 5 1 0 0 40 39 0
49 4 160187 7 5 4 8 2 3 1 0 0 16 23 0
52 6 209642 12 9 3 4 1 5 2 0 0 45 39 1
31 4 45781 13 14 5 10 2 5 1 14084 0 50 39 1
42 4 159449 10 13 3 4 1 5 2 5178 0 40 39 1
37 4 280464 16 10 3 4 1 3 2 0 0 80 39 1
30 7 141297 10 13 3 10 1 2 2 0 0 40 19 1
23 4 122272 10 13 5 1 4 5 1 0 0 30 39 0预测值摘要:
V1
Min. :0.2446871
1st Qu.:0.2446871
Median :0.2446871
Mean :0.2451587
3rd Qu.:0.2446871
Max. :1.0000000 Wilcoxon-Mann-Whitney检验值(曲线下面积)表明,预测性能与随机预测性能基本相同。
performance(predneural,"auc")@y.values
[1] 0.5013319126发布于 2014-01-30 09:56:50
当你使用神经网络得到奇怪的结果时,要考虑的第一个原因是归一化。你的数据必须归一化,否则,是的,训练会导致倾斜的NN,这将始终产生相同的结果,这是一个常见的症状。
查看您的数据集,有一些值为>>1,这意味着NN对它们的处理基本上是相同的。其原因是传统使用的响应函数在0附近的某个范围外(几乎)是常量。
在将数据输入神经网络之前,一定要对数据进行标准化。
发布于 2019-02-07 06:09:30
与@sashkello的答案类似,我之前也遇到过类似的问题,因为我的数据没有正确规范化。一旦我对数据进行了标准化,一切都运行正常。
最近,我再次遇到这个问题,在调试后,我发现神经网络提供相同的输出可能有另一个原因。如果您的神经网络具有像RSNNS包中那样的权重衰减项,请确保您的衰减项不会太大,以至于所有权重基本上都为0。
我在R中使用了插入包。最初,我使用的是decay超参数= 0.01。当我查看诊断时,我看到(交叉验证)的每一次折叠都在计算RMSE,但Rsquared始终是NA。在这种情况下,所有的预测结果都是相同的值。
一旦我将衰减降低到一个更低的值(1E-5或更低),我就得到了预期的结果。
我希望这能帮到你。
发布于 2020-10-22 18:42:36
我在这里为那些可能有和我一样的问题的人添加这篇文章。
如果以上任何一种方法都不起作用,而您正在使用带有自定义训练循环的TensorFlow。确保将training=True设置为:
predictions = model(inputs, training=True)https://stackoverflow.com/questions/15572091
复制相似问题