文章标题

来源:互联网 发布:如何计算算法复杂度 编辑:程序博客网 时间:2024/06/09 14:21

1.代价敏感错误率与代价函数

真实情况 预测正例 预测反例 正例 0 cost01 反例 cost10 0

“代价敏感”错误率为

E(f;D;cost)=1m(xiD+II(f(xiyi))×cost01+xiDII(f(xi)yi)×cost10)

在非均衡代价下,ROC曲线不能满足学习器的期望总体代价,而“代价曲线”则可达到该目的。横轴为正例概率代价:
P(+)cost=p×cost01p×cost01+(1p)×cost10,

纵轴为归一化代价:
costnorm=FNR×p×cost01+FPR×(1p)×cost10p×cost01+(1p)×cost10

FNR为假阴性率,FPR为假阳性率。
代价函数

2.比较检验

2.1 假设检验

假设检验中的“假设”是对于学习器泛化错误率分布的某种判断或者猜想。现实中我们并不知道泛化错误率,只能获知其测试错误率ϵˇ.泛化错误率与测试错误率未必相同。但可根据测试错误率估推出泛化错误率的分布。
对于泛化错误率为ϵ的学习器;假设有m个测试样本,测试错误率ϵˇ意味着在m个测试样本中恰有ϵˇ×m个被误分类。则得到错误率为ϵˇ的概率为

P(ϵˇ;ϵ)=(mϵˇ×m)ϵϵˇ×m(1ϵ)mϵˇ×m

ϵˇ=ϵ时P最大,且这符合二项分布
这里写图片描述
我们根据图表粗略估计ε0,比如这幅图当中ε0可取5,6,7都可以,然后求出总体概率α,我们把大多数样本分布的区间1-α称为置信区间,所以只要不超过ε0,即在置信度下就是符合条件的假设 ,否则被抛弃,即在α显著度下。
这里写图片描述
包含m个样本的测试集上,泛化错误率为的学习器被测得测试错误率为的概率:
很多时候我们并非仅做一次留出估计,而是通过多次留出法或是交叉验证法,得到k个测试错误率ϵˇ1ϵˇ2、…..、ϵˇk,此时可以使用“t-检验”。
平均错误率μ和方差σ2
μ=1ki=1k ϵˇi

σ2=1k1i=1k(ϵˇiμ)2

考虑到这k个测试错误率可看成泛化错误率ϵ0的独立采样,则变量
τt=k(μϵ0)σ

服从自由度为k-1的t分布。
对假设“μ=ϵ0”和显著性α我们可计算出错误率均值为ϵ01α概率内能观察到的最大错误率,即临界值。双边t验证的常见临界值。
这里写图片描述

2.2交叉验证t检验

对于学习器A、B,若我们使用k折交叉验证法得到各种的k组测试错误率。若两个学习器的性能相同,则他们使用相同的训练/测试集得到的测试错误率应相同,即ϵAi=ϵBi
对每对结果求查δi=ϵAiϵBi;若两个学习器的性能相同,则差值均值应为零。此时再应用前面相同的分析,两个学习器显著度分析结果。

2.3 McNemar 检验

对于二分类问题学习器A和B:
这里写图片描述
如果假设两学习器性能相同,则应该有e01=e10,那么变量|e01e10|应当服从正态分布。McNemar考虑变量:

τχ2=(|e01e10|1)2e01+e10

服从自由度为1的χ2分布,给定显著度α,即可用分析两个学习器的性能差别。

2.4 Friedman检验与 Nemenyi后续检验

  1. Friedman检验
    多个数据集每个数据集对多个算法A、B、C、D的性能排序,求得服从自由度为k-1的χ2分布的变量:
    τF=(N1)τχ2N(k1)τχ2

    检测是否所有算法的性能相同
    2.Nemenyi后续检验
    若算法的性能是不一样的,则需要进行后续检验来进一步区分各算法。常见的为Nemenyi后续检验。
    Nemenyi检验计算平均序列值差别的临界值域:
    CD=qαk(k+1)6N

2.5 偏差和方差

“偏差和方差分解”是分析学习器泛化能力的一种重要工具。
学习器的期望预测为:

f(x)¯¯¯¯¯¯¯=ED[f(x;D)]

不同训练集产生的方差为
var(x)=ED[(f(x;D)f(x)¯¯¯¯¯¯¯)2]

偏差为
bias(x)2=(f(x)¯¯¯¯¯¯¯y)2

于是泛化误差为
E(f;D)=var(x)+bias(x)2+ϵ2

偏差、方差、噪声的含义为:偏差表示学习器的期望预测与实际之间的偏离程度,表征学习器对数据的拟合能力;方差表示同样大小的训练集的变动导致学习性能的变化,即刻画了数据扰动所造成的影响;噪声表示当前任务下所能达到的期望泛化误差的下限。
偏差和方差是存在冲突的,在训练程度不足时,拟合程度不够,训练数据的扰动不大,偏差主导泛化错误率,称为欠拟合;训练加深后,拟合程度充足,但训练集的轻微扰动都会造成结果的显著波动,方差主导泛化错误率,称为过拟合。
这里写图片描述

原创粉丝点击