为什么做机器学习的很少使用假设检验？
因为做不出来。。。当然有对机器学习模型搞假设检验的，不存在某些答案里所谓的“机器学习重预测，所以不需要假设检验”的说法。但这个领域非常之难搞，目前似乎还不存在像是boosting之于表格数据，神经网络之于图像处理，FDR/FWER Control之于多重检验那样的杀手级模型。 实际上传统统计模型的一般假设检验问题都不好搞。比如说一个已知协方差的多元正态模型N(\theta,\Sigma), 然后你想检验\theta是不是在某个奇形怪状的集合C里，也就是H_0: \theta\in C vs H_1: \theta \notin C, 这都是一个很难搞的问题。至于检验一些更复杂的机器学习模型，那就更麻烦了。 所以针对机器学习的假设检验目前也确实是一个很有趣而且比较有热点的方向。一个比较热门而且也比较有趣的方向叫做黑盒模型检验（Blackbox Learner Testing），也就是如何在你完全不知道这个模型长什么样子（或者只知道大概）的情况下做检验。 首先明确一个问题，机器学习要检验什么呢？最直接的想法当然就是检验某些特征是否有效。具体来说，我们的input是X，假设S是X的一个子集。那么一个很直观的想法就是我们怎么检验特征S是否有被模型提取到。举个例子，比如说你想训练一个模型根据医学图像来诊断肺癌，那么你当然就很想知道模型是否真的有提取到肿瘤那块的特征，而非只是提取到了一些毫不相关的其他特征（比如因为肺癌发病率很低，所以模型直接把所有图片判成健康来最优化损失函数）。 而上面这个问题是可以被转化成数学/统计的语言的。一般来讲假设有一个模型\mathcal{F}，那么机器学习的目的是最小化理论误差： f^*=\inf_{f\in\mathcal{F}}R(f)=\inf_{f\in\mathcal{F}}E[ l(Y,f(X))] \\ 那么如果我们想要检验S\subset X是否有作为特征被提取到，从直觉上来讲，就是说我可以把这块挖掉（或者说设为0）也不会影响模型收敛到最优的那个学习器。这件事情翻译成数学的行话就是说我把X变成Z，其中Z的S部分被设为0。这个时候最优的学习器就成了： g^*=\inf_{g\in\mathcal{F}}R(g)=\inf_{f\in\mathcal{F}}E[l(Y,g(Z))] \\ 如果S是无关紧要的特征，这就意味着哪怕我们挖掉S也绝对不会对学习器的效果造成影响。相反，如果S是某些重要的特征，那么挖掉S一定会导致我们训练出一个误差更大的学习器。这件事情翻译成数学的行话就是： H_0: R(f^*)-R(g^*)=0 \\ 你看我们的零假设就出来了。当然相应地我们也可以得到备择假设： H_1: R(f^*)-R(g^*)<0 \\ 于是对机器学习搞假设检验的框架就出来了。那么接下来的一个问题就是我们要怎么样把这个假设检验算出来。这个算的方法一般是遵从Wald Test的框架。什么是Wald Test呢，Wald Test大概的意思是我们想要检验某个参数\theta=\theta_0，但是原有模型的概率算起来比较复杂。那怎么办呢，我们可以从样本X_1^n中构造一个统计量\hat{\theta}_n，使得(\hat{\theta}_n-\theta_0)收敛到正态分布（或者某些其他性质比较好的分布），这样的话在样本量比较大的情况下，我们就可以用正态分布的性质进行检验了（典型例子就是对二项分布参数的检验）。 这个想法同样可以被应用到黑盒学习器的检测中来。在实际任务中f^*,g^*一般是算不出来的（样本有限）。但是我们可以得到经验风险最小化(empirical risk minimization)的估计\hat{f}_n,\hat{g}_n。用Wald Test的思路来看，我们可以在统计量\frac{1}{n}\sum_{k=1}^n (l(Y_i,\hat{f}_n(X_i))-l(Y_i,\hat{g}_n(Z_i)))上做一些文章。这大概也是这个领域一些方法的基本思路。 比如说我们可以给模型额外加一些假设（正所谓只要假设加得好，没有定理证不了），然后就可以得到\frac{1}{n}\sum_{k=1}^n (l(Y_i,\hat{f}_n(X_i))-l(Y_i,\hat{g}_n(Z_i)))（的变换）在零假设成立的条件下依概率收敛到真实的R(f^*)-R(g^*)，并且还具有某些比较好的极限分布。 当然，极限分布存在和依概率收敛可能还不够，毕竟100个样本收敛是收敛，10^{1145141919810}个样本收敛也是收敛。所以最好我们还可以保证收敛速度。如果我们再加一些乱七八糟的假设，也许就可以保证收敛到极限分布的速度大概在n^{-c}(c是某个正数)这个量级。当然这个速度可能不是太好，比如它可能是n^{-cd}这个量级（相当于所需样本量随着数据维数d的上升而指数上升）。这个时候我们就可以再加一些假设，比如说什么数据分布在某个d^*< < d 维的黎曼流形附近之类的，然后也许我们就可以把收敛速度加强到n^{-cd^*}量级。于是你就可以宣布你得到了一个针对黑盒模型的，收敛速度很快，性质很好的假设检验方法。恭喜你，你已经可以对机器学习模型做假设检验了！ 然后先在你也明白这个问题难搞的原因了。上面我们在加了一堆鬼知道成不成立的假设之后终于得到了一个能用的检验方法。事实上这个领域有不少文章都是这个路数。那这个时候就很尴尬了，毕竟实际应用中鬼知道像什么黎曼流形这样的假设是不是成立的。这也是尽管市面上有一堆黑盒模型的假设检验，最终能用的检验却依然有限的原因。 所以总结来讲，机器学习确实可以做假设检验，而且对机器学习做假设检验的模型还不少。但这个问题实际上非常困难，以至于目前的检验模型都需要一些过强的假设，所以最后的结果是尽管有检验手段，但是却很少人真的会在机器学习中用这些检验。