首页 新闻 会员 周边 捐助

关于神经网络模型的疑问

0
[已解决问题] 解决于 2019-04-26 13:26

神经网络模型,因为其随机性,每次训练出来的结果中准确度不太一样。想请问下:

  1. 每次训练的准确度会相差很多么? 我自己试过几次,貌似不会很大。但是个人经验不足,不敢确认;
  2. 假使准确度相差较大,而当前的模型训练完毕后,发现此时的准确度较高。那保存该模型后,准确率就能和测试集的准确率基本一致?
  3. 神经网络模型属于生成法还是判别法模型?
  4. 神经网络需要设置超参,那是否有必要将数据分成三份---训练集、验证集、测试集?还是说,只有在交叉验证的条件下,才需要这样切分数据?
  5. 顺便问下,这个数据集到底要怎么切分法?我问过人,据说常规情况下,大部分模型都是需要设置超参的。而设置超参的话,就必须切分出验证集(该验证集用于超参的训练)。那按照这种说法,不是数据集就是要分成三份才是合理的么?可是实际上,我经常看到的,也都是分成两份而已啊?
老笨啊的主页 老笨啊 | 初学一级 | 园豆:6
提问于:2019-04-17 11:01
< >
分享
最佳答案
0

关于第5个问题,我也一直没想明白,不过我刚才抽烟的时候突然想明白了,不一定正确:

假设你是项目经理,我是码农,小丽是测试。你拿到一堆样本,想要得到一个模型,于是你把样本分成2份:一份发给我用来训练模型,一份发给小丽,用来测试我训练的模型。

我拿到数据后又分成2份,一份是训练集,就是用来训练模型的,一份是验证集,就是我用来验证模型参数是否达到要求的(实际上有时候不是明确的分成两份,也可能是我训练10次模型,每次都把你给我的那份数据按照某种策略分成两份,会有重复使用的情况,这是另一个问题了)。等我把模型交给小丽,小丽会用你给她那份数据测试正确率等,这份数据就是测试集。

也就是说程序员通常只关心训练集和验证集,而测试人员只关心测试集。所以你经常看到只分两份,因为你看到的都是码农。

可能通常码农不会用到测试集,验证就当测试了,合二为一了。

奖励园豆:5
会长 | 专家六级 |园豆:12463 | 2019-04-17 16:41

你说的对。这个说法,我也看到过。
只是常规情况下,我见到的都是这么切分数据集的:
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size = 1/3,random_state =1),这种情况下,可能所谓的X_test和y_test应该被定义为验证集,而不是测试集。。
但是,又有个疑问,因为要考虑是否过拟合的问题,我们还是要留出部分数据,来查看数据的准确度或是R方值,是否明显下降。。而验证集,一般又被人说是用来进行超参训练的。。这里不是有冲突么?

老笨啊 | 园豆:6 (初学一级) | 2019-04-17 17:21

@老笨啊: 大佬,你在数据分析行业干活呀,真是令人羡慕。我也不知道了,我从来没干过,我只看过书而已,都是纸上谈兵,建议i问问公司里的大大佬吧。

会长 | 园豆:12463 (专家六级) | 2019-04-17 17:25
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册