本文主要是介绍【Abee】吃掉西瓜——西瓜书学习笔记(一),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
绪论、模型评估与选择
目录
【内容包含 第一章、第二章】
没有免费的午餐(No Free Lunch Theorem)
过拟合(overfitting)与欠拟合(underfitting)
几种模型验证方法
模型评估的常见参数
模型性能检验
没有免费的午餐(No Free Lunch Theorem)
所有学习算法的期望性能相同(只是处理不同的问题时,学习算法A优于学习算法B)
过拟合(overfitting)与欠拟合(underfitting)
过拟合:学习样本集非一般特征,泛化性能下降
解决方法:1. 选择泛化误差最小的模型 2.增加噪声,数据增强(旋转,裁剪,光照,翻转)
3.减小网络规模(不常用) 4. 正则化
欠拟合:没有学到样本集一般特征
解决方法:1. 在决策树中增加分支 2. 神经网络学习中多训练几轮
几种模型验证方法
留出法 (hold-out)
将数据集分为互斥的两个集合,作为训练集和验证集,比例一般在0.66-0.8左右
交叉验证法(cross validation)
将数据集分为k个大小相似的互斥子集,每次保留一个集合作为验证集,其余集合作为训练集,进行k次训练和测试,返回测试结果的均值,也称k折交叉验证
自助法(bootstrapping)
可放回抽样,对包含m个样本的数据集D,每次抽取一个,拷贝入D’,重复执行m次。某些数据可能被抽取多次,某些一次都没有抽到。某一样本始终不被抽到的概率约等于0.368,把这个部分抽出来作为验证集
适用范围:数据集较小,难于有效划分训练\验证集时使用
模型评估的常见参数
错误率(error rate):分类错误率为分类错误的数占样本总数的比例
精度(accuracy):精度 = 1 - 错误率
查准率(precision):真阳性/(真阳性+假阳性)所有预测正例中的真实正例
查全率(recall):真阳性/(真阳性+假阴性)所有真实正例中判断正确的例
P-R曲线和平衡点(Break Even Point):
P-R曲线即横轴是查全率,纵轴是查准率的曲线,平衡点是对称轴y=x与曲线的交点
如果A曲线能完全包住C曲线,则可以认为A曲线性能优于C曲线
对于两个有交叉的曲线,平衡点更高的那个性能更好(还是要看具体问题)
F1:帮助(并不是
查准率和查全率的调和平均数
调和平均数比起算术平均和几何平均更偏重较小值
ROC曲线(Receiver Operating Characteristic):
横轴为假正例率(FNR)(所有真正假例中的错误识别的正例)FP/(TN+FP)
纵轴为真正例率(FPR)(所有真正例中的正确识别的正例,即recall)TP/(TP+FN)
AUC(Area Under ROC Curve):
顾名思义,ROC曲线下的面积,面积越大模型性能越好
代价矩阵:当FN,FP的结果重要性不一样时,可以设定代价矩阵对其加权,比如二分代价矩阵可以为[[0,1],[5,0]]
代价曲线:取(0,FPR),(1,FNR)两点连线,将ROC上每个点转换成代价平面的一条线,所有线取下界得到期望总体代价
模型性能检验
假设检验:在某个置信度范围内是否拒绝原假设
二项检验的代码
Matlab icdf('Binomial',1-α,m,k-1)R语言 qbinom(1-α,m,ε0)
t检验 当单个学习器多次试验得到多个测试错误率时,可以使用t检验
变量
服从自由度为k-1的t分布 |
交叉t检验
对于不同的学习器,可以采用交叉验证t检验,即用k折交叉验证得到的测试错误率进行成对t检验
McNemar检验
分类差别列连表中的数据服从自由度为1的卡方分布
其中e01为学习器A分错而学习器B分对的样本的量,e10以此类推
Matlab程序 icdf('Chisquare',1-α,k-1)R语言 qchisq(1-α,k-1)
Friedman检验
基于算法排序,F检验,公式太复杂不写了
可以理解为不同的数据集在不同的算法上得到的结果进行排序,并对此顺序做出假设
Nemenyi检验
是一个后续检验,比如F检验之后可以继续做这个检验
CD为不同算法平均序值的临界值域,qa可以查表得到
当序值超出这个值的时候,拒绝原假设
偏差-方差分解(bias-variance decomposition)
泛化误差可以分为偏差、方差和噪声之和
其中 偏差:学习算法本身的拟合能力,随训练程度下降
方差:训练集变动导致的学习性能变化(数据扰动的影响),随训练程度上升
噪声:任一学习算法期望泛化误差下界
这篇关于【Abee】吃掉西瓜——西瓜书学习笔记(一)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!