学习用于新颖性检测的单变量变换(内核?)

机器算法验证 机器学习 异常值 内核技巧
2022-03-31 06:25:02

我有 150 个观察结果,500 个特征,并且我对新奇检测(异常值检测)感兴趣:给定一个新观察结果(假设是“患者”)我想知道它是否与以前的观察结果不同(我们称其为“控制” )。如果我有很多数据,我可能会在单变量参数级别使用统计测试,但是由于多个测试问题,我最终会探索控制分布的尾部以达到显着性,并且我没有足够的数据对于如此小的 p 值的非参数测试。

我正在做一类 SVM,通过学习全局决策策略来缓解这个问题。这种方法的局限性是

  1. 它非常“黑盒子”

  2. 如果数据非常“各向异性”,即控制的边缘分布在不同方向上非常不同,则它的效果很差。

解决问题 2 的一个技巧是将规范集中在单变量参数(这通常称为创建“Z 分数”)。理想情况下,希望使用控制协方差对数据进行白化,但没有足够的数据来计算它。然后可以将 OC-SVM 中输入的值解释为单变量检验统计量(在对照组的正态零分布下)。

在我的例子中,我可以从直方图中看到控件的分布是重尾的。我想学习一个单变量变换,使其更接近标准法线。

顺便说一句,我对这种做法没有参考。我通过经验和实验室讨论学习了它们。任何指针都会受到欢迎,即使他们不直接回答我的问题。

2个回答

你的设置太难了。我没有解决方案,但有几点。

  • 基于能量的模型可以为您提供与“信念等级”相对应的标量,即输入是由数据分布生成的。归结为选择模型和良好的损失函数。查看Yann Lecun 的基于能量模型的教程此外,还有Ranzato 的基于能量的无监督框架论文,他们使用稀疏自动编码器。我猜,考虑到你的数据集很小,稀疏性通常是可取的。

  • 受限玻尔兹曼机可能会工作。您可以在具有少于 25 个隐藏特征的数据上训练您的 RBM(由于缺少数据,您可能无论如何都会这样做),使您能够写下任何新输入属于您的分布给出的数据的概率。实际上,RBM ​​也是基于能量的模型。

  • 我有一种感觉,带有内核的 SVM 对于您正在做的事情来说可能是一个过于复杂的模型。你在测试集上得到可接受的分数吗?

最近邻距离分布有帮助吗?对于 150 个观测值中的每一个,您都有距离 d1 d2... 到其最近的、第二近的 ... 邻居,以及平均距离分布,称为 DD。查询点为您提供分布d1..d150: 和 DD 比较。

点之间的度量是至关重要的,但我没有秘诀。尝试分数或近似汉明度量|ajbj|q (没有外1q)。对于小q,比如 0.1,这会在一些特征中增加接近匹配的权重,这是有道理的;否则,500 个术语的总和只是正态分布,根本没有对比/距离白化。(是的,接近汉明不是一个规范,但它是一个度量,满足三角不等式。)

看看 Omercevic 等人, 高维特征匹配:采用有意义的最近邻的概念2007 8p,他们这样做:

  1. 找到一个查询点的 ~ 100 个最近的邻居
  2. 合身λ指数背景噪声
  3. 权衡 100 个邻居:不明白这一点,看起来是临时的
  4. 选择〜10个异常值作为“信号”。

(但是它们匹配 128 维 SIFT 向量,其距离分布和噪声模型可能与您的非常不同。)