首页 > 网络 > 云计算 >

神经网络训练之交叉验证

2016-12-28

神经网络训练之交叉验证。今天来讲一种在机器学习中常用的精度测试方法,叫做交叉验证。它的目的是得到可靠稳定的模型,具体做法是拿出大部分数据进行建模,留小部分样本用刚刚建立的模型进行预测,并求出这小部分样本预测的误差,记录它们的平方和。

神经网络训练之交叉验证。今天来讲一种在机器学习中常用的精度测试方法,叫做交叉验证。它的目的是得到可靠稳定的模型,具体做法是拿出大部分数据进行建模,留小部分样本用刚刚建立的模型进行预测,并求出这小部分样本预测的误差,记录它们的平方和,这个过程一直进行,直到所有的样本都恰好被预测了一次,交叉验证在克服过拟合问题上非常有效。接下来介绍一些常用的交叉验证方法。

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来做交叉验证。这里有上面介绍的交叉验证方法。一个比较有用的函数是train_test_split。功能是从样本中随机的按比例选取train datatest 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是随机数的种子。

相关文章
最新文章
热点推荐