模型评估与选择_简易版

模型评估与选择


文章目录

二分类问题的泛化误差上界

T={(xi,yi)}T = \{(x_i,y_i)\}T={(xi​,yi​)} 来自于联合概率分布 P(X,Y)P(X,Y)P(X,Y) 且有 XRn,Y{1,+1}X \in R^n, Y \in \{-1,+1\}X∈Rn,Y∈{−1,+1} ,而且 F={f1,...,fn}F = \{f_1,...,f_n\}F={f1​,...,fn​} , 损失函数为 010-10−1 损失

则关于 fff 的期望风险与经验风险为

R(f)=E[L(Y,f(X))]R(f) = E[L(Y,f(X))]R(f)=E[L(Y,f(X))]

R^(f)=1Ni=1NL(yi,f(xi))\hat R (f) = \frac{1}{N}\sum_{i=1}^NL(y_i,f(x_i))R^(f)=N1​i=1∑N​L(yi​,f(xi​))

则经验风险最小化函数为

f^=argminfFR^(f)\hat f = arg \min\limits _{f\in F} \hat R (f)f^​=argf∈Fmin​R^(f)
fNf_NfN​的泛化能力为

R(f^)=E[L(Y,f^(X))]R(\hat f) = E[L(Y,\hat f(X))]R(f^​)=E[L(Y,f^​(X))]

则对于任意一个函数,以概率 1δ1-\delta1−δ 有

R(f)R^(f)+ϵ(d,N,δ)R(f) \leq \hat R(f) + \epsilon(d,N,\delta)R(f)≤R^(f)+ϵ(d,N,δ)

其中 ϵ(d,N,δ)=12N(logd+log1δ)\epsilon(d,N,\delta) = \sqrt {\frac{1}{2N}(\log d+\log \frac{1}{\delta})}ϵ(d,N,δ)=2N1​(logd+logδ1​)

HoeffdingHoeffdingHoeffding 不等式:
P(ESnSnt)exp(2t2i=1n(bia1)2),t>0P(ES_n - S_n \geq t) \leq exp(\frac{-2t^2}{\sum_{i=1}^n(b_i-a_1)^2}),\forall t>0P(ESn​−Sn​≥t)≤exp(∑i=1n​(bi​−a1​)2−2t2​),∀t>0
其中 Sn=i=1nXiS_n = \sum_{i=1}^nX_iSn​=∑i=1n​Xi​是独立随机变量 X1,...,XnX_1,...,X_nX1​,...,Xn​之和,且 Xi[ai,bi]X_i \in [a_i,b_i]Xi​∈[ai​,bi​]


混淆矩阵

1 0
1 a (TP) b (FN)
0 c (FP) d (TN)

一级指标

  • TP ( true positive ),真正,被正确预测的正样本数
  • FN ( false negative ),假负,被错误预测为负类的正样本数
  • FP ( false positive ),假正, 被错误预测为正类的负样本数
  • TN ( true negative ), 真负,被正确预测的负样本数

二级指标

  • 真正率 TPRTPRTPR 或者 灵敏度 (Sensitivity)(Sensitivity)(Sensitivity)
    • 模型正确预测的正样本比例
    • TPR=TP/(TP+FN)TPR = TP / (TP+FN)TPR=TP/(TP+FN)
  • 真负率 TNRTNRTNR 或者 特指度 (Specificity)(Specificity)(Specificity)
    • 模型正确预测的负样本比例
    • TNR=TN/(TN+FP)TNR = TN / (TN+FP)TNR=TN/(TN+FP)
  • 假正率 FPRFPRFPR
    • 被预测为正类的负样本比例
    • FPR=FP/(TN+FP)FPR = FP / (TN+FP)FPR=FP/(TN+FP)
  • 假负率 FNRFNRFNR
    • 被预测为负类的正样本比例
    • FNR=FN/(TP+FN)FNR = FN / (TP+FN)FNR=FN/(TP+FN)
  • 查准率 percisionpercisionpercision
    • 预测为正类的样本中实际为正类的比例
    • p=TP/(TP+FP)p = TP / (TP + FP)p=TP/(TP+FP)
  • 召回率 recallrecallrecall
    • 被模型正确预测的正样本比例
    • 高召回意味着,很少将正样本误分为负样本
    • r=TP/(TP+FN)r = TP / (TP + FN)r=TP/(TP+FN)

三级指标

F1ScoreF_1 - ScoreF1​−Score:

  • F=2rpr+p=2TP2TP+FN+FPF = \frac{2rp}{r+p} = \frac{2TP}{2TP+ FN + FP}F=r+p2rp​=2TP+FN+FP2TP​
  • 精度与召回的调和平均 2F=1r+1p\frac{2}{F} = \frac{1}{r} + \frac{1}{p}F2​=r1​+p1​

其余指标

  • PRP-RP−R 曲线
  • Fβ=(β2+1)rpr+β2pF_\beta = \frac{(\beta^2 + 1)rp}{r + \beta^2 p}Fβ​=r+β2p(β2+1)rp​

ROC 曲线 与 AUC

  • ROC(Receiver Operating Characteristic)ROC (Receiver\ Operating\ Characteristic)ROC(Receiver Operating Characteristic)
  • TPRTPRTPR 沿 yyy 轴绘制, FPRFPRFPR 沿 xxx 轴绘制
  • 曲线每一个点对应了不同阈值下的一个模型

CodeCodeCode:

# From 尹昊宇
#ROC曲线 y轴为真阳率(TP/(TP+FN)) x轴为假阳率(FP/FP+TN)
def plotroc(classscore,label):
    import matplotlib.pyplot as plt
    current = [1.0,1.0]  #用于记录当前绘图光标停止的位置,初始位置为(1,1),即全部预测为正类
    ysum = 0  #计算ROC曲线下的面积
    numpos = sum(np.array(label)==1.0)  #计算训练样本中正类个数
    ystep = 1/float(numpos)  #计算y的步长,相当于1/TP+FN
    xstep = 1/float(len(label)-numpos)  #计算x的步长,相当于1/FP+TN
    sortindex = classscore.T.argsort() #将该矩阵(m*1)从小到到大排序,返回索引
    fig = plt.figure()
    ax = fig.add_subplot(1,1,1)
    for index in sortindex.tolist():  #将所有样本从得分最小的开始依次预测为反类
        if label[index] == 1.0:
            delx = 0
            dely = -ystep
        else:
            delx = -xstep
            dely = 0
            ysum += current[1] #面积计算时,只有x轴发生偏移,才需要加一下此时y轴高度
            #由于面积可以看作是多个长方形之和,长方形宽一样,只要计算长(y)的和即可
        ax.plot([current[0],current[0]+delx],[current[1],current[1]+dely],c = 'b')
        current = [current[0]+delx,current[1]+dely]
    ax.plot([0,1],[0,1],'b--')#蓝色虚线
    ax.axis([-0.05,1.05,-0.05,1.05])
    plt.show()
    return ysum*xstep
auc = plotroc(prob,label)

交叉验证

如何估计模型的泛化能力?

  • 交叉验证 (CrossValidation)(Cross Validation)(CrossValidation)
  • 留一法 (LeaveOneOutCrossValidation)(Leave-One-Out Cross Validation)(Leave−One−OutCrossValidation)

留一法的每一回合都用了几乎所有样本进行训练;同时没有随机因素的影响;但是计算成本太高。


自助法 (bootstrapping)(bootstrapping)(bootstrapping)

利用自助采样法为基础

自助法重复 mmm 次得到包含 mmm 个样本的数据集 DD'D′

limm>(11m)m>1e0.368\lim_{m -> \infty}(1-\frac{1}{m})^m -> \frac{1}{e} \approx 0.368 m−>∞lim​(1−m1​)m−>e1​≈0.368


正则化 (regularization)(regularization)(regularization)

minfF1Ni=1NL(yi,f(xi))+λJ(f),λ0\min_{f\in F} \frac{1}{N}\sum_{i=1}^N L(y_i,f(x_i))+ \lambda J(f), \lambda \geq 0f∈Fmin​N1​i=1∑N​L(yi​,f(xi​))+λJ(f),λ≥0

常见的惩罚:
L1,L2惩罚。


模型比较

  • ttt 检验
    两个学习器 A,BA,BA,B
    kkk 折交叉验证下的训练误差为 ϵ1A,...,ϵkA;ϵ1B,...,ϵkB\epsilon_1^A,...,\epsilon_k^A;\epsilon_1^B,...,\epsilon_k^Bϵ1A​,...,ϵkA​;ϵ1B​,...,ϵkB​
    如果两个模型性能相同,则有Δi=ϵiAϵiB=0\Delta_i = \epsilon_i^A - \epsilon_i^B = 0Δi​=ϵiA​−ϵiB​=0
    所以有假设检验统计量mean(ϵAϵB)var(ϵAϵB)/kt(k1)\frac{|mean(\epsilon^A - \epsilon^B)|}{var(\epsilon^A - \epsilon^B)/\sqrt k} \sim t(k-1)var(ϵA−ϵB)/k​∣mean(ϵA−ϵB)∣​∼t(k−1)
  • McnemarMcnemarMcnemar 检验
A,B T F
T e00e_{00}e00​ e01e_{01}e01​
F e10e_{10}e10​ e11e_{11}e11​

如果两个算法性能相同,则表现相同,则有 e01=e10e_{01} = e_{10}e01​=e10​
对应的统计量为
τχ2=(e01e101)2e01+e10χ2(1)\tau_{\chi^2} = \frac{(|e_{01} - e_{10}| - 1)^2}{e_{01}+e_{10}} \sim \chi^2(1)τχ2​=e01​+e10​(∣e01​−e10​∣−1)2​∼χ2(1)

  • Friedman & NemenyiFriedman\ \&\ NemenyiFriedman & Nemenyi 检验
    这是一个非参数检验法
    每一个元素为对应的性能排序值,如需哦性能一样,则平分序值
数据集 A B C
D1D_1D1​ rank
D2D_2D2​
D3D_3D3​
D4D_4D4​
平均序值

统计量为:

τχ2=k1k12Nk21i=1k(rik+12)2=12Nk(k+1)(i=1kri2k(k+1)24)\tau_{\chi^2} = \frac{k-1}{k} * \frac{12N}{k^2 - 1}\sum_{i=1}^k(r_i - \frac{k+1}{2})^2 = \frac{12N}{k(k+1)}(\sum_{i=1}^kr_i^2 - \frac{k(k+1)^2}{4})τχ2​=kk−1​∗k2−112N​i=1∑k​(ri​−2k+1​)2=k(k+1)12N​(i=1∑k​ri2​−4k(k+1)2​)

kkk 和 NNN 较大时,服从 χ2(k1)\chi^2(k-1)χ2(k−1) 分布


偏差-方差分解

E(f;D)=bias2(x)+var(x)+ϵ2E(f;D) = bias^2(x) + var(x) + \epsilon^2E(f;D)=bias2(x)+var(x)+ϵ2
=(fˉ(x)y)2+ED[(f(x;D)fˉ(x))2]+ED[(yDy)2] = (\bar f(x) - y)^2 + E_D[(f(x;D) - \bar f(x))^2]+ E_D[(y_D - y)^2]=(fˉ​(x)−y)2+ED​[(f(x;D)−fˉ​(x))2]+ED​[(yD​−y)2]

上一篇:2019 HL SC day1


下一篇:Css中的盒子结构padding和margin的区别