假设检验(概率论)

  • 1. 提出问题

考虑T_all的泛化能力:

1.测试集上的性能与真正的泛化性能未必相同

2.测试集上的性能与测试集本身选择有很大关系

3.机器学习算法本身有一定的随机性,同一个测试集上多次运行,可能会有不同的结果


  • 2.二项分布

import pandas as pd
import matplotlib as pml
import  matplotlib.pyplot as plt
from scipy.special import comb


#全部数据ALL
#假设模型在ALL上的错误率为
e_all=0.3

#测试集T
#T样本量
m_T=10
#模型在T上面判断错误的数量
m_T_error=6
#模型在T上的错误率
e=round(m_T_error/m_T,4)

#二项分布计算
def calculate_p(m_T,m_T_error):
    p=(comb(m_T,m_T_error))*(e_all**m_T_error)*(1-e_all)**(m_T-m_T_error)
    p=round(p,4)
    return p
p=calculate_p(m_T,m_T_error)

#出现每个情况的概率
def calculate_ps(m_T):
    m_T_errors=list(range(m_T+1))#错误个数也可能是0,1,2,3,4...
    ps=[]
    for i in range(len(m_T_errors)):
        m_T_error=m_T_errors[i]
        p=calculate_p(m_T,m_T_error)
        ps.append(p)
    return m_T_errors,ps

m_T_errors,ps=calculate_ps(m_T)

#错误个数:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
#二项分布下的错误率[0.0282, 0.1211, 0.2335, 0.2668, 0.2001, 0.1029, 0.0368, 0.009, 0.0014, 0.0001, 0.0]
#画出分布图象
def plot_scatter(x,y):
    plt.scatter(x,y,s=20,c='b',alpha=0.5)
    plt.show()
    return

plot_scatter(m_T_errors,ps)

从图中可以看出,错三个的概率是最高的,e=e_all=0.3的情况概率是最高的


  • 3. 假设检验

假设e_all<=0.3,对于这个假设,实际只设了上限,拒绝这个假设的办法只能是出现大于某个数的错误,那么这个界限的最大值是多少?置信度为90%

#上述概率累加求和
def calculate_Ps(ps):
    Ps=[]
    p=0
    for i in range(len(ps)):
        p+=ps[i]
        Ps.append(p)
    return Ps
Ps=calculate_Ps(ps)

plot_scatter(m_T_errors,Ps)

求出上界,进行单侧假设检验

import numpy as np
Ps_array=np.array(Ps)
confidence_index=np.argwhere(Ps_array>0.9)
##np.argwhere( a ) 返回非0的数组元组的索引,其中a是要索引数组的条件。
confidence_index=confidence_index[0]

print(confidence_index)
#[5]

  • 4.多个测试集一种算法

t检验(1.离散型随机变量的函数分布,2.卡方分布,3.t分布,4.正态分布与处理为t分布)

  • 5.多个测试集两种算法

交叉验证t检验

  • 6.一个测试集两种算法

McNemar检验

  • 7.多个测试集多种算法

Friendman检验与Nemenyi后续检验

以上是数理统计的内容,见宇哥概率九讲~

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值