分类算法
什么是分类
一些常见的概念:
- 训练集(Training data):用于训练模型(的参数,如神经网络的各层权重和偏置,线性回归分析的系数);
- 验证集(Validation data):用于调整超参数(Hyper-Parameters,如神经网络的宽度和深度、学习率等);
- 测试集(Test data):用于评价模型本身的有效性(准确率等)
- 训练误差(Training error):分类器在训练集上的误差。
- 泛化误差(Generalization error,out-of-sample error):分类器在未见样本(不在训练集中的样本)上的误差。
对于数据集的划分
-
划分法: 训练集与测试集
把样本划分成2个独立的数据集合, 如, 训练集 (2/3), 测试集(1/3)。
适用于大规模的数据样本。 -
交叉验证(Cross-validation)
把数据集合划分成k 个子样本;
使用k - 1 个子样本作为训练集,另一个作为测试样本—k-折交叉验证。
适用于中等规模的数据。 -
留一测试(Leave One Out, k = n)
适用于小规模数据。
泛化误差的偏差/方差分解、过拟合、欠拟合
以回归为例
过拟合与欠拟合
-
过拟合:模型过于复杂(模型的表达力或capacity过高:例如神经网络的参数过多,决策树过深、过宽等等,而训练样本相对较少)。
考虑变量数大于方程数的线性方程组。 -
欠拟合:模型过于简单(模型的表达力或capacity不够)
考虑以线性模型去拟合非线性模型。
判别模型与生成模型
关于判别模型:
关于生成模型:
用哪种模型:
- 区分模型推导时更简单;
- 生成模型更加复杂一些:x比w往往高维,因此参数往往更多,训练困难;
- 生成模型反映了数据的实际产生过程,如果想把数据的产生过程集成到模型中,则应该考虑生成模型;(考虑如日中天的生成对抗网络Generative Adversarial Networks, GAN)
- 如果训练数据中有大量的遗失数据,则应