看西瓜书第2章的时候感觉有些不条理,遂按照自己的思路梳理了一遍。
1、如何理解模型评估和模型选择?
模型评估:评估模型的泛化误差——用测试误差评估、用偏差与方差评估;
模型选择:本质上是算法调整,选用使模型的泛化误差更小的新算法 或 算法的超参数配置。
2、用测试误差评估泛化误差(常用于定量评估)
(1)泛化误差 ≠ 经验误差(训练集) 泛化误差 ≈ 测试误差(测试集)
(2)评估测试误差(通过性能度量)
回归问题:均方误差等;
分类问题:交叉熵、错误率、精度、查准率、查全率、F1、ROC、AUC、代价敏感错误率等。
(3)测试集如何产生,即数据集如何划分?
① 训练集 & 测试集
留出法:三七分,随机采样;
交叉验证法:各子集轮流充当测试集;
自助法:有放回采样。
② 训练集 & 验证集 & 测试集
训练集:调整模型参数,如y=wx+b中的w、b;
验证集:调整算法的超参数,如学习率、迭代次数;
测试集:评估模型的泛化能力。
(常用划分比例) 训练集 : 验证集 : 测试集 = 6 : 2 : 2 ~ 98 : 1 : 1
(4)比较检验:评估用测试误差代表泛化误差的置信度。
3、用偏差和方差评估泛化误差(常用于定性评估)
(1)偏差:预测值的平均值(期望)与真实值的差距,反映模型的准确性。
(2)方差:单次预测值与预测值的平均值(期望)的差值平方的期望值,反映模型的稳定性。
(3)偏差大->欠拟合->模型复杂度偏低->增加训练次数
(4)偏差小,方差大->过拟合->模型复杂度偏高->提前终止训练或正则化
(5)应选用偏差小、方差小的算法,即预测准确且模型简单的算法。
4、模型选择
模型选择问题:模型评估完不太行,如何调整算法,使算法学习到更好的模型。主要包括两种方法:
(1)使用新的算法。
(2)调整算法的超参数。
注:超参数和参数的区别
超参数:学习算法的参数,在训练过程中保持不变。如:学习率、迭代次数、神经网络层数、每层的单元数等。
参数:模型的参数,在训练过程中调整。如:对于假设y=wx+b,通过不断学习调整参数w、b,训练出一个较好的模型。
5、从机器学习算法设计的角度理解
最后有必要说明,将模型评估与选择放到整个机器学习流程中来看,也许能更好地理解其重要作用。