您的位置:首页 > 其它

数据的划分——训练集,验证集,测试集

2018-06-29 23:39 936 查看

1.为什么要对数据进行划分,越多的数据训练的模型不是越好吗?

      的确,模型的性能和训练数据的多少有很大关系,我们先看看这三个集合的用处

训练集(training set)

      训练集的作用就是训练模型,形成模型的内部结构和参数估计,比如古典的线性回归模型,每个变量前边的参数都是由训练集估计出来的,这里我们要区分一个概念,参数和超参数:

       参数(parameter)是依赖于训练集的,对于同一份数据的同一个模型,参数是唯一的。

       超参数(hyperparameter)是不依赖与训练集合的,他是我们人为指定的,可以取任意合理值的,比如K近邻的聚类中心,随机森林的决策树数量。除此之外,模型确定参数的标准,都是预测误差的最小化或者AUC值的最大化(只要你不改程序),但是超参数的选择就可以根据自己需要的情况选取,没有绝对的标准,换句话说,含有超参数的模型应用要更加灵活一些。

验证集(validation)

      验证集的存在就是为了对超参数的选择,因为我的训练集已经决定了参数了,再由训练集得出超参数,很容易造成过拟合,所以我们需要一个独立于训练集的数据,是我们的模型不至于钻进训练集的牛角尖,这里可能不是很好理解,我举个例子:

      要让一个神经网络模型学习识别猫,我随机给了机器300张猫的图片,它学习到了很多特征,眼睛、嘴巴、牙齿、四肢等等,但是我再依据这些图片来调超参数,他就可能学习到训练集特有的特征,比如训练集内黑猫比较多,白猫比较少,模型就会认为,大部分的猫都是黑色的,但这只是因为随机性产生的训练集特有的特征,对其他集合和样本并不适用。

测试集(test set)

       测试集的情况就比较特殊了,因为从模型训练的角度,测试集不参与模型的训练,也不参与模型的选择,他能做的就是像其他人展示模型的性能,换句话说,测试集不为你的模型提供任何信息,就像向领导汇报工作的ppt一样,在做ppt之前,所有工作都做完了,只是借助ppt向领导展示,也正因为如此,测试集的数据,要尽可能贴近实际中总体的分布,一定要从总体中随机抽取,与总体分布不符的测试集,没有模拟实际工作的作用,它的准确率也不能够代表实际工作的情况,下面以二分类问题的预测结果为例,证明准确率是类别比例的函数。

  预测结果预测结果
  NegativePositive
实际类别NegativeTrue Negative(TN)False Positive(FP)
实际类别PositiveFalse Negative(FN)True Positive(TP)

       测试集的准确率=(TN+TP)/(TN+TP+FN+FP)

       模型对Negative的识别能力F1=TN/(TN+FP),表示对实际N类能正确识别的比例 

       模型对Positive的识别能力F2=TP/(FN+TP),表示对实际P类能正确识别的比例

假设实际中N出现的概率为α,P出现的概率为1-α,根据全概率公式:

      实际工作中模型的准确率accuracy=αF1+(1-α)F2,当F1和F2确定的时候,accuracy是由α决定的函数,α越大,accuracy越接近F1;α越小,accuracy越接近F2,一个能被我们操纵的准确率并没有什么用,但是当测试集是来自总体的随机样本,accuracy是模型对总体估计的无偏估计,才能代表模型实际工作的效果。

(细心的大家一定发现了,如果F1=F2,accuracy就不收α的影响,但是实际中这种情况并不多见)

      关于模型的评价,准确率只是最基本的评价指标,可以看到,准确率仅仅反应了混淆矩阵主对角线上的部分信息,遗漏了很多其他的问题,后面会专门介绍一下模型预测结果的评价指标。

2.怎么划分训练集,验证集和测试集?

        使用没有超参数的模型,如古典的线性回归模型,就不需要验证集,可以采取7:3的比例随机划分训练集和测试集。

        需要验证集的模型,如随机森林模型,可以采取6:2:2的比例,

     注意!!!一定要随机划分!!!

         

以上是我个人浅薄的理解,希望各位高手帮忙指正,有什么意见尽管提,我一定虚心改正,因为我不是学计算机的,这些数据分析步骤的程序语言我会随着学习逐步补全。




希望每个人都能对未知的领域保持最起码的敬畏和尊重

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: