模型评估与改进
一、交叉验证
k折交叉验证:将数据分成k部分,每部分叫做折
。在训练时,一个折作为测试集,其余折作为训练集。
优点
- 对数据的使用更加高效
- 可以提供模型对训练集选择的敏感性信息
- 每个样例刚好在测试集中出现一次
缺点
- 增加了计算成本
- 速度慢(比单次划分大约慢k倍)
分层k折交叉验证
划分数据,使得每个折中类别之间的比例与整个数据集中的比例相同
分层k折交叉验证比k折交叉验证有更好的泛化性能
留一法交叉验证
每个折只包含单个样本的k折交叉验证,单个数据点作为测试集
- 耗时
- 小型数据集上有好的估计结果
打乱划分交叉验证
训练集取train_size个点,测试集取test_size个点,重复n_iter次。
- 可以在训练集和测试集之外独立控制迭代次数
- 允许每次迭代仅使用部分数据(train_size、test_size之和不等于1)
分组交叉验证
适用于数据中的分组高度相关
二、网格搜索
尝试参数的所有可能组合
1.简单网格搜索
对参数使用for循环,保存得分最高的参数组合
2.参数过拟合的风险与验证集
任何根据测试集精度所做的选择都会将测试集的信息“泄露”到模型中。因此保留一个单独的测试集是很重要的,它仅用于最终评估。
3.带交叉验证的网格搜索
**嵌套交叉验证 **不是只将原始数据一次划分为测试集和训练集,而是使用交叉验证进行多次划分
外层循环遍历将数据划分为训练集和测试集的所有划分。对于每种划分都运行一次网格搜索。然后,对于每种外层划分,利用最佳参数设置计算得到测试集分数。
主要用于评估模型在特定数据集上的效果
交叉验证与网格搜索并行 一种交叉验证划分下使用特定参数设置来构造一个模型,与利用其它参数的模型是完全独立的。这使得交叉验证与网格搜索成为多个CPU内核或集群上并行化的理想选择。
三、评估指标与评分
朴素的指标:
- 分类性能:正确分类的样本所占的比例
- 回归性能:R2
1.二分类指标
正类和反类,其中正类是要寻找的类
假正例和假反例(统计学中的第一类错误和第二类错误)
不平衡数据集 精度不再是一个很好地度量
混淆矩阵
- 精度 正确预测的数量与所有样本数量之比
A c c u r a c y = T P + T N T P + T N + F P + F N Accuracy=\frac{TP +TN}{TP+TN+FP+FN} \quad Accuracy=TP+TN+FP+FNTP+TN
- 准确率 预测为正例的样本中真正正例的比
P e r s i o n o n = T P T P + F P Persionon=\frac{TP}{TP+FP} \quad Persionon=TP+FPTP
- 召回率 正类样本中预测为正类的比
R e c a l l = T P T P + F N Recall=\frac{TP }{TP+FN} \quad Recall=TP+FNTP
- f-分数 准确率与召回率的调和平均
F = 2 ∗ p e r c i s i o n ∗ r e c a l l p e r c i s i o n + r e c a l l F=2*\frac{percision*recall}{percision+recall} \quad F=2∗percision+recallpercision∗recall
改变模型中用于做出分类决策的阈值,是一种调节给定分类器的准确率和召回率之间折中的方法
2.多分类指标
多分类的精度:正确分类的样本所占的比例
通常,多分类结果比二分类结果更加难以理解
对于不平衡数据集
,常用多分类版本的f-分数
- 宏平均:计算未加权的按类别f-分数。对所有类别给出相同权重
- 加权平均:以每个类别的支持作为权重来计算按类别f-分数的平均值
- 微平均:计算所有类别中假正例、假反例、真正例的总数,利用这些计数计算准确率、召回率和f-分数
每个样本同等看待适用于微平均,每个类别同等看待适用于宏平均
3.回归指标
R2是评估模型的直观指标