k-fold交叉验证,神经网络,matlab
来源:互联网 发布:dope动作数据 编辑:程序博客网 时间:2024/04/25 06:48
很多机器学习算法为了避免过度拟合的问题,均使用了交叉验证的技术手段。
k-fold交叉验证的原理很简单,就是把训练数据随机分成k分,训练k次,每次选k-1分数据进行训练,剩余的一份最为验证,边训练,边验证,从而找出最优解
网上k-fold相关参考:http://blog.csdn.net/chenbang110/article/details/7604975
http://stackoverflow.com/questions/25889637/how-to-use-k-fold-cross-validation-in-a-neural-network
虽然有很多的人对k-fold的实现方法进行了讲解,但具体问题具体分析,还是不能满足我的要求。针对我自己的情况,给出在matlab中,使用神经网络,采用k-fold(k=10)的例子。希望能够帮助跟我有相似需求的研究人员。
以下是主要代码:
cvFold = crossvalind('Kfold',length(TH),setkfold); %setkfold就是k,设置为10,TH为训练样本
H_net_tmp = newff(minmax(PH),lay_str,{'tansig','tansig','purelin'},'traingdx');%PH为输入数据矩阵(必须是标准化后的)
H_net_tmp.trainParam.lr = 0.03;
H_net_tmp.trainParam.mc = 0.9;
H_net_tmp.trainParam.epochs = setMaxepochs;%最大迭代次数,我设置的是50000
H_net_tmp.trainParam.goal = 1e-3;
H_net_tmp.divideFcn = 'divideind';
H_net_tmp.trainParam.showWindow = false;
epoch_N = [];%用于存储没戏最后的训练次数
for n = 1 : setkfold
testIdx = (cvFold == n);
trainIdx = ~testIdx;
trInd = find(trainIdx);
tstInd = find(testIdx);
H_net_tmp.divideParam.trainInd = trInd;
H_net_tmp.divideParam.testInd = tstInd;
%training Network
%reconfigured assignment of random initial weights
H_net_tmp = init(H_net_tmp);%每次都对权重进行初始化,很重要,网上的很多代码都没有说明这点
[H_net_tmp,tr] = train(H_net_tmp,PH,TH,'useParallel','yes','useGPU','yes');
[~,I] = min(tr.tperf);
I = I(end);
epoch_N(n) = I;%I就是滴k次训练最优的那个次数
end
epoch_final = ceil(mean(epoch_N));
注意,一般在验证数据集上误差的变化情况是先显著减小,在增大,然后在减小或波动的减小。为了达到在验证数据集上的全局最优,在进行神经网络训练的时候,最后是训练次数到设置的最大迭代次数,而不是达到目标误差或训练集上的小值而停止训练,这点很重要,很重要,很重要,否则就是局部的最小了。[~,I] = min(tr.tperf);这就是去了验证集上的最小值。
- k-fold交叉验证,神经网络,matlab
- K-fold 交叉验证
- k-折交叉验证(k-fold CrossValidation) matlab代码
- k-折交叉验证(k-fold CrossValidation)
- k-折交叉验证(k-fold CrossValidation)
- k-折交叉验证(k-fold crossValidation)
- k-折交叉验证(k-fold crossValidation)
- k-折交叉验证(k-fold crossValidation)
- K-折交叉验证(k-fold crossValidation)
- K-折交叉验证(k-fold crossValidation)以及在matlab中的实现
- k折交叉验证;k-fold交叉验证;k-fold cross-validation
- 机器学习--k-折交叉验证(k-fold crossValidation)
- 模式识别之k-折交叉验证(k-fold crossValidation)
- 【机器学习】交叉验证和K-折交叉验证cross-validation and k-fold cross-validation
- 【机器学习】k-fold cross validation(k-折叠交叉验证)
- K-Fold Cross Validation(K倍交叉检验)
- matlab 中K折交叉验证crossvalind函数的理解
- 神经网络中的交叉验证
- Java内存模型与Java线程的实现原理
- F
- G
- Tomcat源码研究之配置文件解析
- H
- k-fold交叉验证,神经网络,matlab
- Flink源码--CLI提交Job
- I
- J
- codevs3147 矩阵乘法 2 (推导小公式)
- K
- django1.5.8+python27之旅-01创建项目
- Linux中zip压缩和unzip解压缩命令详解
- L