泛化能力:学到模型适用于新样本的能力。衍生:泛化误差
归纳偏好:算法在机器学习过程中对某种假设的偏好
“奥卡姆剃刀”原则:若有多个假设与观察一致,则选最简单的那个
NFL定理:没有免费的午餐。算法没有优劣好坏,针对具体问题具体分析
过拟合:为了得到一致假设而使假设变的过度复杂。模型过度拟合,在训练集上表现好,测试集上效果差。
欠拟合:模型拟合不够,在训练集上表现效果差。
原因及解决办法:
过拟合:
1:模型过于复杂→减少模型复杂度,增加正则化项,L1范数或L2范数
2:特征选取不合理→人工筛选特征,使用特征选择算法
欠拟合:
1:模型过于简单→增加模型复杂度eg、使用线性模型拟合二次曲线数据
2:特征集过少、数据集过少、抽样数据不合理
测试集应该尽可能与训练集互斥
留出法:直接将数据集D划分为2个互斥的集合,一般是7:3(7为训练集,3为测试集)
评估:一般要采用若干次随机划分、重复进行试验评估后取平均值作为留出法的评估结果。
常见做法:大约2/3~4/5的样本用于训练。一般而言,测试集至少应含有30个样例。
交叉验证法:先将数据集划分为k个大小相似的互斥子集,每个子集都尽可能保持数据分布一致性,即从数据集中通过分层采样得到;然后,每次用k-1个子集的并集作为训练集,余下的那个子集作为测试集;这样就可获得k组训练/测试集,从而可进行k次训练和测试,最终返回的是这k个测试结果的均值。也称为:k折交叉验证。K常用取值是10.
K折交叉验证通常要随机使用不同的划分重复p次,最终的评估结果是这p次k折交叉验证结果的均值。
交叉验证法的一个特例:留一法LOO:假定数据集中包含m个样本,若令k=m。缺陷:在数据集比较大时,训练模型的计算开销难以忍受。
自助法:它直接以自助采样法(bootstrapsampling,即可重复或有放回采样)为基础,给定包含m个样本的数据集D,我们对它进行采样产生数据集D’,每次随机从D中挑选一个样本,将其拷贝放入D’,然后再将该样本放回初始数据集D中,使得该样本在下次采样时仍有可能被采到;这个过程重复执行m次后,我们就得到了包含m个样本的数据集D’,这就是自助采样的结果。
包外估计:初始样本集D中约有36.8%的样本未出现在采样数据集D’中,于是我们可将D’用作训练集,D\D’用作测试集(‘\’表示集合减法)。
特点:自助法在数据集较小、难以有效划分训练/测试集时很有用;对集成学习等方法有很大的好处。自助法需引入估计偏差。
性能度量:对学习器的泛化性能进行评估,不仅需要有效可行的实验估计方法,还需要有衡量模型泛化能力的评价标准。
模型好坏:不仅取决于算法和数据,还决定于任务需求。
回归任务最常用的性能度量是“均方误差”
分类任务中最常用的两种性能度量:错误率与精度;既适用于二分类也适用于多分类。
错误率:分类错误的样本数占样本总数的比例。
精度:分类正确的样本数占样本总数的比例。
常用于信息检索、Web搜索等应用中经常出现。
对于二分类问题:
真实情况 |
预测结果 |
|
正例 |
反例 |
|
正例positive |
TP真正例(true positive) |
FN假反例(false negative) |
反例negative |
FP假正例(false positve) |
TN真反例(true negative) |
precision查准率P=TP/(TP+FP)
recall查全率R=TP/(TP+FN)
查准率-查全率曲线,简称“P-R曲线”,图为“P-R图”,评估性能好坏就是比较P-R曲线下面积的大小;引入“平衡点(BEP)”进行平衡点比较。
案例:
1:商品推荐系统中,为了尽可能少打搅用户,更希望推荐内容确是用户感兴趣的,查准率很关键。
2:逃犯信息检索系统中,更可能少漏掉逃犯,此时查全率比较重要。
F1是基于查准率与查全率的调和平均。
Fβ是加权调和平均(根据对查准率/查全率不同偏好设置权重)。β>0度量了查全率对查准率的相对重要性;β=1时退化为标准的F1;β>1时查全率有更大的影响,β<1时查准率有更大影响。
P32,多个二分类混淆矩阵,用宏F1(macro-F),微F1(macro-F1)
截断点(cut point),p与0.5比较,大于0.5为正例,反之。
ROC曲线则是从拍讯本身质量的好坏角度出发来研究学习期泛化性能的有力工具。
ROC全称是“受试者工作特征”曲线;ROC曲线纵轴是“真正例率(TPR)”,横轴是“假正例率(FPR)”。
TPR=TP/(TP+FN)
FPR=FP/(FN+FP)
AUC是ROC曲线下的面积。AUC=1—排序损失。AUC的取值范围在0.5和1之间。比较数值。
经典解析:ROC曲线图中的四个点和一条线。第一个点,(0,1),即FPR=0,TPR=1,这意味着FN(false negative)=0,并且FP(false positive)=0。Wow,这是一个完美的分类器,它将所有的样本都正确分类。第二个点,(1,0),即FPR=1,TPR=0,类似地分析可以发现这是一个最糟糕的分类器,因为它成功避开了所有的正确答案。第三个点,(0,0),即FPR=TPR=0,即FP(false positive)=TP(true positive)=0,可以发现该分类器预测所有的样本都为负样本(negative)。类似的,第四个点(1,1),分类器实际上预测所有的样本都为正样本。经过以上的分析,我们可以断言,ROC曲线越接近左上角,该分类器的性能越好。
为什么使用ROC曲线
既然已经这么多评价标准,为什么还要使用ROC和AUC呢?因为ROC曲线有个很好的特性:当测试集中的正负样本的分布变化的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现类不平衡(class imbalance)现象,即负样本比正样本多很多(或者相反),而且测试数据中的正负样本的分布也可能随着时间变化。
没看太懂,希望参考R或Python代码理解。