神经网络训练之交叉验证
来源:互联网 发布:自动变速箱编程 编辑:程序博客网 时间:2024/06/05 19:31
http://blog.csdn.net/acdreamers/article/details/44663891,感谢原作者的付出和分享。
今天来讲一种在机器学习中常用的精度测试方法,叫做交叉验证。它的目的是得到可靠稳定的模型,具体做法是拿出
大部分数据进行建模,留小部分样本用刚刚建立的模型进行预测,并求出这小部分样本预测的误差,记录它们的平方
和,这个过程一直进行,直到所有的样本都恰好被预测了一次,交叉验证在克服过拟合问题上非常有效。接下来介绍
一些常用的交叉验证方法。
1. 10折交叉验证
10折交叉验证是把样本数据分成10份,轮流将其中9份做训练数据,将剩下的1份当测试数据,10次结果的均值作
为对算法精度的估计,通常情况下为了提高精度,还需要做多次10折交叉验证。更进一步,还有K折交叉验证,10
折交叉验证是它的特殊情况。K折交叉验证就是把样本分为K份,其中K-1份用来做训练建立模型,留剩下的一份来
验证,交叉验证重复K次,每个子样本验证一次。
2. Holdout验证
其实Holdout验证并不是一种交叉验证,因为数据并没有交叉使用。它的方法是这样的,随机从最初的样本中选择
部分,形成验证数据,而剩下的当作训练数据。一般来说,少于三分之一的数据被选作验证数据。
3. 留一验证
留一验证只使用样本数据中的一项当作验证数据,而剩下的全作为训练数据,一直重复,直到所有的样本都作验证
数据一次。可以看出留一验证实际上就是K折交叉验证,只不过这里的K有点特殊,K为样本数据个数。
通常我们使用Python的机器学习库Scrikit-Learn中的Cross-Vlidation来做交叉验证。这里有上面介绍的交叉
验证方法,具体参考:http://scikit-learn.org/stable/modules/cross_validation.html
一个比较有用的函数是train_test_split。功能是从样本中随机的按比例选取train data和test data。形式为
X_train, X_test, y_train, y_test =
cross_validation.train_test_split(train_data,train_target, test_size=0.4, random_state=0)
test_size是样本占比。如果是整数的话就是样本的数量。random_state是随机数的种子。
最后附上样本调优的文章:http://blog.csdn.NET/busycai/article/details/6159109
- 神经网络训练之交叉验证
- 神经网络中的交叉验证
- k-fold交叉验证,神经网络,matlab
- 交叉验证之我见
- 神经网络-训练集 验证集 测试集
- keras lastm循环神经网络训练验证测试
- 基于交叉熵准则(Cross Entropy Criteria)的神经网络训练
- 神经网络训练中的训练集、验证集以及测试集合
- 神经网络训练中的训练集、验证集以及测试集合
- 模型选择之交叉验证
- SVM之交叉验证【转】
- 机器学习之交叉验证
- marchine learning 之交叉验证
- 交叉检验---训练数据,验证数据和测试数据
- SVM训练时交叉验证参数最优选择
- 交叉检验---训练数据,验证数据和测试数据
- 交叉检验---训练数据,验证数据和测试数据
- 交叉检验---训练数据,验证数据和测试数据
- 一个神奇的文件Dockerfile
- 浅谈Java内部类的四个应用场景
- 【51NOD1242】斐波那契数列的第N项(矩阵快速幂)
- java内省详解
- maven(4)------maven核心pom.xml文件常用元素分析
- 神经网络训练之交叉验证
- 关于SQL语句的排序问题
- C# 保存Excel文件 ( 打开Excel文件格式与扩展名指定格式不一致)
- PHP-FPM自启动脚本编写与详细操作说明
- 确定两串乱序同构
- Linux下FTP服务器默认目录的更改方法
- USB描述符
- 极光推送android
- http长连接、长轮询的理解