机器学习最终目标就是希望得到泛化误差比较小的模型, 如何利用现有的数据得到泛化误差小的模型以及模型评价的量化标准, 这章的统计学的概念特别多.
概念
- 误差 样本的真实值和模型的预测值之间的差异.
- 训练误差 在训练集上的误差
- 泛化误差 在新样本上的误差 我们希望得到一个泛化误差小的模型
- 过拟合(overfitting) 和欠拟合(underfitting) 过拟合是不可避免的
评估方法
如何利用现有的数据得到泛化误差小的模型,一般把数据分成训练数据和测试数据,训练数据来训练模型,测试数据来评估模型,把测试误差作为近似的泛化误差。
- 留出法
把现有数据划分为训练集S和测试集T, , 在划分过程需要主要:- 保证数据分布的一致性: 训练集和测试集的正反例的分布需要相同
- 为了减少单次留出的不稳定性,需要多次留出取平均
- 训练集S和测试集T的划分比例: 一般测试集占整个数据集的70%
本方法适用于数据集比较大的情况
- 交叉验证法(K折交叉验证)
把数据切成K份,每份的数据分布是一致的,然后K-1份的并集做训练集,剩下的一份做测试集,训练K次,计算平均结果。 K一般建议是10次,
image.png
为了减少数据分布对模型的影响,一般建议进行P次K折交叉验证。就是进行P*K次模型训练再计算平均值。
他的极端方法就是留一法,数据集有M个样本,进行M折。 该方法适用于小数据量,
本方法适用于数据集比较大的情况
- 自助法
对M个样本的数据集进行有放回的M次采样生成一个训练集, 原数据集减去生成的做测试集(就是没有被采样过的样本做测试集)
本方法适用于数据集比较小,难于有效划分训练集和测试集的场景,会引入估计偏差
在统计学中,估计误差是此估计量的期望值与估计参数的真值之差
- 调参和最终模型
调参就是使用算法和该算法参数不同取值进行训练 ,确定最好的算法以及该算法下参数的取值。
然后根据确定的算法和参数对全部数据集进行训练就是最后提交的模型了。
性能度量
如何量化一个模型的好坏,不仅取决算法和数据,和任务需求也有关, 比如这次疫情,判断阳性一定是阳性,如果把阴性判断为阳性这是不能容忍的。
- 错误率
分类错误样本数占总样本数的比例
- 精度率
分类正确样本数占总样本数的比例
上面都是针对离散变量而言,连续变量使用定积分 ,如上两个指标不能满足一些业务需求
- 查全率(recall),查准率(precision)和F1
对于二分类问题可以组合真实值和预测值把数据分成 TP,FP,TN,FN 这就是二元混淆矩阵。
查准率表示预测为正且真实也为正的样本数和预测为正的样本数比例。 筛选的准确率。
查全率表示预测为正且真实也为正的样本数和真实为正样本数比例。 把真筛选出来的能力
这两个相互矛盾: 比如如果全部判断为真,那么查全率很高,因为把真的都挑出来了,但是查的就不是很准,把很多F都都预测为P了。
根据学习器的预测结果(预测结果通常是一个为T的概率值)进行排序,顺序把样本当正例进行预测,计算P,R值.使用这个两个值可以构建P-R曲线 ,P-R 曲线面积大学习算法优秀,还可以通过BEP来判断当 查准率=查全率 时这个值越大的学习算法越好。 BEP比较简单这个时候使用F1度量
由于在真实的场景中需要根据业务场景来决定对这两个值的偏重读,所有还有F1的加权形式,
偏重查全率 偏重查准率 怎么取值没有说
- ROC和AOC
很多学习器比如逻辑回归都是产生一个预测概率,然后与分类阈值进行比较,大于为正类,小于为负类, 阈值是可以调的, 当阈值大查准率高,当阈值小查全率高.
根据样本的预测概率进行排序,顺序把样本当正例进行预测,每次计算两个值TPR(和擦recall一样),FPR然后进行得到ROC曲线.
TPR(真正例率): 预测为正且真实也为正的样本数和真实为正样本数比例 = RECALL
FPR(假正例率): 预测为正且真实为负值的样本数和真实为负样本数比例
AOC为ROC曲线的面积. AOC是样本预测的排序质量, 学习器强的AOC的值大
https://datawhalechina.github.io/pumpkin-book/#/chapter2/chapter2
双层累加类似嵌套的for循环 例子
- 代价敏感错误率和代价曲线
本参数关注预测出错带来的后果, 不仅仅再关注预测成功的比例
表示将第个样本预测为第类样本的代价. 那个值越大,造成的损失越大 , 所以希望代价敏感的错误率越小 , 使用代价曲线用来判断学习器的好坏, 曲线面积小的好
比较检验
有了评估方法和性能度量,但是还是不够客观, 需要看这个模型真实的效果, 使用了比较假设.
网友评论