五月底我开始接触机器学习,买了周志华老师《机器学习》西瓜书和 《Python 核心编程》,之前对机器学习没了解,加上数学功底半吊子,看《机器学习》这本书来相当吃力,公式和推导囫囵过了。
不过编程功底还行,花半天时间把 Python 语法看完,再花半天时间学习 matlab 图形和脚本编程,能着手开始工作。
回到正题,我们如何进行样本划分?
一般地,样本集合划分为 Train set、Test set 两部分,特殊情况下,会从 Train set 中随机抽取 10% 的样本作为 Validation set。
训练集:学习样本数据集,通过匹配一些参数来建立一个分类器。建立一种分类的方式,主要是用来训练模型的。
验证集:对学习出来的模型,调整分类器的参数,如在神经网络中选择隐藏单元数。验证集还用来确定网络结构或者控制模型复杂程度的参数。
测试集:主要是测试训练好的模型的分辨能力(识别率等)
因此可以区分不同数据集的作用,训练集用于模型选择,验证集用于参数调优,模型优化及确定,测试集为了测试已训练出模型的泛化能力。
样本划分方法:
1.留出法
直接将数据集 D 划分为两个互斥的集合,其中一个集合作为训练集 S,另一个作为测试集 T, 比如训练集占 70% 样本,那么测试集占 30% 样本。
2.交叉验证法
将数据集 D 划分成 k 个大小相似互斥子集,前 k-1 个子集作为训练集,最后一个子集作为测试集。从而可进行 k 次训练和测试,最终返回 k 个测试结果的均值,预测的结果的准确度取决于 k 的取值,所以叫做 k 值交叉验证法,k 不是越大越好,也不是越小越好,通常取 k = 10, 叫做 10 折交叉验证法;当 k = 1 时,叫做留一法。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于